[gelöst] EditorGadget -> Formatierung funktioniert nicht mehr seit Umstellung auf PB 6.03 LTS

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
techniker
Beiträge: 184
Registriert: 27.01.2016 11:08
Wohnort: BY

[gelöst] EditorGadget -> Formatierung funktioniert nicht mehr seit Umstellung auf PB 6.03 LTS

Beitrag von techniker »

Hallo,

Seit dem Umstieg von PB 5.62 auf PB 6.03 LTS funktioniert die Formatierung des EditorGadget unter Windows nicht mehr.
Weiß zufällig jemand, warum? Und kennt ggf. auch einen Workaround?

PB 5.62

Code: Alles auswählen

  CompilerIf Not Defined(CFM_BACKCOLOR, #PB_Constant) 
    #CFM_BACKCOLOR =$4000000 
  CompilerEndIf 


Procedure SetColor(gadget.l, charstart.l, charend.l, fcolor.l, bcolor.l = #White, attrib.l = 0)
    ; attrib: #CFE_BOLD, #CFE_ITALIC, #CFE_UNDERLINE, #CFE_STRIKEOUT
Debug "SetColor("+Str(gadget)+", "+Str(charstart)+", "+Str(charend)+", "+Str(fcolor)+", "+Str(bcolor)+", "+Str(attrib)+")"
    
    Protected cf.charformat2\cbSize = SizeOf(charformat2)
    Protected sel.CHARRANGE
    
    SendMessage_(GadgetID(gadget), #EM_EXGETSEL, 0, sel)
    cf\dwMask = #CFM_COLOR|#CFM_BACKCOLOR|#CFM_BOLD|#CFM_ITALIC|#CFM_UNDERLINE|#CFM_STRIKEOUT
    cf\dwEffects = attrib
    cf\crTextColor = fcolor
    cf\crBackColor = bcolor
    SendMessage_(GadgetID(gadget), #EM_SETSEL, charstart, charend)
    SendMessage_(GadgetID(gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @cf)
    SendMessage_(GadgetID(gadget), #EM_SETSEL, sel\cpMin, sel\cpMax)
  EndProcedure
  
#editor = 100
  
If OpenWindow(0, 100, 200, 500, 500, "PB 5.62 (x86)", #PB_Window_SystemMenu)

  EditorGadget(#editor, 10, 10, 300, 25)
  SetGadgetText(#editor, "Dies ist ein Testtext")
  SetColor(#editor, 3, 12, #Red, #Black, #CFM_BOLD)
  
  Repeat
    Event = WaitWindowEvent()

    If Event = #PB_Event_CloseWindow  ; If the user has pressed on the close button
      Quit = 1
    EndIf

  Until Quit = 1
  
EndIf
Ergebnis:
Bild

PB 6.03 LTS:

Code: Alles auswählen

  CompilerIf Not Defined(CFM_BACKCOLOR, #PB_Constant) 
    #CFM_BACKCOLOR =$4000000 
  CompilerEndIf 


Procedure SetColor(gadget.l, charstart.l, charend.l, fcolor.l, bcolor.l = #White, attrib.l = 0)
    ; attrib: #CFE_BOLD, #CFE_ITALIC, #CFE_UNDERLINE, #CFE_STRIKEOUT
Debug "SetColor("+Str(gadget)+", "+Str(charstart)+", "+Str(charend)+", "+Str(fcolor)+", "+Str(bcolor)+", "+Str(attrib)+")"
    
    Protected cf.charformat2\cbSize = SizeOf(charformat2)
    Protected sel.CHARRANGE
    
    SendMessage_(GadgetID(gadget), #EM_EXGETSEL, 0, sel)
    cf\dwMask = #CFM_COLOR|#CFM_BACKCOLOR|#CFM_BOLD|#CFM_ITALIC|#CFM_UNDERLINE|#CFM_STRIKEOUT
    cf\dwEffects = attrib
    cf\crTextColor = fcolor
    cf\crBackColor = bcolor
    SendMessage_(GadgetID(gadget), #EM_SETSEL, charstart, charend)
    SendMessage_(GadgetID(gadget), #EM_SETCHARFORMAT, #SCF_SELECTION, @cf)
    SendMessage_(GadgetID(gadget), #EM_SETSEL, sel\cpMin, sel\cpMax)
  EndProcedure
  
#editor = 100
  
If OpenWindow(0, 100, 200, 500, 500, "PB 6.03 LTS (x86)", #PB_Window_SystemMenu)

  EditorGadget(#editor, 10, 10, 300, 25)
  SetGadgetText(#editor, "Dies ist ein Testtext")
  SetColor(#editor, 3, 12, #Red, #Black, #CFM_BOLD)
  
  Repeat
    Event = WaitWindowEvent()

    If Event = #PB_Event_CloseWindow  ; If the user has pressed on the close button
      Quit = 1
    EndIf

  Until Quit = 1
  
EndIf
Ergebnis:
Bild
Zuletzt geändert von techniker am 21.05.2024 22:37, insgesamt 1-mal geändert.
Never change a running system - Never run a changed system!
(PB 6.20 LTS [x86])
Benutzeravatar
techniker
Beiträge: 184
Registriert: 27.01.2016 11:08
Wohnort: BY

Re: EditorGadget -> Formatierung funktioniert nicht mehr seit Umstellung auf PB 6.03 LTS

Beitrag von techniker »

Und schon hab ich eine Lösung gefunden.
Folgende Message an das EditorGadget direkt nach dem erstellen senden:

Code: Alles auswählen

SendMessage_(GadgetID(#editor), #EM_SETTEXTMODE, #TM_RICHTEXT, 0)
Never change a running system - Never run a changed system!
(PB 6.20 LTS [x86])
stevie1401
Beiträge: 700
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: [gelöst] EditorGadget -> Formatierung funktioniert nicht mehr seit Umstellung auf PB 6.03 LTS

Beitrag von stevie1401 »

Gibt es sowas auch für Linux?
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Antworten