Dropdownlist Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

festigrat1

Dropdownlist

02 Mar 2017, 07:14

Hallo,

bei folgendem Problem würde ich gerne Eure Hilfe in Anspruch nehmen:

Ich habe eine Gui, in der ich eine Dropdownlist habe. In dem Beispiel unten kann man drei Farben auswählen. Diese werden dann später ausgegeben.

Zwei Anliegen habe ich:

1. Die Dropdownlist soll zusätzlich eine Eingabe erlauben. Bisher kann ich nur die Farben auswählen, die in dem Skript drin sind. Ich möchte aber die Möglichkeit haben, auch eine Farbe reinzuschreiben, die ich nicht auswählen kann.

2. Genial wäre es, wenn ich die Farben aus einer Text-Datei auslesen könnte und dass, wenn ich eine neue Farbe eingebe, die noch nicht in der Textdatei vorhanden ist, diese hinzugefügt wird.

Hier das Skript, wie ich bisher gemacht habe:


Gui, Add, Text,, Farbe:

Gui, Add, DropDownList, vFarbe Choose3, blau|grün|rot|


send, %Farbe%

ExitApp
--------------------------

Vielen Dank schon mal im voraus für Eure Ideen.

Liebe Grüße,

Alexander
just me
Posts: 9456
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Dropdownlist  Topic is solved

02 Mar 2017, 09:43

Moin,

eine 'DropDownList', die auch Eingaben erlaubt, heißt ComboBox.

Für das Einlesen einer Datei gibt es die Anweisung FileRead oder die Schleife Loop, Read. Für das Anhängen an eine bestehende Datei bzw. das Ertellen einer neuen Datei die Anweisung FileAppend. Man kann das auch mit dem deutlich leitungsfähigeren File-Objekt lösen (siehe auch FileOpen).
festigrat
Posts: 54
Joined: 02 Mar 2017, 06:58

Re: Dropdownlist

09 Mar 2017, 10:48

Hallo,

vielen Dank für die Antwort,

Ich bin erst jetzt dazu gekommen, mich damit zu beschäftigen. Die ComboBox ist inzwischen eingebaut und funktioniert prima, wenn ich die auszuwählenden Daten direkt in dem Skript eingebe:

Code: Select all

Gui, Add, ComboBox, simple x175 y150 choose1 Sort vOption, |rot|grün|gelb|blau|
Mein Anliegen ist es nun, dass die Daten in der ComboBox aus einer ini-Datei ausgelesen werden, was mir nur fehlerhaft gelingt. Die Farben werden zwar angezeigt, aber die ComboBox funktioniert nicht mehr richtig. Die Daten werden nicht mehr alphabetisch sortiert und wenn ich "r" eingebe, wird nicht rot in die erste Zeile gesetzt. Hier ist der Code:

Code: Select all

Iniread OutputVarSectionNames, Farben.ini
Gui, Add, ComboBox, simple x175 y150 choose1 Sort vOption, ||
Meine Farben.ini sieht folgendermaßen aus
  • [rot|]
    rot|=rot|
    [grün|]
    grün|=grün|
    [gelb|]
    gelb|=gelb|
    [blau|]
    blau|=blau|
Da ich die SectionNames auslese erhalte ich im Prinzip ja folgende Liste:

Code: Select all

rot|grün|gelb|blau|
Für Lösungsvorschläge wäre ich sehr dankbar!

Viele Grüße.
festigrat
Posts: 54
Joined: 02 Mar 2017, 06:58

Re: Dropdownlist

09 Mar 2017, 11:01

Mir ist ein Fehler unterlaufen, so sieht der Code aus, der nicht ganz funktioniert:

Code: Select all

Iniread OutputVarSectionNames, Farben.ini
Gui, Add, ComboBox, simple x175 y150 choose1 Sort vOption, |%OutputVarSectionNames%|
festigrat
Posts: 54
Joined: 02 Mar 2017, 06:58

Re: Dropdownlist

09 Mar 2017, 11:25

Aha,

ich bin etwas weitergekommen.

Code: Select all

Iniread OutputVarSectionNames
OutputVarSectionNames sorgt dafür, dass ein Leerzeichen zwischen den Farben ist:
  • rot| grün| gelb| blau|
Deswegen kommt die ComboBox durcheinander. Hat jemand eine Idee, wie ich die Leerzeichen wegbekomme? Ich kann leider nicht alle Leerzeichen löschen, da ich auch Farben wie z.B. rot grün habe, die ein Leerzeichen behalten sollen.
just me
Posts: 9456
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Dropdownlist

09 Mar 2017, 11:42

Moin,

ich glaube nicht, dass Deine Sectionliste Leerzeichen enthält. Die Namen der einzelnen Sections sind allerdings durch einen Zeilenvorschub `n voneinander getrennt (siehe IniRead).

Ich schlage deshalb vor, die senkrechten Striche | einfach zu entfernen:

Code: Select all

[rot]
...
[grün]
...
[gelb]
...
[blau]
...
Du kannst dann nach dem Einlesen die Zeilenvorschübe durch senkrechte Striche ersetzen:

Code: Select all

StringReplace, OutputVarSectionNames, OutputVarSectionNames, `n, |, All
; oder
OutputVarSectionNames := StrReplace(OutputVarSectionNames, "`n", "|")
festigrat
Posts: 54
Joined: 02 Mar 2017, 06:58

Re: Dropdownlist

09 Mar 2017, 12:01

Hey, vielen Dank. Genau das war das Problem!

Jetzt läuft es wie geschmiert.

Vielen Dank für Deine Hilfe!

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 61 guests