Nochmals das leidige #EM_SETSEL - Problem
Nochmals das leidige #EM_SETSEL - Problem
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
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
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Widerstand ist zwecklos - Sie werden emuliert
-
- Beiträge: 213
- Registriert: 13.07.2008 10:05
- Computerausstattung: Windows 8.1 Pro
AMD Phenom II X4 955 @ 3.2 GHz
4GB RAM
NVIDIA GeForce GTX 660
Re: Nochmals das leidige #EM_SETSEL - Problem
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)))
Windows 8.1 Pro 64Bit | AMD Phenom II X4 955 @ 3.2 GHz | 4GB RAM | NVIDIA GeForce GTX 660
Re: Nochmals das leidige #EM_SETSEL - Problem
@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
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
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Widerstand ist zwecklos - Sie werden emuliert
-
- Beiträge: 213
- Registriert: 13.07.2008 10:05
- Computerausstattung: Windows 8.1 Pro
AMD Phenom II X4 955 @ 3.2 GHz
4GB RAM
NVIDIA GeForce GTX 660
Re: Nochmals das leidige #EM_SETSEL - Problem
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.
Edit:
Zu deiner Funktion Cursor ganz nach rechts das sollte eigentlich auch gehen läuft das bei dir auch nicht?
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
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)))
Windows 8.1 Pro 64Bit | AMD Phenom II X4 955 @ 3.2 GHz | 4GB RAM | NVIDIA GeForce GTX 660
Re: Nochmals das leidige #EM_SETSEL - Problem
@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.
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.
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Widerstand ist zwecklos - Sie werden emuliert
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Nochmals das leidige #EM_SETSEL - Problem
Doppelklick = Word selektieren, das ist so standard!Daffy0815 hat geschrieben:Klick mal ein paar mal zwischen "String" und "Gadget" und Du wirst sehen das plötzlich nur "String" markiert ist.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Nochmals das leidige #EM_SETSEL - Problem
@ts-soft
Unter "Klick mal ein paar mal..." verstehe ich NATÜRLICH KEINEN Doppelklick.
(Den kann mein Touchscreen auch garnicht erzeugen)
Gruß
Daffy
Unter "Klick mal ein paar mal..." verstehe ich NATÜRLICH KEINEN Doppelklick.
(Den kann mein Touchscreen auch garnicht erzeugen)
Gruß
Daffy
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Widerstand ist zwecklos - Sie werden emuliert
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Nochmals das leidige #EM_SETSEL - Problem
Dann passiert das von Dir beschriebene aber nicht, jedenfalls nicht bei mir.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Nochmals das leidige #EM_SETSEL - Problem
@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
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
Wir sind LINUX
Widerstand ist zwecklos - Sie werden emuliert
Widerstand ist zwecklos - Sie werden emuliert
- Falko
- Admin
- Beiträge: 3535
- Registriert: 29.08.2004 11:27
- Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit) - Kontaktdaten:
Re: Nochmals das leidige #EM_SETSEL - Problem
Das liegt nicht an der Zeit wie lange du die Maustaste fest hältst, sondern daran, das sich deine Maus dabei etwasDaffy0815 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
bewegt und dann bis zum Cursor die Selektierung rechts abgeschnitten wird.
Gruß Falko