ich habe hier eine Procedure SetColor() aus der Winapi-Library um im Editorgadget
vorhandenen Text beliebig einzufärben. Die funktioniert bei 5.11 und 5.60 gleich gut.
Ich habe aber eine andere Variation SetColorAlt() gerne genutzt, die einfach nur danach folgende
Textausgaben einfärbt. So gibts dann übersichtliche Listenausgaben sehr einfach ...
<1> Good
<2> Good
<3> Bad
<4> Good
...
Leider färbt SetColorAlt() auf PB5.60 nichts mehr ein. Auf PB5.11 lief es noch prima.
Der Unicode-Ascii Krams wird es ja wohl nicht schonwieder sein, oder ?
Code: Alles auswählen
EnableExplicit
Define EventID
Procedure SetColorAlt(Gadget, Color) ; Färbt allen folgenden Textausgaben ein
Protected format.CHARFORMAT2
Protected sel.CHARRANGE
Protected sel_saved.CHARRANGE
format\cbSize = SizeOf(CHARFORMAT2)
format\dwMask = #CFM_COLOR
format\crTextColor = Color
SendMessage_(GadgetID(Gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
Procedure SetColor(id,s,e,color) ; Färbt vorhandenen Text ein von Startpos bis Endpos --- WinAPI-Library ---
Protected cf.charformat2\cbSize = SizeOf(charformat2)
Protected sel.CHARRANGE
SendMessage_(GadgetID(id),#EM_EXGETSEL,0,sel)
cf\dwMask = #CFM_COLOR
cf\crTextColor = color
SendMessage_(GadgetID(id),#EM_SETSEL,s,e)
SendMessage_(GadgetID(id),#EM_SETCHARFORMAT,#SCF_SELECTION,@cf)
SendMessage_(GadgetID(id),#EM_SETSEL,sel\cpMin,sel\cpMax)
EndProcedure
If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
EditorGadget(1,10,10,WindowWidth(0)-20,WindowHeight(0)-20,0)
SetGadgetText(1,"PureBasicPureBasicPureBasicPureBasicPureBasicPureBasic"+Chr(13)+Chr(10)+"TestTest" )
SetColor(1,13,27,$0000FF)
AddGadgetItem (1, -1, "Neue Zeile ")
AddGadgetItem (1, -1, "Noch ne neue Zeile ")
SetColor(1,60,64,$FF0000)
SetColorAlt(1,$00FF00) ; Ab jetzt Text grün ausgeben
AddGadgetItem (1, -1, "Letzte neue Zeile ") ; grün
AddGadgetItem (1, -1, "Allerletzte neue Zeile ") ; grün
Repeat
EventID=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
End
EndIf
ForEver
EndIf