Ich hatte hier auch nur einen kleinen Demo-Code geschrieben, in dem der Effekt wenn die Selektion aufgehoben wird nachvollziehbar (also zu sehen) sein sollte, und in dem es kein Popup-Menü o.Ä. gibt.Bisonte hat geschrieben:Und nochmal nebenbei : Wenn das "deselektieren" automatisch bei LostFocus
gemacht wird, kann man mit dem selektierten Inhalt nichts anfangen (Rechtsklick und kopieren
ist Fokusverlust, weil ein Popupmenu aufgeht!)
StringGadgetInhalt Selektieren bei Fokuserhalt
Re: StringGadgetInhalt Selektieren bei Fokuserhalt
Re: StringGadgetInhalt Selektieren bei Fokuserhalt
Hi Linuxianer,
so würde es gehen:
so würde es gehen:
Code: Alles auswählen
Global sel = #False
Procedure.i MyStringEvent()
If Not sel
sel = #True
EndIf
EndProcedure
OpenWindow(0, 0, 0, 200, 100, "Autoselect text", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(1, 10, 10, 20, 20, "A")
StringGadget(2, 50, 40, 100, 20, "Test")
BindGadgetEvent(2, @MyStringEvent(), #PB_EventType_Focus)
Repeat
If sel
gtk_editable_select_region_(GadgetID(2), 0, Len(GetGadgetText(2)))
sel = #False
EndIf
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
Re: StringGadgetInhalt Selektieren bei Fokuserhalt
Ok, aber nun stell dir das mit ein paar mehr StringGadgets vor 

PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
- TroaX
- Beiträge: 684
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
- Wohnort: NRW
- Kontaktdaten:
Re: StringGadgetInhalt Selektieren bei Fokuserhalt
Kannst auch statt #True oder #False auch einfach die Gadget-ID als Wert für sel nehmen und wenn keines selektiert ist, den Wert auf 0 setzen. Es kann eh nur ein Gadget zur Zeit selektiert seinBisonte hat geschrieben:Ok, aber nun stell dir das mit ein paar mehr StringGadgets vor

PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Re: StringGadgetInhalt Selektieren bei Fokuserhalt
Dann ist meine kleine AutoSelString() Proc genau das gleiche in grün ... In beiden hat man
in der Eventloop etwas zu bestellen... Wobei dann bei mir das BindGadgetEvent völlig
wegfällt, also eine Fehlerquelle weniger
in der Eventloop etwas zu bestellen... Wobei dann bei mir das BindGadgetEvent völlig
wegfällt, also eine Fehlerquelle weniger

PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
- TroaX
- Beiträge: 684
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
- Wohnort: NRW
- Kontaktdaten:
Re: StringGadgetInhalt Selektieren bei Fokuserhalt
Mal so als Frage. Hast du mal versucht, mit
das setzen der Cursor-Position vorab zu erzwingen?
Also:
Denn ich werde irgendwie dieses merkwürdige Gefühl nicht los, das dieser Effekt daher kommt, das durch BindEventGadget erst der Cursor nach der Ausführung gesetzt wird, wodurch die Slektierung aufgehoben werden könnte. Vielleicht kannst du das damit brechen. ich kann es selber nicht testen, da kein Linux und somit kein GTK. Aber das hätte ich auch jeden Fall mal probiert.
Code: Alles auswählen
gtk_editable_set_position_(GadgetID(Gadget),-1)
Also:
Code: Alles auswählen
gtk_editable_set_position_(GadgetID(Gadget),-1)
gtk_editable_select_region_(GadgetID(Gadget), 0, Len(GetGadgetText(Gadget)))
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
- HeX0R
- Beiträge: 3042
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Re: StringGadgetInhalt Selektieren bei Fokuserhalt
Eine "von hinten durch die Brust ins Auge"-Lösung

Code: Alles auswählen
#MY_EVENT = #PB_Event_FirstCustomValue
Procedure.i MyStringEvent()
Gadget = EventGadget()
gtk_editable_select_region_(GadgetID(Gadget), 0, Len(GetGadgetText(Gadget)))
EndProcedure
Procedure MyStringEventA()
PostEvent(#MY_EVENT, 0, EventGadget())
EndProcedure
OpenWindow(0, 0, 0, 200, 100, "Autoselect text", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(1, 10, 10, 20, 20, "A")
StringGadget(2, 50, 40, 100, 20, "Test")
BindGadgetEvent(2, @MyStringEventA(), #PB_EventType_Focus)
BindEvent(#MY_EVENT, @MyStringEvent(), 0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
Re: StringGadgetInhalt Selektieren bei Fokuserhalt
Also der Versuch, die Position vorher zu setzen bringt auch nichts.
Und die Lösung von HeX0r gefällt mir
(Sie funktioniert)
Fehlt jetzt nur noch Mac
Und die Lösung von HeX0r gefällt mir

Fehlt jetzt nur noch Mac

PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom