Delphi: creazione & amp; visualizzazione di TImage su FormCreate
Domanda
Essendo un principiante, ho appena ricevuto la mia prima domanda ( Delphi: TImage.Create causa la violazione di accesso ) per imbattersi immediatamente in un nuovo problema:
procedure TSelectorForm.FormCreate(Sender: TObject);
var
Loop: Byte;
begin
for Loop := 1 to 10 do
begin
ArrayOfImages[Loop] := TImage.Create(SelectorForm);
MainForm.MyImageList.GetBitmap(Loop - 1, ArrayOfImages[Loop].Picture.Bitmap);
ArrayOfImages[Loop].Top := ...
ArrayOfImages[Loop].Left := ...
ArrayOfImages[Loop].Enabled := True;
ArrayOfImages[Loop].Visible := True;
end;
end;
Quando visualizzo questo modulo
procedure TMainForm.MyImageClick(Sender: TObject);
begin
SelectorForm.Visible := True;
end;
le immagini non sono visibili. Cosa sto sbagliando?
Voglio ringraziare tutti per il loro consiglio. Speriamo che porre domande elementari aiuti gli altri a evitare di farle in futuro :-)
Soluzione
Imposta la proprietà Parent di tutti i componenti dell'immagine sul modulo che li contiene.
procedure TSelectorForm.FormCreate(Sender: TObject);
var
Loop: Byte;
begin
for Loop := 1 to 10 do
begin
ArrayOfImages[Loop] := TImage.Create(SelectorForm);
MainForm.MyImageList.GetBitmap(Loop - 1, ArrayOfImages[Loop].Picture.Bitmap);
ArrayOfImages[Loop].Top := ...
ArrayOfImages[Loop].Left := ...
ArrayOfImages[Loop].Visible := True;
ArrayOfImages[Loop].Parent := SelectorForm;
end;
end;
Altri suggerimenti
Suppongo che tu debba aggiungere i singoli componenti TImage
all'elenco di controllo del modulo corrente?
Ciò significa che solo perché stai creando un TImage
nel codice non significa che sia effettivamente aggiunto ai controlli del modulo. Dovrai farlo nel codice - tuttavia, non tocco Delphi da un paio d'anni, quindi non posso fornire alcun codice in questo momento.