私は次の画像で見ることができるように、TScrollBoxサーフェイス上で実行時にカスタムのTPanelをいくつか作成しようとしています。 ダイナミックなTPanelの動的なTImage?
は、私は次のコードを使用していますこれを取得するには、それが正常に動作します。今var
pan: array of TPanel;
maxp, i, x, y: Integer;
...
maxp := 10;
SetLength(pan, maxp);
for i := 1 to maxp do begin
// x is correct value; doesn't cause problem
// y is correct value; doesn't cause problem
pan[i-1] := TPanel.Create(form1);
with pan[i-1] do begin
Width := 100;
Height := 150;
Top := x * 151;
Left := y * 101;
Parent := ScrollBox1;
end;
end;
、私は同じインデックス(IMG [0] - >パン[0]、IMG [1] - >パン[1]、など)を持つすべてのTPanelにTImageのオブジェクトを置くために問題を抱えています。以下の画像を見て:
同じロジックを使用して、私はTImageのだがwはありません成功/を作成しようとしました。
私はこのコードを使用しており、何が問題なのか理解できません。それは私にとってとてもシンプルに見えますが、どういうわけか、それは期待される効果をもたらしません。
var
pan: array of TPanel;
img: array of TImage;
maxp, i, x, y: Integer;
...
maxp := 10;
SetLength(pan, maxp);
SetLength(img, maxp);
for i := 1 to maxp do begin
// x is correct value; doesn't cause problem
// y is correct value; doesn't cause problem
pan[i-1] := TPanel.Create(form1);
with pan[i-1] do begin
Width := 100;
Height := 150;
Top := x * 151;
Left := y * 101;
Parent := ScrollBox1;
end;
img[i-1] := TImage.Create(form1);
with img[i-1] do begin
Width := 98;
Left := 1;
Height := 148;
Top := 1;
// in original code next line had img[0]. which caused problem
Picture.LoadFromFile('some_image_file');
Parent := pan[i-1];
end;
end;
は、どういうわけかそれは最初TPanelに同じ場所にすべてのTImageのオブジェクトを配置(パン[0])。それはParent := pan[i-1];
と言われていますが、何らかの理由で常にTImageをpan [0]に入れているので、私にとっては混乱します。私はすべてのfor-loopサイクルの後に何が起こっているのかを見るためにブレークポイントを使ってみました。最後にApplication.ProcessMessagesが追加されました。実際には10個の異なるイメージが作成されますが、pan [0]に配置されます。もちろん、最後にはpan [0]に最後にロードされたイメージが表示されます。
私の質問は、ダイナミックなTPanel(同じ配列インデックスを持つ)ごとに1つの動的なTImageを作成する方法ですか?
SOLVED!
SetBounds' –
@DavidHeffernan 'への単一の呼び出しでこれを行うためにおそらくよりよい申し訳ありませんが、私は' SetBounds(1、1、98、148)を使用して試した; 'と' SetBouds(X * 151 、y * 101,100,150) 'を使用します。効果は同じです。 – Wh1T3h4Ck5
もちろん効果は同じです。私はそれがあなたの質問に答えることを意味しませんでした。ちょうどそれはクリーナーです。 –