Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Vykreslovaní obrazku ve StringGridu

Tak jsem vyzkoušel ten DrawCell a spíš než úspěch se do toho začínám záplatovat.
Funguje to, ale spíš jsem špatně pochopil princip a funkčnost procedury DrawCell.
Pokud chci umístit obrázek jen do 1 buňky tak OK.

procedure TForm1.Button1Click(Sender: TObject);
begin
x:=1;
y:=1;
Canvas.StretchDraw(StringGrid1.CellRect(x,y),Image 1.Picture.Graphic);
StringGrid1.SetFocus;
end;
//------------------------------------------------ ---------------------------
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (ACol=x) and (ARow=Y) then
StringGrid1.Canvas.StretchDraw(Rect,Image1.Picture .Graphic);
end;
//------------------------------------------------ -------------------------------
Co potřebuji já.
Mam StringGrid jen se 2 sloupci(ID +1)
Ve sloupci 1 mam odkazy na FTP servry.
Program si pravidelně zjišťuje pomoci pingu zda je FTP dostupné a pokud ne, tak chci aby zobrazil u toho FTP v ID sloupci ikonu s vykřičníkem.

Pokud jsem to dobře pochopil tak procedura DrawCell běží furt dokola nezávisle na programu a furt dokola vybarvuje StringGrid.
Tak mně napadlo vytvořit ještě 1 pracovní buňku do které se bude zapisovat zda je FTP dostupné nebo ne pomoci 0 a 1 a v DrawCell to testovat a vybarvovat.
A funguje to.

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[2,2]:= '1';
StringGrid1.Cells[2,6]:= '1';
end;
//------------------------------------------------ -------------------------------------------------- --
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
for i := 1 to StringGrid1.RowCount do
begin
if StringGrid1.Cells[2,i]= '1' Then
begin
StringGrid1.Canvas.StretchDraw(StringGrid1.CellRec t(0,i),Image1.Picture.Graphic);
end;
//------------------------------------------------ ---------------------------------------

Když však při běhu programu zapíšu do 3 sloupce další 1 tak se nic neděje.
//----------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
begin
StringGrid1.Cells[3,8]:= '1';
end;
//---------------------------------------------
Proč ????

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny