Chce by pokolorowane wczesniej korki w stringGrid zostały wyczyszczone z koloru. W tym celu napisalem taka procedure do On Draw Cell. Jednak Nie działa ona poprawnie? Pokolorowane Komórki zachowują kolor nie czyszczą się. Możecie sprawdzić co jest źle? Chyba warunek po if?
ColorCol1 2 3 itd ColorRow 1 2 3 ...itd to sa wspolrzedne pokolorowanych komorek ktore maja byc wyczyszczone
if (ACol = ColorCol) and (ARow = ColorRow) or (Acol=ColorCol1)and(ARow=ColorRow1) or
(Acol=ColorCol2)and(ARow=ColorRow2) or ((Acol=ColorCol3)and(ARow=ColorRow3))or
((Acol=ColorCol4)and(ARow=ColorRow4))
or((Acol=ColorCol5)and(ARow=ColorRow5))or((Acol=ColorCol6)and(ARow=ColorRow6))or
((Acol=ColorCol7)or(ARow=ColorRow7))or ((Acol=ColorCol8)and(ARow=ColorRow8))
or ((Acol=ColorCol9)and(ARow=ColorRow9))or((Acol=ColorCol10)and(ARow=ColorRow10))
then
begin
StringGrid1.Canvas.Brush.Color := clWindow;// kolor pedzla ClWindow czyli taki jaki jest domyslny kolor komorek w STringGrid
StringGrid1.Canvas.FillRect(Rect);
S := StringGrid1.Cells[ACol, ARow];
StringGrid1.Canvas.TextOut(Rect.Left + 3, Rect.Top + 3,S);
end;
end;
Wywołanie odwołania (StringGrid1.Repaint) znajduje się w procedurze przycisku służącego do czyszczenia Memo i StrinGrid
//czyszczenie Memo1 i StrinGrid1 i 2
procedure TForm1.Button6Click(Sender: TObject);
var i : byte;
begin
begin
Memo1.Clear; //czyszczenie calego memo
LabeledEdit1.Clear;
LabeledEdit2.Clear;
LabeledEdit3.Clear;
LabeledEdit4.Clear;
LabeledEdit5.Clear;
end;
begin
//czyszczenie macierzy 1
for i:=0 to stringgrid1.ColCount do
begin
stringgrid1.Cols[i].Clear;
end;
for i:=0 to stringgrid1.RowCount do
begin
stringgrid1.Rows[i].Clear;
end;
end;
begin
//czyszczenie macierzy 2
for i:=0 to stringgrid2.ColCount do
begin
stringgrid2.Cols[i].Clear;
end;
for i:=0 to stringgrid2.RowCount do
begin
stringgrid2.Rows[i].Clear;
end;
end;
end;