TextFarbe einer einzelnen Stringgridzelle ändern
-
- Beiträge: 28
- Registriert: Di 8. Mär 2016, 11:46
- OS, Lazarus, FPC: Windows10
- CPU-Target: Win64
TextFarbe einer einzelnen Stringgridzelle ändern
Hallo,
Ich habe ein mit grünen Zeichen gefülltes Stringgrid.
Nun will ich mit Mygrid.cells [Col,row]:= ' S '
diesen Text in der einzelnen Zelle Rot einfärben, die vielen andern bleiben Grün.
Wie kriege ich den Farbwechsel hin?
Ich habe ein mit grünen Zeichen gefülltes Stringgrid.
Nun will ich mit Mygrid.cells [Col,row]:= ' S '
diesen Text in der einzelnen Zelle Rot einfärben, die vielen andern bleiben Grün.
Wie kriege ich den Farbwechsel hin?
Re: TextFarbe einer einzelnen Stringgridzelle ändern
Mit dem OnPrepareCanvas-Ereignis. Das wird aufgerufen, wenn die Zelle fertig ist zum Neuzeichnen. Brush, Font, Textstyle usw. sind gesetzt. Du hast hier die Möglichkeit diese Properties für bestimmte Zellen anzupassen:
Code: Alles auswählen
procedure TForm1.StringGrid1PrepareCanvas(Sender: TObject; aCol, aRow: Integer;
aState: TGridDrawState);
begin
if TStringGrid(Sender).Cells[ACol, ARow] = ' S ' then
TStringGrid(Sender).Canvas.Brush.Color := clRed; // Grün für alle anderen Zellen ist bereits gesetzt.
end;
Re: TextFarbe einer einzelnen Stringgridzelle ändern
PrepareCanvas ist sehr gut.
Er will aber eigentlich die Font Farbe setzen, also so:
Er will aber eigentlich die Font Farbe setzen, also so:
Code: Alles auswählen
TStringGrid(Sender).Canvas.Font.Color := clRed;
-
- Beiträge: 28
- Registriert: Di 8. Mär 2016, 11:46
- OS, Lazarus, FPC: Windows10
- CPU-Target: Win64
Re: TextFarbe einer einzelnen Stringgridzelle ändern
Das sieht plausibel aus. Ich werde an der Stelle weiter forschen; auf Anhieb ist mir es noch nicht gelungen.
Vorerst :Vielen Dank
Vorerst :Vielen Dank
Re: TextFarbe einer einzelnen Stringgridzelle ändern
Was kann denn hier misslingen? Sorry, wenn das arrogant klingt - ist nicht so gemeint. Aber: Grid im Formular-Designer auswählen, zum Objekt-Inspektor gehen, Seite "Events", runterscrollen zu "OnPrepareCanvas", auf den '...' Button in dieser Zeile klicken und im Code-Editor den gewünschten Code eintragen.wernkrau38 hat geschrieben: Di 14. Feb 2023, 16:51 Das sieht plausibel aus. Ich werde an der Stelle weiter forschen; auf Anhieb ist mir es noch nicht gelungen.
- Dateianhänge
-
prepareCanvas.zip
- (2 KiB) 54-mal heruntergeladen
-
- Beiträge: 28
- Registriert: Di 8. Mär 2016, 11:46
- OS, Lazarus, FPC: Windows10
- CPU-Target: Win64
Re: TextFarbe einer einzelnen Stringgridzelle ändern
jetzt habe ichs anhand Deines Beispiels begriffen.
Vielen Dank!
Vielen Dank!
-
- Beiträge: 28
- Registriert: Di 8. Mär 2016, 11:46
- OS, Lazarus, FPC: Windows10
- CPU-Target: Win64
Re: TextFarbe einer einzelnen Stringgridzelle ändern
jetzt bin ich doch wieder hängengeblieben:
Anbei mein Source-Code.
Mit dem Button kann ich die Werte für Row und Col übernehmen. Im Grid werden sie aber nur eingetragen wenn ich auf das Grid mit der Maus tippe; d.h. wenn das Grid den Focus bekommt wird es über Canvas neu gezeichet.
mein Ziel ist aber, daß das sofort geschieht.
Hast Du da eine Idee?
Anbei mein Source-Code.
Mit dem Button kann ich die Werte für Row und Col übernehmen. Im Grid werden sie aber nur eingetragen wenn ich auf das Grid mit der Maus tippe; d.h. wenn das Grid den Focus bekommt wird es über Canvas neu gezeichet.
mein Ziel ist aber, daß das sofort geschieht.
Hast Du da eine Idee?
- Dateianhänge
-
project1.zip
- (2.19 KiB) 51-mal heruntergeladen
Re: TextFarbe einer einzelnen Stringgridzelle ändern
Mach noch:
nach dem Setzen der Werte. Das veranlasst das Neuzeichnen.
Code: Alles auswählen
StringGrid1.Invalidate;