Aktuelle Zeit: 09.07.2020 10:12

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
 Betreff des Beitrags: Problem Gelöst ! Hintergrund Farbe ermitteln Editor Text
BeitragVerfasst: 01.05.2016 18:56 
Offline
Benutzeravatar

Registriert: 11.07.2007 22:28
EDIT: Problem gelöst ! Code geht, hab nur einen kleinen Fehler drin gehabt im Test Fetzen unten.

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:
  #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


Die Hintergrund Farbe einer selektion zu ermitteln, aber irgendwie bleibt
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:
 
  ;/ 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 


ps: Die Boardsuche schmeist kein einziges Ergebniss für CFM_BACKCOLOR
raus, aber google.

https://www.google.de/search?num=100&si ... _BACKCOLOR


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye