Inhalt der Combobox laufend erweitern?

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Peter2
Posts: 286
Joined: 21 Sep 2014, 14:38
Location: CH

Inhalt der Combobox laufend erweitern?

Post by Peter2 » 19 Apr 2021, 12:21

(Ich kämpfe noch mit der GUI Show / Close / Destroy .. Logik)

Diese Grundidee
  • Starte Programm
  • Lies INI
  • Befülle mit INI-Werten die Combobox
  • Nutze die Werte oder schreibe neue hin
  • schliesse die GUI mit Submit
  • Merke dir die (erweiterte) Liste aus der Combobox, schreib sie in INI
  • mache irgendwas
  • Starte die GUI wieder und zeige die erweiterte Liste in der Combobox an
Klappt alles bis auf den letzten Punkt. Die erweiterte Liste steht in der INI, steht in der Variable - aber nur in der Combobox steht sie nicht. Muss ich mit der GUI noch "Destroy" oder anderes?
Peter (AHK Beginner) / Win 10 x64, AHK Version v1.1.22.xx
just me
Posts: 7915
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Inhalt der Combobox laufend erweitern?

Post by just me » 20 Apr 2021, 02:39

Moin,

weil schon so viel klappt, wäre es gut, wenn Du Deinen Code einstellen würdest. Man kann dann leichter beurteilen, wo und warum es klemmt.
Peter2
Posts: 286
Joined: 21 Sep 2014, 14:38
Location: CH

Re: Inhalt der Combobox laufend erweitern?

Post by Peter2 » 21 Apr 2021, 07:13

Hier ist ein Ausschnitt, der das Problem zeigt. Ich dachte, dass INIREAD keine vorhandene Variable überschreibt, aber das dürfte es auch nicht sein ..
Danke im Voraus!

Code: Select all

#SingleInstance Force
#NoEnv
SetWorkingDir %A_ScriptDir%
SetBatchLines -1

stopflag := 0

    basispfad = %A_Temp%
    ; INI-File definieren. Wenn fehlt, leer erzeugen
    inifile = %basispfad%\combobox.ini
    If !FileExist(inifile)
        FileAppend , `n, %inifile%
    if ErrorLevel   ; i.e. it's not blank or zero.
    {
        MsgBox , 16,  combobox, Die INI-Datei %inifile% fehlt und konnte auch nicht erzeugt werden. Der Programmlauf wird abgebrochen.
        ExitApp
    }

Gosub, GUI_Call
return
;; ********** GUI ***************************
GUI_Call:
; Listen
    IniRead, list_projektnummern,   %inifile%, Listen, Projektnummern, ----

    Gui, Add, Text,     x20     yp+20  w80   h22   +0x200, Projektnummer
    Gui, Add, Combobox, x120    yp     w120        vinp_projektnummer  Choose1 , %list_projektnummern%
    Gui, Add, Button,   x20  yp+30   w180 h55    vstartenbutton gStarten, &Starten
    Gui, Add, Button,   xp+200  yp+30   w120 h22    gBeenden, &Beenden

    Gui, Show, w500 h550,  combobox
Return

;; ********** Starten - Prüfen ***************************
Starten:
    Gui, Submit
    ; Pflichtfelder prüfen
    if (inp_projektnummer = "" or inp_projektnummer = "----")
    {
        stopflag = 1
        MsgBox Projektnummer ist nicht korrekt ausgefüllt.
    }
    
    if (stopflag = 0)
    {
        list_projektnummern:= list_projektnummern "|" inp_projektnummer
        sort, list_projektnummern, u D|
        list_projektnummern := StrReplace(list_projektnummern, "----|" )

        ; Listen
        IniWrite, %list_projektnummern%,    %inifile%, Listen, Projektnummern
        ; Hauptprogramm starten
        Gosub, ablauf
    }
    Else
    {
        stopflag = 0
        Gui, Show
    }
return
;; ********** Ablauf ***************************
ablauf:
    MsgBox, Ersatztext für Hauptprogramm.
    Gui, Show
Return
;; ********** Ende ***************************
Beenden:
GuiEscape:
GuiClose:
    ExitApp
Peter (AHK Beginner) / Win 10 x64, AHK Version v1.1.22.xx
Ahk_fan
Posts: 154
Joined: 31 Aug 2018, 14:34
Contact:

Re: Inhalt der Combobox laufend erweitern?

Post by Ahk_fan » 21 Apr 2021, 07:56

du musst nach dem schreiben der Ini, diese nochmal am Ende von "Starten" nochmal selen und über GuiControl die ComboBox aktualisieren.
das Gui, Show in Starten kann wegfallen, wenn man mit Gui, submit, nohide reingeht:

so ungefähr:
EDIT:!!!

Code: Select all

Starten:
    Gui, Submit, nohide
    ; Pflichtfelder prüfen
    if (inp_projektnummer = "" or inp_projektnummer = "----")
    {
        stopflag = 1
        MsgBox Projektnummer ist nicht korrekt ausgefüllt.
    }
    
    if (stopflag = 0)
    {
        list_projektnummern:= list_projektnummern "|" inp_projektnummer
        sort, list_projektnummern, u D|
        list_projektnummern := StrReplace(list_projektnummern, "----|" )

        ; Listen
        IniWrite, %list_projektnummern%,    %inifile%, Listen, Projektnummern
		;IniRead, list_projektnummern,   %inifile%, Listen, Projektnummern, ----        ; das kann auch weg
	    GuiControl, ,inp_projektnummer, %list_projektnummern%
        ; Hauptprogramm starten
        Gosub, ablauf
    }
    Else
    {
        stopflag = 0
        ;Gui, Show
    }
return
regards,
AHK_fan :)
https://hr-anwendungen.de
Peter2
Posts: 286
Joined: 21 Sep 2014, 14:38
Location: CH

Re: Inhalt der Combobox laufend erweitern?

Post by Peter2 » 21 Apr 2021, 09:04

Zwischenbericht:
Ich habe es gemäss deinen Empfehlungen umgebaut; nur steht bei mir das GuiControl oberhalb des INIWrite.

Ergebnis:
Die Variable ist korrekt (a1|a2), aber in der Liste wird anscheinend alte und jeweils neue Listen zusammengezählt. Muss der alte Comboboxinhalt explizit gelöscht werden?

Edit:
Ja. Die Werte werden ergänzt. Für neue Listen oder Eintrag leeren muss man mit Pipe | starten - siehe Hilfe.
Attachments
Zwischenablage-1.png
Zwischenablage-1.png (6.02 KiB) Viewed 102 times
Peter (AHK Beginner) / Win 10 x64, AHK Version v1.1.22.xx
Post Reply

Return to “Ich brauche Hilfe”