StringGrid Zeilen einfärben

Für Fragen von Einsteigern und Programmieranfängern...
Benutzeravatar
theo
Beiträge: 10859
Registriert: Mo 11. Sep 2006, 19:01

Re: StringGrid Zeilen einfärben

Beitrag von theo »

aldi hat geschrieben:Hallo Theo,
erstmal vielen Dank, aber ich suche was anderes!

Möchte im StringGrid unterschiedliche Zeilen einfärben, dieses ist aber von bestimmten
Voraussetzungen abhängig!
Und was hindert dich daran? Du hast aCol, aRow, und aState zur Verfügung.

Code: Alles auswählen

procedure TForm1.StringGrid1PrepareCanvas(sender: TObject; aCol, aRow: Integer;
  aState: TGridDrawState);
var Sg: TStringGrid;
begin
    Sg:=(Sender as TStringGrid);
    if (ARow=2) and (ACol>0) then Sg.Canvas.Brush.Color:=clFuchsia;
    if (ARow=4) and (ACol>0) then Sg.Canvas.Brush.Color:=clOlive;
end; 
Dateianhänge
sgrid.png
sgrid.png (2.91 KiB) 1519 mal betrachtet

aldi
Beiträge: 59
Registriert: Sa 26. Apr 2014, 14:03

Re: StringGrid Zeilen einfärben

Beitrag von aldi »

Hallo,

wie man bestimmt schon gemerkt hat, ist das alles neu für mich.
Die ersten zwei Farben (Anwendungen funktionieren) die dritte nicht ?
Also bei "Eingang" muss sich die Zeile gelb färben! Bei "in Bearbeitung" muss sich die Zeile clFuchsia färben usw.
Dann füge ich über einen Button Text ins StringGrid zu, "alles normal" dann über einen anderen Button (wird später gelöscht) zentriert sich der Text ? Wieso ? der Aufbau ist der gleiche?

Muss noch viel lernen, ich verstehe es halt noch nicht :cry: :cry:
Dateianhänge
neuGrid.png
Zuletzt geändert von aldi am Do 1. Mai 2014, 14:47, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10859
Registriert: Mo 11. Sep 2006, 19:01

Re: StringGrid Zeilen einfärben

Beitrag von theo »

aldi hat geschrieben: ich verstehe halt nicht :cry: :cry:
Ich verstehe dich auch nicht. :wink:

ErnstVolker
Beiträge: 351
Registriert: Di 17. Feb 2009, 10:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: StringGrid Zeilen einfärben

Beitrag von ErnstVolker »

Hallo,

ich hänge mich mit meiner Frage mal hier an.

Wie verbindet man "StringGrid1PrepareCanvas" mit "StringGrid1DblClick"? Ich möchte die Zeile im Stringrid in der ich gerade bin per Doppelklick einfärben. Und das soll dann eingefärbt bleiben.

Also alle Zeilen die Doppelt gecklickt werden sollen eingefärbt werden, der Rest ursprünglich bleiben.

Wie macht man das?

Vielen Dank und schönenen Abend!

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: StringGrid Zeilen einfärben

Beitrag von af0815 »

ErnstVolker hat geschrieben: Mo 10. Jun 2024, 22:49 Also alle Zeilen die Doppelt gecklickt werden sollen eingefärbt werden, der Rest ursprünglich bleiben.

Wie macht man das?
Das Problem dabei ist, wie merkst du dir was wie eingefärbt werden soll. Hast du eine Zelle mit einem Inhalt den du kennst, kannst du anhand des Inhalts einfärben. Ansonsten muss du dir eine Möglichkeit suchen, wie du das über einen Refresh vom Grid dir merken kannst. Das heisst also, du änderst den Inhalt der Zelle und färbst entsprechend der Zelle ein oder du muss dir das extern merken. Ausser reichen dir die States aus dem aState.

TGridDrawState = set of (gdSelected, gdFocused, gdFixed, gdHot, gdPushed);

Daher wenn, dir gdSelected als einzige Information ausreicht, so geht das. WIe gesagt, willst du mehr, so musst du dich um das Kriterium selbst kümmern. Mehr als die Info welche Zelle das gerade ist, hast du einfach nicht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

icho2099
Beiträge: 47
Registriert: Fr 21. Feb 2020, 19:17
OS, Lazarus, FPC: Win10/64
CPU-Target: 64 Bit
Wohnort: Osterholz-Scharmbeck

Re: StringGrid Zeilen einfärben

Beitrag von icho2099 »

Daher wenn, dir gdSelected als einzige Information ausreicht, so geht das. WIe gesagt, willst du mehr, so musst du dich um das Kriterium selbst kümmern. Mehr als die Info welche Zelle das gerade ist, hast du einfach nicht.
Da bietet sich das Tag geradezu an, fristet sonst ein eher stilles Dasein.

Benutzeravatar
theo
Beiträge: 10859
Registriert: Mo 11. Sep 2006, 19:01

Re: StringGrid Zeilen einfärben

Beitrag von theo »

Ich hab's jetzt nicht ausprobiert, aber ich kann mir vorstellen, dass die TGridDrawStates automatisch zurückgesetzt werden.
Also für "alle Zeilen die Doppelt gecklickt werden sollen eingefärbt werden " würde das meiner Vermutung nach nicht gehen.
Ich würde eine externe Liste führen, oder eine andere Komponente nehmen.

Antworten