Sziasztok!
Adott a programomban egy ScrollBox és azon egy TImage komponens. Ezen a TImage-en szeretnék még egy rácsot is rajzolni egy gomb bekapcsolt állapotától függően.
Ehhez most a gomb lenyomásakor, tehát futásidőben létrehozok egy másik TImage-et és annak vásznán rajzolnám ki a rácsot, de nem jelenít meg semmit.
Ez a rácskép létrehozásának kódja:
procedure TForm1.racsmutatoGombMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if tvracsmutat=true then
begin
tvracsmutat:=false;
if vantvracs=true then
begin
FreeAndNil(tvracskep);
vantvracs:=false;
end;
end
else
begin
tvracsmutat:=true;
if vantvracs=false then
begin
tvracskep:=TImage.Create(self); //A self helyett próbálkoztam itt más objektumnevekkel is.
tvracskep.Parent:=tvScrBox;
tvracskep.Left:=0;
tvracskep.Top:=0;
tvracskep.width:=terepVaszon.width;
tvracskep.height:=terepVaszon.Height;
tvracskep.OnPaint:=@tvracsrajzolas;
end;
tvracskep.invalidate;
vantvracs:=true;
end;
end;
ez pedig maga a rajzolás:
procedure TForm1.tvracsrajzolas(Sender: TObject);
var vszvonalhely,fugvonalhely: word;
begin
fugvonalhely:=csempeszel;
vszvonalhely:=csempemag;
brush.color:=clBlue;
while fugvonalhely<terepVaszon.width do //Próbaképpen függőleges vonalak:
begin
tvracskep.canvas.line(fugvonalhely,0,fugvonalhely,terepVaszon.height);
inc(fugvonalhely,csempeszel);
end;
end;
Próbáltam TBitmap-ot, de az sem jelenített meg semmit, ráadásul annak Left és Top tulajdonságai sincsenek, hogy a TImage-re igazíthassam.
Aztán kipróbáltam a TPaintBox-ot, ami már megjelenítette, de teljesen takarja az alatta levő képet, és Transparent tulajdonsága sincs, hogy ne takarja.
Esetleg még a TGrid jöhetne szóba, de nem tudom, hogyan használjam és egyáltalán jó-e az én problémám orvoslására.
Hogyan oldható meg végül is ez a kérdés? Fontos, hogy a rács ne legyen része a ScrollBox-on levő TImage-nek, mert azt a képet a rács nélkül kellene elmenteni, tehát a rács külön komponens legyen, ami csak rajta van egy külön rétegként.