Danke für deine Version. Ich habe dies mal eingearbeitet.
PS:
bei deiner Version wird bei Zeile 10, am Schluss bei der 10 die "null" weggeschnitten. Da ist auch noch ein Bug
So, weiter im Text.
Hier mein Code:
Code: Alles auswählen
EnableExplicit
Enumeration
#Window_0
EndEnumeration
Enumeration
#Editor_Info
#btnPaste
#btnBBCode
#btnClearText
EndEnumeration
Define.l Event, EventWindow, EventGadget, EventType, EventMenu, editorid, textlaenge, text, start, ende
OpenWindow(#Window_0, 0, 0, 600, 400, "BB Code in EditorGadget", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
;Editor Gadget
editorid = EditorGadget(#Editor_Info, 20, 70, 560, 280, #PB_Editor_WordWrap)
;Buttons
ButtonGadget(#btnBBCode, 20, 10, 85, 30, "[u][/u]")
ButtonGadget(#btnPaste, 120, 10, 140, 30, "füge Text aus clipboard ein")
ButtonGadget(#btnClearText, 275, 10, 100, 30, "lösche Text")
;MAIN
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #btnPaste
SendMessage_(GadgetID(#Editor_Info),#WM_PASTE,0,0)
Case #btnClearText
SetGadgetText(#Editor_Info,"")
Case #btnBBCode
textlaenge = SendMessage_(editorid, #WM_GETTEXTLENGTH, 0, 0)
text = AllocateMemory(textlaenge)
SendMessage_(editorid, #WM_GETTEXT, textlaenge, text)
SendMessage_(editorid, #EM_GETSEL, @start, @ende)
start + SendMessage_(editorid, #EM_EXLINEFROMCHAR, 0, start)
ende + SendMessage_(editorid, #EM_EXLINEFROMCHAR, 0, ende)
SendMessage_(editorid, #EM_REPLACESEL, 0, "[u]" + PeekS(text + start, ende - start) + "[/u]")
FreeMemory(text)
EndSelect
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_0
CloseWindow(#Window_0)
ClearClipboard()
Break
EndIf
EndSelect
Until Event = #PB_Event_CloseWindow
End
funktioniert, wie vorher auch schon mit der Version von Sven - AAAber:
Ich konnte nun das Problem lokalisieren warum es nicht funktioniert wie gedacht.
Vorab: fügst Du in meine Version Langen Text ein und machst irgendwo unten eine Markierung und dann klick auf den [BBCode button], wirst Du sehen, dass wieder etwas weggeschnitten wird. (wer gerade keinen längeren Text zur Hand hat, hier ein Online "Lorem Ipsum" Generator:
http://www.blindtextgenerator.com/lorem-ipsum)
Schuld ist in der Zeile:editorid = EditorGadget(#Editor_Info, ... das
#PB_Editor_WordWrap am Ende.
nimmst Du:
#PB_Editor_WordWrap raus, funktioniert es.
Nun will ich aber nicht, dass der lange Text bis 1 Meter nach rechts geht (als Beispiel) sondern es soll schon am Rand des EditorGadgets umgebrochen werden.
Wie kann man das nun wieder lösen???
Das ist ja zum Mäuse melken.
Grüße aus der Ver2flungs Ecke