Hi Leute, ich habe eine Frage:
Wie kann ich (ich benutze Koda) bei einer ComboBox die "Auswahl" erstellen ?
ComboBox - GUI
-
- [ offen ]
-
Rakehunt -
22. Mai 2009 um 13:39 -
Geschlossen -
Erledigt
-
-
[autoit]
GuiCtrlSetData($combo, "Auswahl1|Auswahl2|Auswahl3")
[/autoit]Script aus der Hilfe:
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]Example()
[/autoit] [autoit][/autoit] [autoit]Func Example()
[/autoit] [autoit][/autoit] [autoit]
Local $msg
GUICreate("My GUI combo") ; will create a dialog box that when displayed is centeredGUICtrlCreateCombo("item1", 10, 10) ; create first item
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData(-1, "item2|item3", "item3") ; add other item snd set a new defaultGUISetState()
[/autoit] [autoit][/autoit] [autoit]; Run the GUI until the dialog is closed
[/autoit]
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
EndFunc ;==>Example -
Also manche Leute schauen (denk ich) garnicht in die "Hilfe".
-
also habe jetzt ein bissel was rumgeguckt und interessiere mich auch wie man was mit der Combo macht... ( bin neu )
wie lese ich aus was ich angewählt habe? also in nem anderen script habe ich (bei Checkboxes) es so gemacht:
[autoit][...]
[/autoit]
$ok = GUICtrlcreatebutton("OK",11,70,50,30)
GUISETState()
While 1
$msg = GUIGETMSG()
IF $msg = -3 Then ; abfrage für den X button
Exit
EndIf
;IF für OK button
If $msg = $ok Then
If GUICtrlRead($1) = $GUI_CHECKED THen
[...]
EndIf
EndIf
[...]aber man kann´s ja nciht so machen da man vor das "GUICtrlCreateCombo" kein $1 machen kann... zumindestens macht er bei mir dann nur fehler...
würde mich über informationen freuen wie ich es richtig mache...
also ich möcht nur eine Combobox sozusagen test1,test2,test3, und wenn ich test 3 auswähle und OK klicke das er dann das bestimmte für test3 ausführt.. nur wie?MFG: Blacky911
-
Hallo blackdeath911,
sowas findest du eigentlich in der Hife, aber ich habe dir mal hier ein Beispiel geschrieben.
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
[...]
$combo = GUICtrlCreateCombo("Test 1|Test 2|Test3", 10, 10, 100, 25)
$button = GUICtrlCreateButton("OK", 10, 50, 100, 25)GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()Switch $msg
[/autoit]
Case $GUI_EVENT_CLOSE
Exit
Case $button
If GUICtrlRead($combo) = "Test 1" Then
MsgBox(64, "Combo Beispiel", "Du hast "Test 1" ausgewählt.")
ElseIf GUICtrlRead($combo) = "Test 2" Then
MsgBox(64, "Combo Beispiel", "Du hast "Test 2" ausgewählt.")
[...] -
so wie du es geschrieben hast steht direkt in der Combo Box
Test 1|Test 2|Test 3
aber ich kann nciht zwischen den jeweiligen wechseln
habe es jetzt so gemacht und es funktioniert:
[autoit]#include <GUIConstantsEx.au3>
[/autoit][autoit][/autoit][autoit]
_Example("Combo GUI")
Func _Example($sTitel)
Local $msg
GUICreate($sTitel)$cb = GUICtrlCreateCombo("item1", 10, 10, 100, 25)
[/autoit]
GUICtrlSetData(-1, "item2|item3", "item1")
$ok = GUICtrlcreatebutton("OK",11,70,50,30)
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
case $ok
If GUICtrlRead($cb) = "item1" Then
sleep (10)
MsgBox (64, "test", "item 1 gedrückt")
GUIDelete("My GUI combo")
exit
EndIf
If GUICtrlRead($cb) = "item2" Then
sleep (10)
MsgBox (64, "test", "item 2 gedrückt")
GUIDelete("My GUI combo")
exit
EndIf
If GUICtrlRead($cb) = "item3" Then
sleep (10)
MsgBox (64, "test", "item 3 gedrückt")
GUIDelete("My GUI combo")
exit
EndIf
case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
EndFuncMFG: Blacky911
-
Sorry, ich habe es aber ausgebessert. Aber wie ich es sehe, hast du es auch schon hinbekommen.
[autoit]
[/autoit]
$combo = GUICtrlCreateCombo("Test 1", 10, 10, 100, 50)
GUICtrlSetData($combo, "Test 2|Test 3")Ich habe es wärend der Arbeit gepostet und musste mich deshalb ein wenig beeilen mit dem schreiben.
Ach und noch was. Du brauchst vor Exit nicht das GUI löschen, da, dass Programm eh beendet wird.
-
Und so kann man einen Code extrem verkürzen. Die ; --- sind nur abstandhalter, damits etwas übersichtlicher wird.
Spoiler anzeigen
[autoit]$GUI = GUICreate ("Test", 120, 40)
[/autoit]
; ---
$Combo1 = GUICtrlCreateCombo ("Auswählen", 10, 10, 100)
; ---
For $i = 1 To 100 Step 1
GUICtrlSetData ($Combo1, $i)
Next
; ---
GUISetState ()
; ---
While 1
$msg = GUIGetMsg ()
For $i = 1 To 100 Step 1
Switch $msg
Case $i
$Read = GUICtrlRead ($Combo1)
MsgBox (0, "", $Read)
Case -3
Exit
EndSwitch
Next
WEndOder auch so:
Spoiler anzeigen
[autoit]$GUI = GUICreate ("Test", 120, 40)
[/autoit]
; ---
$Combo1 = GUICtrlCreateCombo ("Auswählen", 10, 10, 100)
; ---
$String = "Das|Ist|ein|Test"
$Split = StringSplit ($String, "|")
For $i = 1 To $Split[0] Step 1
GUICtrlSetData ($Combo1, $Split[$i])
Next
; ---
GUISetState ()
; ---
While 1
$msg = GUIGetMsg ()
For $i = 1 To $Split[0] Step 1
Switch $msg
Case $i
$Read = GUICtrlRead ($Combo1)
MsgBox (0, "Gewählt", "Du hast ''" & $Read & _
"'' in dem Text ''Das ist ein Test'', gewählt")
Case -3
Exit
EndSwitch
Next
WEnd -
Du brauchst noch nichtmal deine For-Schleife in der Main loop:
Spoiler anzeigen
[autoit]$GUI = GUICreate ("Test", 120, 40)
[/autoit] [autoit][/autoit] [autoit]
$Combo1 = GUICtrlCreateCombo ("Auswählen", 10, 10, 100)For $i = 1 To 100 Step 1
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData ($Combo1, $i)
Next
GUISetState ()While 1
[/autoit]
$msg = GUIGetMsg ()
Switch $msg
Case $combo1
MsgBox (0, "", GUICtrlRead($Combo1))
Case -3
Exit
EndSwitch
WEnd -
Ups
Stimmt ja 
-
also das was ich da hab ist ja leicht verständlich nur das was ihr da habt versteh ich nciht...
ich blicke da nicht durch... kanns mal einer kommentieren/erklären?
MFG: Blacky911
-
@Blacky: Eigendlich ist da garkeine Raketenwissenschaft dahinter
Der einzige Unterschied zwischen den Scripten ist nur das du das Event abfragst, wenn jemand auf den Button drückt und bei den anderen Scripten abgefragt wird, ob sich irgendwas an der Combobox ändert!Ich habs trotzdem mal auskommentiert, hoffe das hilft!
Spoiler anzeigen
[autoit]$GUI = GUICreate ("Test", 120, 40)
[/autoit] [autoit][/autoit] [autoit]
$Combo1 = GUICtrlCreateCombo ("Auswählen", 10, 10, 100)For $i = 1 To 100 Step 1;Schleife die 100 mal ausgeführt wird..$i ist dabei die Variable,
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData ($Combo1, $i);die durchgezählt wird, sodass das Script nach 100
Next;Durchführungen weiß, dass es die Schleife nicht mehr ausführen soll. Dabei wird bei jedem
GUISetState ();Ausführen die aktuelle Zahl $i dem Combo hinzugefügt!While 1
[/autoit]
$msg = GUIGetMsg ()
Switch $msg
Case $combo1;Falls der Text der Combobox verändert wird, bekommt das GuiGetMsg mit
MsgBox (0, "", GUICtrlRead($Combo1));und gibt in einer MsgBox, den Text der in
Case -3; der Combobox gerade ist aus!
Exit
EndSwitch
WEnd