Seite 1 von 2
Nochmals das leidige #EM_SETSEL - Problem
Verfasst: 07.08.2011 17:04
von Daffy0815
Hallo Leute,
leider habe ich immer noch keine brauchbare Lösung für das VOLLSTÄNDIGE Markieren eines Stringgadgets gefunden.
Die Anweisung "SendMessage_(GadgetID(NumGadget.i), #EM_SETSEL, 0, -1)" im Falle von "#PB_EventType_Focus" ist nur die
"halbe Miete"!
Sie funktioniert ausschließlich bei Bedienung mit "TAB" bzw. "Shift-TAB".
Wird jedoch mit der Maus in das Stringgadget "geklickt" dann wird abhängig von der Position des Mauskursors beim "Klick" nur ein Teil des Stringgadgets markiert!
Was man brauchen würde wäre der "Event" "Linksklick in Stringgadget", dann die Funktion "Kursor ganz nach rechts" und dann das "#EM_SETSEL"
Weis da jemand Rat?
Gruß
Daffy
Re: Nochmals das leidige #EM_SETSEL - Problem
Verfasst: 07.08.2011 17:23
von Christian+
Ein Quellcode zum Testen wäre sinnvoll. Ich würde es mal damit probieren.
Code: Alles auswählen
SendMessage_(GadgetID(NumGadget), #EM_SETSEL, 0, Len(GetGadgetText(NumGadget)))
Re: Nochmals das leidige #EM_SETSEL - Problem
Verfasst: 07.08.2011 17:33
von Daffy0815
@Cristian+
Habe es getestet.
Funktioniert NICHT!
Ist irgendwie auch logisch denn wenn mit 0, -1 der gesamte markiert werden soll dann ist 0, Stringlänge doch auch nichts anderes.
Gruß
Daffy
Re: Nochmals das leidige #EM_SETSEL - Problem
Verfasst: 07.08.2011 17:38
von Christian+
Ok hätte ja sein können das sich nur das -1 das Problem macht wenn man eine bestimmte länge an gibt sollte ja eigentlich auch diese beachtet werden. Mein Problem ist allerdings das ich nicht herausfinde was du meinst hast du vielleicht einen Testquellcode? Ich habe mal versucht aus deinen Infos dazu was zu machen aber mir ist es nicht gelungen das Problem damit nachzustellen.
Code: Alles auswählen
OpenWindow(0, 0, 0, 300, 200, "StringGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(0, 10, 10, 250, 20, "String Gadget 0")
StringGadget(1, 10, 40, 250, 20, "String Gadget 1")
Define Event.i
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
Select EventGadget()
Case 0
If EventType() = #PB_EventType_Focus
SendMessage_(GadgetID(0), #EM_SETSEL, 0, -1)
EndIf
Case 1
If EventType() = #PB_EventType_Focus
SendMessage_(GadgetID(1), #EM_SETSEL, 0, Len(GetGadgetText(1)))
EndIf
EndSelect
EndIf
Until Event = #PB_Event_CloseWindow
Edit:
Zu deiner Funktion Cursor ganz nach rechts das sollte eigentlich auch gehen läuft das bei dir auch nicht?
Code: Alles auswählen
SendMessage_(GadgetID(NumGadget), #EM_SETSEL, Len(GetGadgetText(NumGadget)), Len(GetGadgetText(NumGadget)))
Re: Nochmals das leidige #EM_SETSEL - Problem
Verfasst: 07.08.2011 18:02
von Daffy0815
@Christian+
Habe dein Beispiel getestet und das verhält sich doch genau so wie beschrieben!
Klick mal ein paar mal zwischen "String" und "Gadget" und Du wirst sehen das plötzlich nur "String" markiert ist.
Gruß
Daffy
PS.
Das mit dem LEN(....) funktioniert garnicht.
Re: Nochmals das leidige #EM_SETSEL - Problem
Verfasst: 07.08.2011 18:24
von ts-soft
Daffy0815 hat geschrieben:Klick mal ein paar mal zwischen "String" und "Gadget" und Du wirst sehen das plötzlich nur "String" markiert ist.
Doppelklick = Word selektieren, das ist so standard!
Re: Nochmals das leidige #EM_SETSEL - Problem
Verfasst: 07.08.2011 18:29
von Daffy0815
@ts-soft
Unter "Klick mal ein paar mal..." verstehe ich NATÜRLICH KEINEN Doppelklick.
(Den kann mein Touchscreen auch garnicht erzeugen)
Gruß
Daffy
Re: Nochmals das leidige #EM_SETSEL - Problem
Verfasst: 07.08.2011 18:33
von ts-soft
Dann passiert das von Dir beschriebene aber nicht, jedenfalls nicht bei mir.
Re: Nochmals das leidige #EM_SETSEL - Problem
Verfasst: 07.08.2011 18:42
von Daffy0815
@ts-soft
Habe das gerade mit dem Beispiel von Christian+ nochmal getestet.
Das hat offenbar etwas mit der Dauer des "Links-Klicks" zu tun!
Wenn ich die Maustaste nur "ultrakurz" klicke dann wird alles markiert und der Kursor befindet sich ganz rechts.
Halte ich länger (>=0,75 Sekunden) die Taste dann wird der Kursor auf die Klickposition gesetzt und nur der Teil links vom Kursor markiert.
Gruß
Daffy
Re: Nochmals das leidige #EM_SETSEL - Problem
Verfasst: 07.08.2011 18:52
von Falko
Daffy0815 hat geschrieben:@ts-soft
Habe das gerade mit dem Beispiel von Christian+ nochmal getestet.
Das hat offenbar etwas mit der Dauer des "Links-Klicks" zu tun!
Wenn ich die Maustaste nur "ultrakurz" klicke dann wird alles markiert und der Kursor befindet sich ganz rechts.
Halte ich länger (>=0,75 Sekunden) die Taste dann wird der Kursor auf die Klickposition gesetzt und nur der Teil links vom Kursor markiert.
Gruß
Daffy
Das liegt nicht an der Zeit wie lange du die Maustaste fest hältst, sondern daran, das sich deine Maus dabei etwas
bewegt und dann bis zum Cursor die Selektierung rechts abgeschnitten wird.
Gruß Falko