EditorGadget Hintergrundfarbe einer einzelnen Zeile setzen.

Für allgemeine Fragen zur Programmierung mit PureBasic.
Fairman68
Beiträge: 12
Registriert: 06.01.2006 20:00
Wohnort: Weiden i. d. Opf.

EditorGadget Hintergrundfarbe einer einzelnen Zeile setzen.

Beitrag 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:
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
sibru
Beiträge: 265
Registriert: 15.09.2004 18:11
Wohnort: hamburg

Beitrag 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
Bild Bild
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Er will eine ganze Zeile einfärben, nicht nur ausgewähltren Text.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Radiate
Beiträge: 114
Registriert: 10.02.2008 16:40
Kontaktdaten:

Beitrag 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!
» PureBasic 4.30
» AMD Athlon II X2 240 | 2048 RAM | Win XP SP 3
» Projekt(e): Fusion (eingestellt), SAS (eingestellt), Moviez
Antworten