Also ich bin jetzt mal ne ganze Ecke weiter. Hab herausgefunden, dass auf der Purearea ein Link zur GTK API gibt
Dort habe ich dann auch die Funktion gtk_editable_select_region_() gefunden mit der man das realisieren kann. Jetzt hab ich dummerweise noch ein anderes Problem, dass ich aber nicht ganz verstehe weil es wohl irgendwie willkürlich ist.
Ich hab folgendes kleines Testprog geschrieben mit dem sich der Fehler bei mir zumindest nachstellen läßt.
Das Problem liegt darin, wann das Feld den Fokus bekommt wann es diesen wieder verliert. Das komische ist, bei 4 Feldern geht es nicht und beim 5. geht es auf einmal.
Einfach mal selbst stehen. Unterschieden wird scheinbar auch noch, ob das Feld mit TAB oder mit der Maus verlassen wird. Wenn ich das 5. Feld mit TAB verlasse krieg ich den Request, wenn ich es mit der Maus verlasse (einfach in eine anderes Feld klicke) passiert nichts. Bei den restlichen 4 Felder ist es egal, da passiert generell nichts...
Code: Alles auswählen
;- Window Constants
;
Enumeration
#mainWindow
EndEnumeration
;- Gadget Constants
;
Enumeration
#feld1Text
#feld1
#feld2Text
#feld2
#feld3Text
#feld3
#feld4Text
#feld4
#feld5Text
#feld5
EndEnumeration
If OpenWindow(#mainWindow, 343, 44, 403, 200, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Focus Test")
If CreateGadgetList(WindowID())
TextGadget(#feld1Text, 30, 30, 170, 20, "Feld1:")
StringGadget(#feld1, 30, 50, 340, 20, "")
TextGadget(#feld2Text, 30, 80, 70, 20, "Feld2:")
StringGadget(#feld2, 30, 100, 70, 20,"20")
TextGadget(#feld3Text, 120, 80, 70, 20, "Feld3:")
StringGadget(#feld3, 120, 100, 70, 20,"20")
TextGadget(#feld4Text, 210, 80, 70, 20, "Feld4:")
StringGadget(#feld4, 210, 100, 70, 20,"0")
TextGadget(#feld5Text, 300, 80, 70, 20, "Feld5:")
StringGadget(#feld5, 300, 100, 70, 20,"2500")
ActivateGadget(#feld1)
EndIf
EndIf
Repeat
WaitWindowEvent = WaitWindowEvent()
EventGadgetID = EventGadgetID()
Select WaitWindowEvent
Case #PB_Event_Gadget
Select EventType()
Case #PB_EventType_Focus
;MessageRequester("FOCUS","GOT")
gtk_editable_select_region_(GadgetID(EventGadgetID), 0,Len(GetGadgetText(EventGadgetID)))
Case #PB_EventType_LostFocus
MessageRequester("FOCUS","LOST")
gtk_editable_select_region_(GadgetID(EventGadgetID), 0,0)
EndSelect
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
PB 3.94 unter OSS (Open Suse) 10.1
Kann da mal einer nachprüfen?
Danke & Gruß
LordK