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