Seite 1 von 1

EditorGadget Hintergrundfarbe einer einzelnen Zeile setzen.

Verfasst: 10.11.2008 18:41
von Fairman68
Hallo, alle zusammen, :)

ich habe da eine Frage, ist es möglich eine einzelne Zeile in einem Editorgadget die Hintergrundfarbe zu ändern.

Warum? In der Zeile in der sich der Cursor befindet sollte zum Bsp. Rot hinterlegt werden, so wenn ich rechts den Balken runterziehe die Zeile sofort zu erkennen ist.

Ich bedanke mich schonmal im voraus für euere Hilfe.
:praise:

Verfasst: 10.11.2008 19:34
von Fluid Byte
Es sollte mit dem Scintilla Gadget funktionieren. Soweit ich weiß basiert das aber auch auf einem RichEdit Control deshalb wird es wahrscheinlich irgendwie möglich sein. Ich habe jetzt aber auf die Schnelle keine gute Lösung gefunden.

Verfasst: 10.11.2008 19:51
von ts-soft
> Soweit ich weiß basiert das aber auch auf einem RichEdit Control
Klar, das RichEdit auf MacOS und Linux hab ich aber noch nicht gesehen :wink:
Es unterstützt viele Messages, die dem RichEdit gleichen, um Anpassungen
einfacher zu machen, mehr nicht

Verfasst: 11.11.2008 00:47
von sibru
Unter Windows geht´s hiermit:
(Basis aus´m CodeArchiv... oder hier aus´m Formul?)

Code: Alles auswählen

;Modul      Editor_Select  Version 1.0 vom 24.02.2007
;
;Funktion:  Text-Bereich im Editor-Gadget selektieren (=wird blau)
;
;Aufruf:    Editor_Select(Gnr, x1, y1, X9, y9)
;           Gnr = #GadGet-Nr des Editors
;           x1  = Zeichen-Nr (1..LineLen) des 1. zu selektierenden Zeichens
;           y1 =  Zeilen-Nr (0..TextLen) des Selektions-Begines
;           x9 =  Zeichen-Nr (1..LineLen) des letzten zu selektierenden Zeichens
;                 wenn -1, so wird automatisch bis ZeilenEnde selektiert
;           y9 =  Zeilen-Nr (0..TextLen) des Selktions-Endes
;                 wenn -1, so wird automatisch bis TextEnde selektiert
;           
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
EndProcedure


;Modul      Editor_HgCol  Version 1.0 vom 24.02.2007
;
;Funktion:  selektierten Editor-Bereich mit HinterGrund-Farbe darstellen
;
;Aufruf:    Editor_HgCol(Gnr, Farbe)
;           Gnr  = #GadGet-Nr des Editors
;           Farbe= RBG-Farbe des Hintergrundes
;           
Procedure Editor_HgCol(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(GNR), #EM_SETCHARFORMAT, #SCF_SELECTION, @format)
EndProcedure


Editor_Select(#EditGad,1, ZeilenNr, -1, ZeilenNr) ;wählt eine komplette Zeile aus
Editor_HgCol(#EditGad,RGB_Farbe)  ;set HinterGrundFarbe des ausgewählten Bereiches
Editor_Select(#EditGad,0, 0, 0, 0) ;Selektion (=Auswahl) reseten

Verfasst: 11.11.2008 13:38
von Fluid Byte
Er will eine ganze Zeile einfärben, nicht nur ausgewähltren Text.

Verfasst: 11.11.2008 14:53
von Radiate
Wie wäre es mit:

» Leg dir ne Schriftart an (Arial, Tahoma, ...)
» Verpass ihr ne Farbe (RGB(255,255,255))
» Leg das als LoadFont() an
» Dann belegst du den letzten Eintrag deines EditorGadgets mit diesem Font
» Fertig!