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 :-)

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top