Um den genannten Trend zur 'Faulheit' fortzuführen hab ich mich bei Shardik (
http://www.purebasic.fr/english/viewtop ... 19&t=38488) und ts-soft's durchaus brauchbarem Code bedient und zweiteren etwas nachgearbeitet.
Zumindest unter PB5.40 auf Windows XP und Linux ging schon mal was. Bzgl. Feinheiten und Stabilität sowie für den Mac bräuchte es noch etwas Nacharbeit.
Vielleicht kann man ja damit was anfangen?
Code: Alles auswählen
;from Shardik
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
ImportC ""
GetControlData(ControlRef.L, ControlPartCode.L, TagName.L, BufferSize.L, *Buffer, *ActualSize)
SetControlData(ControlRef.L, ControlPartCode.L, TagName.L, BufferSize.L, *Buffer)
EndImport
#kControlEditTextPart = 5
#kControlEditTextSelectionTag = 'sele'
Structure ControlEditTextSelectionRec
SelStart.W
SelEnd.W
EndStructure
CompilerEndIf
Procedure SetCursorPos(GadgetNo.l, CursorPos)
Protected GadgetID = GadgetID(GadgetNo)
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
SendMessage_(GadgetID, #EM_SETSEL, CursorPos, CursorPos)
CompilerCase #PB_OS_Linux
gtk_editable_set_position_(GadgetID, CursorPos)
CompilerCase #PB_OS_MacOS
TextSelection.ControlEditTextSelectionRec
TextSelection\selStart = CursorPos
TextSelection\selEnd = CursorPos
SetControlData(GadgetID, #kControlEditTextPart, #kControlEditTextSelectionTag, SizeOf(ControlEditTextSelectionRec), @TextSelection)
SetActiveGadget(GadgetNo)
CompilerEndSelect
EndProcedure
Procedure.l GetCursorPos(GadgetNo.l)
Protected GadgetID = GadgetID(GadgetNo)
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
ProcedureReturn SendMessage_(GadgetID, #EM_GETSEL, 0, 0)/65536
CompilerCase #PB_OS_Linux
ProcedureReturn gtk_editable_get_position_(GadgetID)
CompilerCase #PB_OS_MacOS
GetControlData(GadgetID, #kControlEditTextPart, #kControlEditTextSelectionTag, SizeOf(ControlEditTextSelectionRec), @TextSelection.ControlEditTextSelectionRec, 0)
ProcedureReturn TextSelection\SelStart
CompilerEndSelect
EndProcedure
;from ts-soft
Global.i CurPos
Global.s sTemp, sTempTab
If OpenWindow(0, 0, 0, 322, 205, "StringGadget Flags", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(0, 8, 10, 306, 20, "Normal StringGadget...")
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow : Break
Case #PB_Event_Gadget
Select EventGadget()
Case 0
Select EventType()
Case #PB_EventType_Focus
AddKeyboardShortcut(0, #PB_Shortcut_Tab, 1)
Case #PB_EventType_LostFocus
RemoveKeyboardShortcut(0, #PB_Shortcut_Tab)
EndSelect
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case 1
CurPos= GetCursorPos(0)
Debug CurPos
sTemp= GetGadgetText(0)
sTempTab= Left(sTemp, CurPos) + #TAB$ + Mid(sTemp, CurPos+1)
SetGadgetText(0, sTempTab)
SetCursorPos(0, CurPos)
EndSelect
EndSelect
ForEver
EndIf
Und da mir heut der Schalk im Nacken sitzt:
Offtopic @xXRobo_CubeXx:
Ich sehe hier noch weitere Probleme, gerade bezüglich Deiner Bemerkungen in diesem thread:
http://www.purebasic.fr/german/viewtopi ... 8&start=10, ff.
- Leute, mit denen man noch nicht gesoffen hat sollte man aus Höflichkeit wenigstens mit 'Du' ansprechen.
- In einem Satz wie "Wen du seine Frage nicht verstanden hast hast du ..." folgt ein Komma nach dem ersten 'hast'.
- "Konntest du ihn mit deinen sinnlosen Beispiel ...": Auch hier die Höflichkeit-Großschreibung: 'Deinen', und
- um zukünftig nicht ständig mit 'Verona' angesprochen zu werden würde der gemeine Hobbygermanist hier wohl zu
dem 
Dativ tendieren, also korrekt 'Deinem'.
- "in Windows nachzustellen dann lass es doch ...". Erneut wäre hier ein Komma dem 'nachzustellen' nachzustellen.
Sehr 'suboptimales' Deutsch, aber 'Nobody is perfect'

.
EndOfftopic
und sorry an MarcelX fürs Offtopic
Gruß, Charly