Avatar billede dcgeek Nybegynder
20. februar 2005 - 20:49 Der er 1 løsning

Problem med Parent og FindComponent

Jeg har skrevet et program i Delphi hvor jeg opretter min egen Panel1 i runtime, og derefter en Button1, som jeg også laver i runtime, og så vil jeg sætte Button1's Parent til at være Panel1,
men af en eller anden mærkelig grund bliver Button1 ikke vist, hvis dens Parent ikke er blevet lavet under design time, hvorfor?

Her er koden:

//Opret Panel1:

TPanel.Create(self).Name := 'Panel1';

with TPanel(FindComponent('Panel1')) do
begin
  top := 88;
  left := 88;
  height := 88;
  width  := 88;
  Parent := self; //Har også prøvet med Parent := form1
end;

//Så oprettes Button1:

TPanel.Create(self).Name := 'Button1';

with TButton(FindComponent('Button1')) do
begin
  top := 88;
  left := 88;
  height := 88;
  width  := 88;
  Parent := TPanel(FindComponent('Panel1'));
end;

Det er ved
  Parent := TPanel(FindComponent('Panel1')); det går galt.

Når jeg kører den, vises Button1 ikke i Panel1, men hvis jeg laver Panel1 under design time, dvs. i Delphi, og skriver Parent := Panel1, så virker det fint nok.

Hvad er årsagen til det, og hvad er løsningen på problemet?
Avatar billede dcgeek Nybegynder
20. februar 2005 - 22:57 #1
Problem løst.

Løsning:
Sæt den Component der ikke kan vises, til BringToFront.

f.eks.:

TPanel.Create(self).Name := 'Button1';

with TButton(FindComponent('Button1')) do
begin
  top := 88;
  left := 88;
  height := 88;
  width  := 88;
  Parent := TPanel(FindComponent('Panel1'));
  BringToFront; //Den ny-oprettede Button1 bliver sat forrest og kan derfor ses.
end;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester