Ich Peife hab
SetFontBackColorForEditorSelection(#Editor,$000000)
gesetzt (was ja schwarz ist) und bei Schwarz kommt immer 0 raus !
--------------------------------------------------------------------
Hi
Ich versuche mit folgendem Code (Hab ich mir teils zusammen gesucht und zusammen gebastelt, Danke an die Herausgeber )
Code: Alles auswählen
#CFM_BACKCOLOR = $4000000
Procedure.l GetFontBackColorForEditorSelection(GID)
format.CHARFORMAT2\cbSize = SizeOf(CHARFORMAT2)
format\dwMask = $4000000 ; = #CFM_BACKCOLOR
SendMessage_(GadgetID(GID), #EM_GETCHARFORMAT ,#SCF_SELECTION, @format)
If format
Font_Name.s = PeekS(@format\szFaceName)
Font_Style = format\dwMask
Font_Size = format\yHeight/20
Font_Color.l = format\crTextColor
Font_BackColor.l = format\crBackColor
EndIf
Debug Font_Color
Debug Font_BackColor
Debug format\crBackColor
If Font_BackColor
ProcedureReturn Font_BackColor
EndIf
EndProcedure
format\crBackColor b.z.w Font_BackColor immer leer. (BS XP SP3, PB5.31)
Font_Color. und format\crTextColor funzen, die brauch ich aber nicht.
Hier mal ein Testschnipsel.
Code: Alles auswählen
;/ WIN
Enumeration
#MainWin
EndEnumeration
;/ GADGET
Enumeration
#Editor
#Button
EndEnumeration
#CFM_BACKCOLOR = $4000000
#CFE_AUTOBACKCOLOR = #CFM_BACKCOLOR
Procedure Editor_Select(GNR,x1,y1,x9,y9)
Protected Selected.CHARRANGE ,GID
GID=GadgetID(GNR)
Selected\cpMin = SendMessage_(GID, #EM_LINEINDEX, y1, 0) + x1 - 1 ;Anz. aller Zeichen vor Y1
If y9 = -1 : y9 = SendMessage_(GID, #EM_GETLINECOUNT, 0, 0)-1 : EndIf
Selected\cpMax = SendMessage_(GID, #EM_LINEINDEX, y9, 0) ;Anz. aller Zeichen vor Y9
If x9 = -1 :
Selected\cpMax + SendMessage_(GID, #EM_LINELENGTH, Selected\cpMax, 0)
Else
Selected\cpMax + x9 - 1
EndIf
SendMessage_(GID, #EM_EXSETSEL, 0, @Selected) ;selectiert alle Zeichen cpMin bis cpMax
;SendMessage_(GID, #EM_SETSEL, $FFFFFFF, $FFFFFFF)
EndProcedure
Procedure SetFontBackColorForEditorSelection(GNR, Color.l)
Structure CHARFORMAT2_BC
cbSize.l
dwMask.l
dwEffects.l
yHeight.l
yOffset.l
crTextColor.l
bCharSet.b
bPitchAndFamily.b
szFaceName.b[#LF_FACESIZE]
_wPad2.w
wWeight.w
sSpacing.w
crBackColor.l
lcid.l
dwReserved.l
sStyle.w
wKerning.w
bUnderlineType.b
bAnimation.b
bRevAuthor.b
bReserved1.b
EndStructure
;Protected
format.CHARFORMAT2_BC
format\cbSize = SizeOf(CHARFORMAT2_BC)
format\dwMask = $4000000 ; = #CFM_BACKCOLOR
format\crBackColor = Color
SendMessage_(GadgetID(GID), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure
Procedure.l GetFontBackColorForEditorSelection(GID)
format.CHARFORMAT2\cbSize = SizeOf(CHARFORMAT2)
format\dwMask = $4000000 ; = #CFM_BACKCOLOR
SendMessage_(GadgetID(GID), #EM_GETCHARFORMAT ,#SCF_SELECTION, @format)
If format
Font_Name.s = PeekS(@format\szFaceName)
Font_Style = format\dwMask
Font_Size = format\yHeight/20
Font_Color.l = format\crTextColor
Font_BackColor.l = format\crBackColor
Debug "bla"
EndIf
Debug Font_Color
Debug Font_BackColor
Debug format\crBackColor
If Font_BackColor
ProcedureReturn Font_BackColor
EndIf
EndProcedure
OpenWindow(#MainWin,0,0,500,400,"New Prog",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
ButtonGadget(#Button,10,10,100,20,"test")
EditorGadget(#Editor,10,40,300,200)
AddGadgetItem(#Editor,-1,"bla11111111111")
AddGadgetItem(#Editor,-1,"bla22222222222")
AddGadgetItem(#Editor,-1,"bla33333333333")
AddGadgetItem(#Editor,-1,"bla44444444444")
AddGadgetItem(#Editor,-1,"bla55555555555")
SetGadgetColor(#Editor,#PB_Gadget_FrontColor,$8000FF)
Row = 2
Editor_Select(#Editor,1,Row,-1,Row) ;wählt eine komplette Zeile aus
SetFontBackColorForEditorSelection(#Editor,$000000)
Debug GetFontBackColorForEditorSelection(#Editor)
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
EventGadget = EventGadget()
If EventGadget = #Button
Font_BackColor = GetFontBackColorForEditorSelection(#Editor)
If Font_BackColor
SetGadgetColor(#Editor,#PB_Gadget_FrontColor,$000000) ; alle farben zurück stellen
MessageRequester("","")
Delay(500)
SendMessage_(GadgetID(#Editor), #EM_SETSEL, Len(GetGadgetText(#Editor)), 0) ; alles markieren
SetFontBackColorForEditorSelection(#Editor,Font_BackColor)
EndIf
EndIf
EndIf
If Event = #PB_Event_CloseWindow
Break
EndIf
ForEver
raus, aber google.
https://www.google.de/search?num=100&si ... _BACKCOLOR