AHK v1.30.1 > Im neu erstellten Tab3 lässt sich kein Control erstellen? Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

wirthts
Posts: 6
Joined: 24 Apr 2019, 05:00
Contact:

AHK v1.30.1 > Im neu erstellten Tab3 lässt sich kein Control erstellen?

24 Apr 2019, 07:26

Hallo zusammen!
Kurz zu mir, ich habe schon ein paar Jahre mit AHK intus, kenne mich hier und da schon aus. Aber es gibt auch in meinem Leben Punkte bei AHK, bei denen ich nicht weiter weiß, wo mein Fehler im System liegt.

Folgendes Problem... Ich habe in meiner GUI ein Tab3 bereits erschaffen, darin liegt ein TreeView mit (momentan Beispieldaten). Soweit so gut.
Im zweiten Schritt soll durch einen Button an das bestehende Tab3 ein weiterer Tab angehängt werden. Bis hierhin auch kein Problem...

Jedoch, sobald ich das angepasste TreeView-Beispiel dort auch anzeigen lassen will, erscheint nichts. Ich habe auch schon einen Button versucht dort zu "erschaffen" aber auch das funkt nicht.

Entweder ich sehe vor lauter Code den Fehler nicht, oder mache ich etwas grundlegend falsches?

Hier ein Codeschnipsel vom anlegen des Tab3

Code: Select all

  Gui, 1: Add, Tab3, x40 y40 w1160 h400 vTab3Basis hwndTab3BasisHWND, Ablage||
  {
    Gui, 1: Tab, Ablage, , Exact
    {
      Gui, 1: Add, TreeView, ImageList%ImageListID% w1138 h355 vAblage
      {
        P1       := TV_Add("Stammverzeichnis")
        P1C1     := TV_Add("1. Unterelement von Oberelement",     P1)
        P1C1C1   := TV_Add("1. Unterelement von Unterelement 1",  P1C1)
        P1C2     := TV_Add("2. Unterelement von Oberelement",     P1)
        P1C2C1   := TV_Add("1. Unterelement von Unterelement 2",  P1C2)
        P1C2C2   := TV_Add("2. Unterelement von Unterelement 2 ", P1C2)
        P1C2C1C1 := TV_Add("1. Unterelement von Unterelement 3",  P1C2C2)
      }
    }
  }
 
Hier der gLabel-Codeschnipsel des Buttons

Code: Select all

  Gui, 1: Submit, NoHide                                                          ; Submit data from Gui
  FileSelectFile, FileToOpen, 3, , Waehle Dialog-Datei, NWN1-Dialog (*.dlg)       ; File selctions dialogue
  SplitPath, FileToOpen, , , , File                                               ; Strip out filename
  
  If !FileToOpen                                                                  ; No file was selected
    Return                                                                        ; Stop
  
  If InStr(Tab3Basis, File)                                                       ; File already exists
    Return                                                                        ; Stop
  
  GuiControl,, %Tab3BasisHWND%, %File%||                                          ; Add the new tab with filename
  
  SendMessage, 0x1304,,,, ahk_id %Tab3BasisHWND%                                  ; 0x1304 is TCM_GETITEMCOUNT.
  AktTab := ErrorLevel                                                            ; How many tabs exist?
    
  Gui, 1: Tab, %AktTab%                                                           ; From here it stops working...?
  {
    Gui, 1: Add, Button, , Test                                                   ; Even adding a simple button doesn't work?
    
    Gui, 1: Add, TreeView, ImageList%ImageListID% w1138 h355 v%File%
    {
      P2       := TV_Add("Stammverzeichnis")
      P2C1     := TV_Add("1. Unterelement von Oberelement",      P2) 
      P2C1C1   := TV_Add("1. Unterelement von Unterelement 1",   P2C1)
      P2C2     := TV_Add("2. Unterelement von Oberelement",      P2)
      P2C2C1   := TV_Add("1. Unterelement von Unterelement 2",   P2C2)
      P2C2C2   := TV_Add("2. Unterelement von Unterelement 2 ",  P2C2)
      P2C2C1C1 := TV_Add("1. Unterelement von Unterelement 3",   P2C2C2)
    }
  }
Der Befehl Gui, 1: Tab, %AktTab% lässt nichts zu... Das neue Tab-Element bleibt leer. Wenn ich dann zb auf den Namen versuche anzulegen (wie im ersten Beispiel), also über Gui, Tab, %File%,, Exact meldet mir AHK, dass das Tab noch nicht existiert. Obwohl ich es bereits sehe und auch mal über Sleep versucht habe den Einfügeprozess zu verzögern, geht auch hier nichts.

Könnte sich jemand mal den Schnipsel anschauen und mir evtl. den Fehler verdeutlichen? Danke Euch im Voraus!

Tobias
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: AHK v1.30.1 > Im neu erstellten Tab3 lässt sich kein Control erstellen?

25 Apr 2019, 02:49

Moin,

ich habe nicht groß danach gesucht, wo in Deinem Code ein Fehler stecken könnte. Das folgende Skript läuft aber bei mir (AHK Unicode 64 auf Win 10 64) mit AHK 1.1.30.01 und 1.1.30.03 fehlerfrei. Vielleicht siehst Du ja beim vergleichen, wo der Schuh drückt:

Code: Select all

#NoEnv
Gui, 1: Add, Tab3, x40 y40 w1160 h400 vTab3Basis hwndTab3BasisHWND, Ablage||
Gui, 1: Tab, Ablage, , Exact
Gui, 1: Add, TreeView, ImageList%ImageListID% w1138 h355 vAblage
P1       := TV_Add("Stammverzeichnis")
P1C1     := TV_Add("1. Unterelement von Oberelement",     P1)
P1C1C1   := TV_Add("1. Unterelement von Unterelement 1",  P1C1)
P1C2     := TV_Add("2. Unterelement von Oberelement",     P1)
P1C2C1   := TV_Add("1. Unterelement von Unterelement 2",  P1C2)
P1C2C2   := TV_Add("2. Unterelement von Unterelement 2 ", P1C2)
P1C2C1C1 := TV_Add("1. Unterelement von Unterelement 3",  P1C2C2)
Gui, 1: Tab
Gui, 1: Add, Button, xm gAddTab, Add Tab
Gui, 1: Show, , TabTest - %A_AhkVersion%
MsgBox, 0, ItemCount, % GetTabItemCount(Tab3BasisHWND)
Return

GuiClose:
GuiEscape:
ExitApp

AddTab:
NewItemIndex := GetTabItemCount(Tab3BasisHWND) + 1
NewItemCaption := "Item" . NewItemIndex
GuiControl, 1:, %Tab3BasisHWND%, %NewItemCaption%||
MsgBox, 0, ItemCount, % GetTabItemCount(Tab3BasisHWND)
Gui, 1: Tab, %NewItemCaption%
Gui, 1: Add, TreeView, ImageList%ImageListID% w1138 h355 v%NewItemCaption%
P1       := TV_Add("Stammverzeichnis")
P1C1     := TV_Add("1. Unterelement von Oberelement",     P1)
P1C1C1   := TV_Add("1. Unterelement von Unterelement 1",  P1C1)
P1C2     := TV_Add("2. Unterelement von Oberelement",     P1)
P1C2C1   := TV_Add("1. Unterelement von Unterelement 2",  P1C2)
P1C2C2   := TV_Add("2. Unterelement von Unterelement 2 ", P1C2)
P1C2C1C1 := TV_Add("1. Unterelement von Unterelement 3",  P1C2C2)
Gui, 1: Tab
Return

GetTabItemCount(TabHwnd) {
   Return DllCall("SendMessage", "Ptr", TabHwnd, "UInt", 0x1304, "Ptr", 0, "Ptr", 0, "Int")
}
wirthts
Posts: 6
Joined: 24 Apr 2019, 05:00
Contact:

Re: AHK v1.30.1 > Im neu erstellten Tab3 lässt sich kein Control erstellen?

25 Apr 2019, 05:24

Hui Danke erst mal für Dein Skript. Lass ich das nun bei mir als extra Skript laufen, funktioniert das auch (ah PS: AHK 1.1.30.1 Unicode 64 Bit Win 10 64 Bit)... Ich habe zumindest in dem Bereich keinen Unterschied festgestellt...
Dann habe ich Deinen Abschnitt versucht einzubauen, ohne Copy/Paste, aber gleicher Effekt, AHK meldet mir weiterhin, das Tab wäre noch nicht existent.

Ich kopiere jetzt mal das ganze Skript rein, denn ich denke, ich hab da irgendeinen Mist produziert und finde sozusagen "den Wald vor lauter Bäumen" nicht mehr.
Übringes, ich verschachtel gerne meinen Code in { } da ich in Notepad++ damit schnell ein und ausblenden kann, was ich gerade sehen will und was nicht. Evtl. liegt ja hier mein Fehler? Aber bisher gabs dazu keine Probleme...
Spoiler
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: AHK v1.30.1 > Im neu erstellten Tab3 lässt sich kein Control erstellen?  Topic is solved

25 Apr 2019, 06:29

Moin,

wie ich sehe, hast Du mehr als ein Tab-Control in Deinem GUI. Deshalb brauchst Du eine andere Syntax, um einen bestimmten Tab in einem bestimmten Tab-Control anzuwählen. Du musst im dritten Parameter die laufende Nummer (eine Alternative habe ich auf die schnelle nicht gefunden) des Tab-Controls mitgeben:

Code: Select all

#NoEnv
Gui, Add, Tab3, vTC1, Tab1 Item 1||
Gui, Add, Edit, w200
Gui, Tab
Gui, Add, Tab3, vTC2, Tab2 Item 1||
Gui, Add, Edit, w200
Gui, Tab

GuiControl, , TC1, Tab1 Item 2||
GuiControl, , TC2, Tab2 Item 2||
Gui, Show, , Tab Test

Sleep, 1000
Gui, Tab, Tab1 Item 2, 1
Gui, Add, Edit, w200

Sleep, 1000
Gui, Tab, Tab2 Item 2, 2
Gui, Add, Edit, w200
Gui, Tab
Return

GuiClose:
ExitApp
Edit: Überflüssige Blockklammern {...} sollte man meiden. Es gibt immer mal wieder Probleme, die man sich wegen ihres seltenen Auftretens nicht erklären kann.
Last edited by just me on 26 Apr 2019, 02:10, edited 2 times in total.
wirthts
Posts: 6
Joined: 24 Apr 2019, 05:00
Contact:

Re: AHK v1.30.1 > Im neu erstellten Tab3 lässt sich kein Control erstellen?

25 Apr 2019, 13:47

Danke! Durch Dich hab ich den dreh endlich raus. Ich hab das zwar auch in der Hilfe gelesen, dass das zuweisen auch mit Zahlen möglich ist, wollte aber vorerst bei den Variablen bleiben. Merk mir die Variante besser und arbeite damit. Ich hab nun das Skript vollends auf Deine Variante umgestellt und es funkt :) Auch mit mehr als einem!

Damit hab ich eine Lösung mit der ich weiter arbeiten kann!

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 25 guests