Ähnliches hatte ich schon mal gepostet, also hätte man nur nach
EditorGadget suchen müssen und wäre fündig geworden
Code: Alles auswählen
;http://www.purebasic.fr/german/viewtopic.php?t=636&highlight=editorgadget
;Angepasst auf PB4
;Selektierte Buchstaben ersetzen bzw. färben.
;Codeschnipsel written by Falko
String$="Mein Test"
Buffer$=Space(255)
Global hdc
Global mychar.CHARFORMAT
;
;Ermittle die Anzahl Buchstaben der obrigen Zeile
;
Procedure.l GetCursorPos(YPos.l)
Result = SendMessage_(hdc,#EM_LINEINDEX,YPos,0)
ProcedureReturn Result
EndProcedure
;
; Farbe und Fontattribute setzen
Procedure SetCharFormat(Mask.l,Effects.l,Color.l)
;mychar.CHARFORMAT ; Sollte vorher als global deklariert werden.
mychar\cbSize=SizeOf(CHARFORMAT)
mychar\dwMask=Mask;#CFM_BOLD|#CFM_COLOR ; Fettschrift und Color setzen
mychar\dwEffects=Effects
mychar\yHeight=500
mychar\crTextColor=Color
mychar\bCharSet=0
PokeS(@mychar\szFaceName, "Symbol")
EndProcedure
If OpenWindow(0,0,0,370,270,"StringGadget Flags",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
hdc.l=EditorGadget (0,8,8,350,250); ,#PB_Container_Raised); mit diesem Eintrag wäre alles Rechtsbündig auch wenn es nicht in PB4 steht :D
AddGadgetItem(0,0,"Wie wäre es mit dieser Zeile, die wir ändern wollen.")
AddGadgetItem(0,1,"Wie wäre es mit dieser Zeile, die wir ändern wollen.")
AddGadgetItem(0,2,"Wie wäre es mit dieser Zeile, die wir ändern wollen.")
;
;In dieser Zeile ein Teilstring, Farbe und Fontattribut verändern
;
Char=GetCursorPos(1)
SendMessage_(hdc,#EM_SETSEL,Char+16,Char+28); markiere Textteil, der geändert werden soll
SetCharFormat(#CFM_BOLD|#CFM_COLOR,1,$0000FF)
SendMessage_(hdc,#EM_SETCHARFORMAT,#SCF_SELECTION,mychar); Setzen der Attribute auf selection
SendMessage_(hdc,#EM_REPLACESEL,0,String$); Ersetze diesen Teil duch den String$
;
;Textteil Markieren und durch nur Farbe Blau und Fontattribute ersetzen
;
Char=GetCursorPos(2)
SendMessage_(hdc,#EM_SETSEL,Char+8,Char+8+8); markiere Textteil, der gefärbt werden soll
SetCharFormat(#CFM_FACE | #CFM_SIZE | #CFM_COLOR,1,$FF0000)
SendMessage_(hdc,#EM_SETCHARFORMAT,#SCF_SELECTION,mychar);Chare-Attribute setzen
SendMessage_(hdc,#EM_GETSELTEXT,0,Buffer$); kopiere Selektieren Text in den Buffer
SendMessage_(hdc,#EM_REPLACESEL,0,Buffer$); ersetze Text dann aus dem Buffer mit den Attributen
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf