TreeView einem bestimmten Gui zuordnen Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Wick3d
Posts: 31
Joined: 04 Apr 2014, 03:24

TreeView einem bestimmten Gui zuordnen

20 Oct 2018, 06:30

Hallo Leute,

seid kurzer Zeit habe ich wieder ein "intensiveres" Projekt, womit neue Probleme kommen :D

Was ich realisieren möchte:
Ich möchte derzeit ein Gui erstellen das als "Help Guide" dient. Dort gibt es ein TreeView der die Themen anzeigt und rechts davon wird später eine .txt Datei angezeigt.
Da dies ein "Nebengui" ist möchte ich das eindeutig benennen. (z.B. Gui Help: ....)

Hier das funktionierende Script (so wie es aussehen soll :D )

Code: Select all

Gui, Add, TreeView, x10 y10 h400 w200 -lines
P1 := TV_Add("Willkommen",, "bold Expand")
P1C1 := TV_Add("Schnellstart", P1)  ; Geben Sie P1 an, um dieses Element unterzuordnen.
P2 := TV_Add("Wie Funktionierts?",, "bold Expand")
P2C1 := TV_Add("Einstellungen", P2)
P2C2 := TV_Add("Kontakt", P2)

Gui, Font, S20 bold underline , Verdana
Gui, Add, Text, x230 y10 w700 h40 ,
Gui, Font, S10 Normal, Verdana
Gui, Add, Edit, vShow1 h350 w800 x220 y54 ReadOnly,

Gui, Show, AutoSize

return
Guiclose:
exitapp

Das Problem:
Sobald ich den Gui eindeutig benenne, ist die Liste leer. Ich weis, ich musst sicher die befehle "TV_Add" den Gui zuweisen. Aber wo? Wie?

So wie ich es mir vorstell (aber nicht funktioniert :? )

Code: Select all

Gui Help: Add, TreeView, x10 y10 h400 w200 -lines
P1 := TV_Add("Willkommen",, "bold Expand")
P1C1 := TV_Add("Schnellstart", P1)  ; Geben Sie P1 an, um dieses Element unterzuordnen.
P2 := TV_Add("Wie Funktionierts?",, "bold Expand")
P2C1 := TV_Add("Einstellungen", P2)
P2C2 := TV_Add("Kontakt", P2)

Gui Help: Font, S20 bold underline , Verdana
Gui Help: Add, Text, x230 y10 w700 h40 , 
Gui Help: Font, S10 Normal, Verdana
Gui Help: Add, Edit, vShow1 h350 w800 x220 y54 ReadOnly,
Gui Help: Show, AutoSize

return
Guiclose:
exitapp

Ich danke euch für die Hilfe bei dem kleinen Problem.

Gruß
Alex
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: TreeView einem bestimmten Gui zuordnen

20 Oct 2018, 06:32

Du musst das Help Gui auch als Default setzen wenn du auf die TreeView Befehle zugreifst.
Selbiges gilt für die ListView.
Recommends AHK Studio
Wick3d
Posts: 31
Joined: 04 Apr 2014, 03:24

Re: TreeView einem bestimmten Gui zuordnen

20 Oct 2018, 06:59

Danke für die schnelle Antwort, nur wie stelle ich das an ?

EDIT:
Noch eine weitere Frage: Und zwar wie kann ich mir den Namen des selektierten Themas ausgeben lassen (oder die ElementID?).
Denn mit der ID-Nummer von TV_GetSelection kann man nicht sehr viel anfangen, da Sie sich bei jedem öffnen ändert.
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: TreeView einem bestimmten Gui zuordnen

20 Oct 2018, 08:42

Gui, Help:Default
Über TV_Get kannst du dir alle Möglichen Informationen über ein TreeView anzeigen lassen.
Recommends AHK Studio
Wick3d
Posts: 31
Joined: 04 Apr 2014, 03:24

Re: TreeView einem bestimmten Gui zuordnen

20 Oct 2018, 16:02

Danke dir, das mit dem GUI klappt jetzt.

Nur das mit TV_Get bringt nicht das gewünschte Ergebnis. Ich möchte vom aktuell markierten Thema, den Namen wiedergeben lassen.
Mit TV_Get muss ich aber schon die Element ID wissen ....
Ich hätte ne Idee dies über Umwege zu machen

- Bei jedem start vom GUI die Nummern der Themen auslesen und für die jeweilige ID speichern
- vergleichen ob dies mit der aktuellen Auswahl übereinstimmt

mal sehen, ich probier etwas rum.
Wick3d
Posts: 31
Joined: 04 Apr 2014, 03:24

Re: TreeView einem bestimmten Gui zuordnen

20 Oct 2018, 17:26

Nabend,

ich habe hier eine Lösung für mein Problem, bin soweit zufrieden, da ich es in einem Loop untergebracht habe :)

Für die Vollständigkeit und falls jemand auch danach sucht. Hier meine Lösung:

Code: Select all

Gui Help:Default
Gui Help: Add, TreeView, x10 y10 h400 w200 -lines
P1 := TV_Add("Willkommen",, "bold Expand")
  P2 := TV_Add("Schnellstart", P1)  ; Geben Sie P1 an, um dieses Element unterzuordnen.
P3 := TV_Add("Wie Funktionierts?",, "bold Expand")
  P4 := TV_Add("Einstellungen", P3)
  P5 := TV_Add("Kontakt", P3)

Gui Help: Font, S20 bold underline , Verdana
Gui Help: Add, Text, x230 y10 w700 h40 , 
Gui Help: Font, S10 Normal, Verdana
Gui Help: Add, Edit, vShow1 h350 w800 x220 y54 ReadOnly,

Gui Help: Show, AutoSize

;Speichert die Anzahl der Positionen
TVcount := TV_GetCount()
count := 1

;Nummern der Positionen werden bei jedem neuen GUI-Aufbau gescant
Loop, %TVcount%{
	NP%count% := TV_GetSelection()
	Send, {Down}
	count++
}

return
Guiclose:
exitapp

a::
GUI Help: Default

;Über einen Vergleich werden die Nummern mit der aktuellen ausgewählten Nummer verglichen.
;Anschließend wird der Name des richtigen Elements wiedergegeben
x := 0
count = 1
activeselection := TV_GetSelection()
Loop, %TVcount%{
	If (NP%count% == activeselection){
		TV_GetText(x, P%count%)
		MsgBox, %x%
		Return
	}
	count++
}

Return
Forklift01
Posts: 7
Joined: 19 Jun 2019, 10:14

Re: TreeView einem bestimmten Gui zuordnen

10 Feb 2022, 14:06

Hallo,

der Thread ist zwar ziemlich alt, aber der gezeigte Code von wik3d ist eine sehr gute Grundlage für mein Vorhaben eines Hilfe-Fensters.

Mein Problem ist das ich nicht durchsteige wie ich auf der rechten Seite den Hilfetext anzeigen lassen kann, ich möchte links die Kategorien und rechts soll dann der entsprechende Hilfetext angezeigt werden wenn auf eine Kategorie geklickt wird.

Ich hab mich schon in der AHK-Hilfe mit dem Abschnitt TreeView beschäftigt, bin aber nicht weiter gekommen, wäre cool wenn mir hier jemand auf die Sprünge helfen könnte.

Vielen Dank schon mal im Vorraus...
garry
Posts: 3720
Joined: 22 Dec 2013, 12:50

Re: TreeView einem bestimmten Gui zuordnen  Topic is solved

11 Feb 2022, 15:52

habe mal dies versucht , Versuche mit expand

Code: Select all

;-- Treeview_TEST 20220211
Gui ,2:Default
Gui,2: -dpiscale
Gui,2: Color, Black,Teal                       
Gui,2: Font,s12 ,Lucida Console
Gui ,2: Add, TreeView, cWhite x10 y10 h700 w400 -lines vA1x gA1
P1 := TV_Add("Willkommen",, "bold Expand")
  P2 := TV_Add("Schnellstart", P1)  ; Geben Sie P1 an, um dieses Element unterzuordnen.
;-----
P3 := TV_Add("Wie_Funktionierts?",0, "bold Expand")
  P3x := TV_Add("Einstellungen", P3,0)
  P3a := TV_Add("Beginn", P3x)
  P3b := TV_Add("Weiter", P3x)
  P3c := TV_Add("ENDE", P3x)
;----
P4 := TV_Add("Hilfe_ENDE",0, "bold Expand")
  P4x := TV_Add("Beenden?", P4,"Expand")
  P4a := TV_Add("YES", P4x)
;----
Gui ,2: Add, Edit, x430 y10 h700 w1200 cYellow vED1 ReadOnly,
TVcount := TV_GetCount()
Gui ,2: Show, AutoSize,Treeview_TEST  TV_COUNT=%tvcount%
return
;--------------------------
2Guiclose:
exitapp
;--------------------------
A1:
TV_GetText(info, A_EventInfo)
info=%info%
gosub,%info%		
return
;-----
Willkommen:
Wie_Funktionierts?:
Einstellungen:
Hilfe_ENDE:
Beenden?:
return
;-----
YES:
exitapp
;------
Schnellstart:
e1=
(
Schnellstart =
Line1aaaa
Line2bbbb
)
GuiControl,2:,ED1,%e1%
return
;-----
Beginn:
e2=
(
BEGINN =
Line1ccccc
)
GuiControl,2:,ED1,%e2%
return
;-----
Weiter:
e3=
(
WEITER =
Line1eeeee
)
GuiControl,2:,ED1,%e3%
return
;------
Ende:
e3=
(
ENDE =
====================
)
GuiControl,2:,ED1,%e3%
return
;==========================================
Forklift01
Posts: 7
Joined: 19 Jun 2019, 10:14

Re: TreeView einem bestimmten Gui zuordnen

12 Feb 2022, 11:55

Wow @garry super, vielen Dank,
ich werd das mal testen und mich mal durch den Code arbeiten um zu verstehen wie das alles funktioniert.

Nochmals vielen Dank für deine Mühe

Edit: @garry dein Beispiel hat mich auf die richtige Fährte gebracht, ich hab mir den Code so angepasst das es mir beim Klick auf ein Element eine bestimmte Datei einliest und im Edit-Feld anzeigt, so wie ich es mir vorgestellt habe.

Vielen Dank für den Schubs in die richtige Richtung.

Viele Grüße...
garry
Posts: 3720
Joined: 22 Dec 2013, 12:50

Re: TreeView einem bestimmten Gui zuordnen

12 Feb 2022, 17:24

ein Beispiel mit TREEVIEW zeigt Ordner/Dateien an und denn Text-Datei in EDIT ( Beispiel a_desktop und ahk-Datei )

Code: Select all

;- example TREEVIEW show ahk-files in EDIT 
;- modified = 20220212
;-
#warn
#NoEnv
#SingleInstance Force
SetBatchLines -1
setworkingdir,%a_scriptdir%
FileEncoding, UTF-8
MainWindowTitle=LV_TEST
editorx1       =%a_programfiles%\Notepad++\notepad++.exe
setformat,float,0.0
;-----------------------------
TreeRoot:=a_desktop          ;- reads this folder and subfolders
;-----------------------------
Gui,2:default
Gui,2: -DPIScale
Gui,2: Color,Black, Black
;---------
wa:=A_screenwidth,ha:=A_screenHeight,xx:=100
Gui,2:Font,s12 cBlack,Lucida Console
color1=D4D0C8          ;- gray normal msgbox
;----------------
;----------------
TVW:=(wa*25)/xx,TVH:=(ha*90)/xx,LVW:=(wa*73)/xx,LVH:=(ha*90)/xx,GUW:=(wa*99)/xx,GUH:=(ha*96)/xx
;---------
x:=(wa*.2)/xx,y:=(ha*.3)/xx
Gui,2: Add, TreeView, background%color1% vTV1 x%x% y%y% w%tvw% h%tvh% altsubmit gTreeEvent 
AddSubFolderToTree(TreeRoot)
;---------
Gui,2: Font,s12 CYellow,Lucida Console
x:=(wa*26)/xx
Gui,2: Add,Edit, x%x% y%y% h%lvh% w%lvw% vED1 readonly,
;---------
x:=(wa*26)/xx,y:=(ha*92)/xx,w:=(wa*78)
Gui,2: add,text,cYellow x%x% y%y% w%w% vPathx
Gui,2: Show, x1 y1 h%guh% w%guw%,%MainWindowTitle%
Return
;--------------------------------------------------------------------------------
2GuiClose:
ExitApp
;================================================================================
;--------------------- TV1 ---------------------------------
AddSubFolderToTree(Folder, ParentItemID = 0)
{
  Loop %Folder%\*.*, 2
    {
    ID := TV_Add(A_LoopFileName, ParentItemID)
    AddSubFolderToTree(A_LoopFileFullPath, ID)
    }
  Loop %Folder%\*.ahk                                   ;- ahk-files 
    ID := TV_Add(A_LoopFileName, ParentItemID)
}
;------------------- TV-1 EVENT -----------------------------
TreeEvent:
Gui, 2:TreeView, TV1
if A_GuiEvent <> S
    return
parenttext:=""
selecteditemtext:=""
selectedfullpath:=""
f1:=""
TV_GetText(SelectedItemText, A_EventInfo)
ParentID := A_EventInfo
Loop
    {
    ParentID := TV_GetParent(ParentID)
    if not ParentID
        break
    TV_GetText(ParentText, ParentID)
    SelectedItemText = %ParentText%\%SelectedItemText%
    }
SelectedFullPath = %TreeRoot%\%SelectedItemText%
GuiControl,2:,Pathx,%SelectedFullPath%
F1=%SelectedFullPath%
fileread,aac,*P65001 %f1%
Guicontrol,2:,ED1,%aac%
aac=
return
;====================================================================

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: gero and 21 guests