Seite 1 von 1
Markieren von Text in ComboBoxGadgets
Verfasst: 19.11.2007 14:23
von Hyper
Hallo Gefährten,
es gibt ja hier Themen zum Markieren von Text in EditorGadgets. Aber leider funktionieren diese API nicht in ComboBoxGadgets.
Ich möchste aber ein editierbares ComboBoxGadget bauen bei dem ein Default-Text eingetragen und markiert wird. Das kann man dann überschreiben oder so lassen.
Könnt Ihr mir helfen, wie ich den Text markieren kann?
Verfasst: 19.11.2007 15:24
von Scarabol
Hallo,
du kannst doch einfach mit EventGadget() prüfen ob jemand den Gadget aktiviert hat, und dann löschst du den Inhalt einfach, wenn noch der Standardinhalt drinsteht...
Gruß
Scarabol
Verfasst: 19.11.2007 15:43
von Thomas
Ganz einfach:
hier mal ein Beispielcode:
Code: Alles auswählen
If OpenWindow(0, 0, 0, 270, 140, "ComboBoxGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
ComboBoxGadget(0, 10, 10, 250, 100, #PB_ComboBox_Editable)
AddGadgetItem(0, -1, "Eintrag 1")
AddGadgetItem(0, -1, "Eintrag 2")
AddGadgetItem(0, -1, "Eintrag 3")
SetGadgetState(0, 0)
hComboEdit.l = ChildWindowFromPoint_(GadgetID(0), 5, 5)
SendMessage_(hComboEdit, #EM_SETSEL, 6, 1) ;Makieren von Position 1 bis 6
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Verfasst: 19.11.2007 20:44
von Hyper
Hallo Thomas,
danke, so funktionierts!
Wenn ich das mit den APIs nur mal verstehn würde! Wofür steht z.B. 5,5 in ChildWindowFromPoint_ sind das Konstanten?
Die 6,1 sind Länge und Anfang der Markierung, das ist klar.
Verfasst: 19.11.2007 21:29
von Thomas
Hyper hat geschrieben:Hallo Thomas,
danke, so funktionierts!
Wenn ich das mit den APIs nur mal verstehn würde! Wofür steht z.B. 5,5 in ChildWindowFromPoint_ sind das Konstanten?
Die 6,1 sind Länge und Anfang der Markierung, das ist klar.
Ganz ehrlich:
Das versteh ich auch nicht ganz ... ich habs auch mal aus nem anderen Code übernommen
Hauptsache es funktioniert

Verfasst: 19.11.2007 21:38
von Kiffi
Hyper hat geschrieben:Wofür steht z.B. 5,5 in ChildWindowFromPoint_ sind das Konstanten?
5 ist eine Zahl mit einem ziemlich konstanten Wert.
Im Ernst: übersetze doch mal ChildWindowFromPoint ins Deutsche und
überlege dann, wo der Punkt (Point) liegen könnte, an dem das Child-Window
ermittelt werden soll...
Grüße ... Kiffi
Verfasst: 19.11.2007 21:54
von Ligatur
Dies hier macht das selbe mit weniger Code:
Code: Alles auswählen
If OpenWindow(0, 0, 0, 270, 140, "ComboBoxGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
ComboBoxGadget(0, 10, 10, 250, 100, #PB_ComboBox_Editable)
AddGadgetItem(0, -1, "Eintrag 1")
AddGadgetItem(0, -1, "Eintrag 2")
AddGadgetItem(0, -1, "Eintrag 3")
SetGadgetState(0, 0)
; hComboEdit.l = ChildWindowFromPoint_(GadgetID(0), 5, 5)
; SendMessage_(hComboEdit, #EM_SETSEL, 6, 1) ;Makieren von Position 1 bis 6
SendMessage_(GadgetID(0), #CB_SETEDITSEL, 0, 6 << 16 + 1) ;Makieren von Position 1 bis 6
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Verfasst: 19.11.2007 22:47
von Hyper
Aha und dabei bedeutet es:
Code: Alles auswählen
von = 3
bis = 5
SendMessage_(GadgetID(0), #CB_SETEDITSEL, 0, bis << 16 + von-1) ;Makieren von Position 'von bis 'bis'
Verstehe zwar die '<<' nicht, aber es funktioniert prima. Danke!
Verfasst: 19.11.2007 22:49
von RSBasic
@Hyper
Steht alles in der Hilfe bei "Variablen, Typen und Operatoren" unten in der Tabelle.