create i runtime

Tags:    delphi

Jeg har en integer-variabel med navnet "Number".

ud fra den skal jeg have lavet et antal TPanel, som skal placeres i en TScrollBox med navnet "Scroller".

Hvordan gøres det?



5 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Jeg har en integer-variabel med navnet "Number".

ud fra den skal jeg have lavet et antal TPanel, som skal placeres i en TScrollBox med navnet "Scroller".

Hvordan gøres det?


<pre>
var
i: integer;
begin
for i := 0 to Number do
with TPanel.Create(Scroller) do
begin
Parent := Scroller;
Width := 100;
Height := 100;
Left := 10;
end;
</pre>

Noget i den stil burde gøre det.



okay, det var parent jeg manglede.

men nu vil jeg gerne kunne komme til at redigere mine TPanel senere, så jeg vil gerne have gemt dem i en variabel. Da jeg ikke ved hvor mange der er, vil jeg gerne have dem i et array.



okay, det var parent jeg manglede.

men nu vil jeg gerne kunne komme til at redigere mine TPanel senere, så jeg vil gerne have gemt dem i en variabel. Da jeg ikke ved hvor mange der er, vil jeg gerne have dem i et array.


Det sker faktisk automatisk. Du kan bruge ComponentCount og Components[] property'en for at tilgå din paneler. Noget i stil med nedenstående burde virke:

<pre>
var
x: integer;
begin
for i := Scroller.ComponentCount -1 downto 0 do
begin
if (Scroller.Components[x] is TPanel) then
TPanel(Scroller.Components[x]).Caption := 'blabla';
end;
end;
</pre>

[Redigeret d. 10/02-04 13:57:55 af Lasse M]



okay, det var parent jeg manglede.

men nu vil jeg gerne kunne komme til at redigere mine TPanel senere, så jeg vil gerne have gemt dem i en variabel. Da jeg ikke ved hvor mange der er, vil jeg gerne have dem i et array.

Det sker faktisk automatisk. Du kan bruge ComponentCount og Components[] property'en for at tilgå din paneler. Noget i stil med nedenstående burde virke:

<pre>
var
x: integer;
begin
for i := Scroller.ComponentCount -1 downto 0 do
begin
if (Scroller.Components[x] is TPanel) then
TPanel(Scroller.Components[x]).Caption := 'blabla';
end;
end;
</pre>

[Redigeret d. 10/02-04 13:57:55 af Lasse M]


ligge en retelse for lasse M:

<pre>
var
x: integer;
begin
for x := Scroller.ComponentCount -1 downto 0 do
begin
if (Scroller.Components[x] is TPanel) then
TPanel(Scroller.Components[x]).Caption := 'blabla';
end;
end;
</pre>

i skulle bytes ud med x



ja ja, jeg har fattet det :)



t