Hallo,
ich habe die Suche bereits bemüht, konnte aber wirklich nichts zu meiner Frage erfahren.
Ich habe in meinem Programm ein Stringgrid eingebaut, welches eine Matrix mit 9x9 Feldern darstellt. Ich möchte bestimmte Felder des Stringgrids (Spalte, Zeile) mit einer Farbe füllen.
Die Kombinationen hole ich mir aus einer Datei zeilenweise. So bekomme ich nacheinander Werte z.B. 1,1 und im nächsten Durchlauf 1,2. Nun sollen die Felder Spalte1, Zeile1 und Spalte1, Zeile2 gefärbt werden. Das Färben klappt auch, nur wird beim nächsten Durchlauf das vorige Feld wieder mit weiß gefüllt.
Ich möchte, dass beim Aufrufen von StringGrid1DrawCell nur das eine angegebene Feld gefüllt wird.
Kann mir jemand helfen?
Vielen Dank
Delphi-Quellcode:
var d,t: Single;
procedure TForm1.Button1Click(Sender: TObject);
var temp, dStr, tStr:
String;
i: Integer;
begin
OpenDialog1.Filter:='
csv files (*.csv)|*.CSV';
OpenDialog1.InitialDir:=appPath;
if (OpenDialog1.Execute)
then
begin
myFindSource:=OpenDialog1.FileName;
end
else
begin
myFindSource:='
';
Exit;
end;
Richedit2.Lines.LoadfromFile(OpenDialog1.Filename);
for i:=0
to RichEdit2.Lines.Count-1
do
begin
temp:=RichEdit2.Lines.Strings[i];
dStr:=Copy( Explode('
;', temp, 20)[14],2,3);
d:=StrToFloat(dStr);
tStr:=Copy( Explode('
;', temp, 20)[15],2,3);
t:=StrToFloat(tStr);
StringGrid1.Repaint;
end;
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (ACol = t)
AND (ARow = d)
then
begin
StringGrid1.Canvas.Brush.Color:= clPurple;
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextOut(Rect.Left+2, Rect.Top+2, StringGrid1.Cells[ACol, ARow]);
end;
end;