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.

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
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!