Anfang u. Ende von markiertem Text in EditorGadget n
Anfang u. Ende von markiertem Text in EditorGadget n
Hallo!
So, jetzt habe ich ne halbe Stunde damit verbracht, das Forum zu durchsuchen, um eine Antwort zu meiner Frage zu bekommen. Nun muss ich sie doch stellen...
Wie kann ich die Position (Zeile und Spalte) des ersten und letzten Buchstabens eines markierten Textes im EditorGadget ermitteln? AFAIK geht das nur mit den SendMessage-Befehlen, von denen ich keine Ahnung habe.
So, jetzt habe ich ne halbe Stunde damit verbracht, das Forum zu durchsuchen, um eine Antwort zu meiner Frage zu bekommen. Nun muss ich sie doch stellen...
Wie kann ich die Position (Zeile und Spalte) des ersten und letzten Buchstabens eines markierten Textes im EditorGadget ermitteln? AFAIK geht das nur mit den SendMessage-Befehlen, von denen ich keine Ahnung habe.
Code: Alles auswählen
SendMessage_(GadgetID(0), #EM_EXGETSEL, 1, range.charrange)
CurrentLineIndex = SendMessage_(GadgetID(0), #EM_EXLINEFROMCHAR, 0, range\cpMin)
y = CurrentLineIndex + 1
CurrentLineStartIndex = SendMessage_(GadgetID(0), #EM_LINEINDEX, CurrentLineIndex, 0)
x = range\cpMax - CurrentLineStartIndex + 1
Debug x
Debug y
- Hroudtwolf
- Beiträge: 1416
- Registriert: 30.10.2004 23:33
- Kontaktdaten:
Hört sich sich so an als wolltest du etwas ersetzen oder kopieren.
Wenn dem so ist dann hab ich was für dich.
Wenn dem so ist dann hab ich was für dich.
Code: Alles auswählen
Procedure CutEditorText(gadget)
SendMessage_(GadgetID(gadget), #WM_CUT,0,0)
EndProcedure
Procedure CopyEditorText(gadget)
SendMessage_(GadgetID(gadget), #WM_COPY,0,0)
EndProcedure
Procedure InsertEditorText(gadget,Text$)
ProcedureReturn SendMessage_(GadgetID(gadget),#EM_REPLACESEL,0,Text$)
EndProcedure
so ungefähr ?
Code: Alles auswählen
OpenWindow(0, 0, 0, 200, 220, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Test")
CreateGadgetList(WindowID())
editorid.l = EditorGadget(0, 0, 0, 200, 200)
ButtonGadget(1, 50, 200, 100, 20, "Klick")
For z.l = 1 To 10
AddGadgetItem(0, -1, "zeile " + Space(z) + Str(z.l))
Next
Repeat
w_ereignis.l = WaitWindowEvent()
Select w_ereignis.l
Case #PB_Event_Gadget
If EventGadgetID() = 1
textlaenge.l = SendMessage_(editorid.l, #wm_gettextlength, 0, 0)
text.l = AllocateMemory(textlaenge.l)
SendMessage_(editorid.l, #wm_gettext, textlaenge.l, text.l)
SendMessage_(editorid.l, #em_getsel, @anfang, @ende)
anfang + SendMessage_(editorid.l, #EM_EXLINEFROMCHAR, 0, anfang)
ende + SendMessage_(editorid.l, #EM_EXLINEFROMCHAR, 0, ende)
SendMessage_(editorid.l, #EM_REPLACESEL, 0, ">" + PeekS(text + anfang, ende - anfang) + "<")
FreeMemory(text.l)
EndIf
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
- Hroudtwolf
- Beiträge: 1416
- Registriert: 30.10.2004 23:33
- Kontaktdaten:
Nix leichter als das.
Code: Alles auswählen
CopyEditorText(gadget)
Text$ = "Vor "+GetClipboardText()+" Hinter"
SetClipboardText(Text$)
InsertEditorText(gadget,Text$)
;---------------------------------------------------------------
Procedure CopyEditorText(gadget)
SendMessage_(GadgetID(gadget), #WM_COPY,0,0)
EndProcedure
Procedure InsertEditorText(gadget,Text$)
ProcedureReturn SendMessage_(GadgetID(gadget),#EM_REPLACESEL,0,Text$)
EndProcedure
- Hroudtwolf
- Beiträge: 1416
- Registriert: 30.10.2004 23:33
- Kontaktdaten: