Delphi - Kép megjelenítése a TStringGrid tetszőleges cellájában

forráskód letöltése
Ebben a cikkben annak járunk utána, hogy hogyan lehet egy tetszőleges képet a TStringGrid egy tetszőleges cellájában megjeleníteni.

Valamint az is kiderül a példaprogramból, hogy miként lehet a TStringGrid egyetlen celláját ReadOnly-ként működtetni, miközben a többi továbbra is szerkeszthető marad. Ebben a cikkben annak járunk utána, hogy hogyan lehet egy tetszőleges képet a TStringGrid egy tetszőleges cellájában megjeleníteni.

Valamint az is kiderül a példaprogramból, hogy miként lehet a TStringGrid egyetlen celláját ReadOnly-ként működtetni, miközben a többi továbbra is szerkeszthető marad.

Ehhez a legegyszerűbb út, ha a TStringGird mellett felteszünk egy TImage komponenst is a Form-ra. Ennél a Visible property-t hamisra állítjuk. Ezzel elértük, hogy futási időben nem fog látszani ez a kép.

A TImage-be betölthetünk egy tetszőleges képet, akár szerkesztési időben, akár futási idő alatt is.

Hozzuk létre a TStringGrid OnDrawCell eseményét. Ez akkor jön létre, mikor a komponens cellái kirajzolásra kerülnek.

Itt paraméterként (Row, Col) kapjuk meg, hogy aktuálisan melyik cella kerül kirajzolásra. Ezt felhasználva eldönthetjük, hogy mikor kell a képet megjelenítnünk. Mellékelt példában a TStringGrid harmadik oszlopába és második sorába tesszük.

Ha felhasználjuk az OnSelectCell eseményt, akkor elérhetjük, hogy az általunk kiválasztott cella, esetleg cellák ne legyenek szerkeszthetők.

Hasonlóan az OnDrawCell eseményhez itt is egy egyszerű vizsgálattal eldönthetjük, hogy melyik az aktuális cella. Ha az Options property-ben a goEditing konstans is szerepel, akkor a TStringGrid tartalma szerkeszthető, különben nem.

Mivel az OnSelectCell esemény akkor jön létre, mikor a felhasználó az egyik cellából átlép a másikba, így itt engedélyezhetjük, illetve letilthatjuk a TStringGrid szerkesztését.