bence image koymalısın 2 tane biri normal biride değişecek renk 2 tane resim oluşturup imagelere atamalaısın image1 adını normalresim, image 2 adını degisenresim olarak değiştir. ve çizdiğin resimleri imagelere ata.
procedure Tanaform.BASLIKYAZ(UZERINDE, basili: boolean; resim: TImage; baslik: string);
var
RE: TRECT;
stl: TTextStyle;
begin
RE := resim.ClientRect;
if basili then
RE := Rect(RE.Left + 2, RE.Top + 2, RE.Right + 2, RE.Bottom + 2);
if UZERINDE then
RE := Rect(RE.Left + 1, RE.Top + 1, RE.Right + 1, RE.Bottom + 1);
resim.Canvas.Font.Quality := fqCleartype;
resim.Canvas.Font.Name := 'CALIBRI';
resim.Canvas.Font.Size := 9;
resim.Canvas.Font.Style := [fsBold];
resim.Canvas.Font.Color := clblack; // yazı rengi sen değişkenlede yapabilirsin
resim.Canvas.Brush.Style := bsClear;
stl.Alignment := taCenter;
stl.Wordbreak := True;
stl.Layout := tlCenter;
stl.SingleLine := False;
resim.Canvas.TextRect(RE, 0, 0, baslik, stl);
end;
procedure Tanaform.Imageresimkoy(resim:Timage;hangiresim:string);
begin
if hangiresim='normal' then
resim.picture:= normalresim.picture // assing de yapabilirsin // bitmap da atayabilirsin önemli olan mantığı anlaman
else if hangiresim='degisen' then
resim.picture:= degisenresim.picture;
baslikyaz(false,false,resim,resim.hint); //başka başlık yazdırsın diye başlığı burda hint olarak yazdırdık istersen baslıkyaz prosedurunden de yazdırrısın
end;
panelleri oluşturduğun prosedure sanırım create de oluşturuyorsun şunları yaz
var
i,leftt,topp:integer;
hst:Timage;
begin
leftt:=10;
topp:=10;
for i=1 to 1216 do //1215 tane panelim var demiştin
begin
case i of // yan yana 30 tane imageden sonra alt satıra geçsin sen sığdığı kadar yaparsın
1:leftt:=10;
31: begin topp:=topp+55; leftt:=10; end; // 55 i yüksekliği 50 verdiğim için yazdım sen yüksekliğe göre ayarlarsın
61:begin topp:=topp+55; leftt:=10; end;
91:begin topp:=topp+55; leftt:=10; end; // çoğaltmalısın bunu elindeki image kadar
else
leftt:=leftt+125; // uzunluğu da 120 verdiğim için 125 verdim 5 piksel ara olsun diye
end;
hst:=TImage.Create(self);
hst.Parent:=panelkenarli2;
hst.Name:='resim'+inttostr(i);
hst.hint:=inttostr(i); // burada image üzerinde görülecek olan sayı yı yazdırırsın
hst.Tag:=i; // bizim için krter olacaktır
hst.Width:=120; // boyutları salladım
hst.Height:=50; // yüksekliği salladım
hst.Left:=leftt;
hst.Top:=topp;
hst.Transparent:=True;
hst.Stretch:=true;
Imageresimkoy(hst,'normal');
end;
end;
/// tüm resimleri ve captionlarını oluşturduk şimdi hangi resmi aradığımızı bulalım bunu diğer programdan aldığın veriyi kontrol ettiğin yere yazmalısın
for i := 0 to anaform.ComponentCount - 1 do //anaformdaki component sayısı
begin
if (anaform.Components
is Timage) and ( anaform.Components.name<>'normalresim') and ( anaform.Components.name<>'degisenresim')
then // eğer component Timage ise ve önceden resim yükledğimiz imageler değilse
begin
if gelen string yada integer = anaform.Components.tag yada hint then
begin
Imageresimkoy(Timage(anaform.Components),'degisen'); // gerekli imageye resim ata
end;
end;
end;
deneyip çalıştırma fırsatım olmadı hata olan yer olursa müsait bir zamanda düzenlerim . Ama en azından sana bir fikir vermiştir. kolay gelsin birde i harfim zor basıyor kodlarda eksik çıkabilir i harfine dikkat edersin 