Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - schleifenproblem


piffy - Di 21.09.10 10:43
Titel: schleifenproblem
Guten Tag

ich haben ein program mit vielen panels und ich möchte die position von ihnen in zwei array schreiben.
was ich versucht habe aber nicht geht ist folgendes:

for i := 1 to 50 do
begin
x_arr[i] := paneli.left;
y_arr[i] := paneli.top;

das panel"i" mag er nicht.


2te frage am rande
kann man wärend ein program läuft ein neues panel erzeugen, wenn man vorher einen button mit z.B. creat.panel oder so ähnlich erstellt???


mkinzler - Di 21.09.10 11:31

Wenn die Panels panel1 usw. heissen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var 
  pan: TPanel;
  ...
  for i := 1 to 50 do
  begin
    pan := ( FindComponent( 'panel'+IntToStr(i) as TPanel);
    x_arr[i] := pan.left;
    y_arr[i] := pan.top;
    ...


bummi - Di 21.09.10 11:36


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
type
  TArr=Array[1..50of TRect;
var
 Arr:TArr;
 p:TPanel;
 i:Integer;
begin
for i := 1 to 50 do
begin
  p := TPanel(FindComponent('Panel' + IntToStr(i)));
  if Assigned(p) then arr[i] := p.BoundsRect;

end
end;


piffy - Di 21.09.10 11:51

vieln dank

die zeile " pan := TPanel(FindComponent('Panel' + IntToStr(i)));" hat mir gefehlt.
jetzt gehts :D


Andreas L. - Di 21.09.10 13:23

user profile iconpiffy hat folgendes geschrieben Zum zitierten Posting springen:

kann man wärend ein program läuft ein neues panel erzeugen, wenn man vorher einen button mit z.B. creat.panel oder so ähnlich erstellt???



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
var
  p: TPanel;
begin
  //Panel erstellen
  //Wenn als Owner Self angegeben wird, 
  //wird das Panel beim zerstören der Form automatisch freigegeben. 
  //Wenn du nil übergibst, musst du das Panel spätestens 
  //beim Beenden des Programms manuell mit .Free oder FreeAndNil(Panel); freigeben.
  p := TPanel.Create(Self);

  //Panel einer Form zuweisen
  p.Parent := Form1; 

  //Weitere Eigenschaften setzen...
  p.Caption := 'Mein Titel';
  p.Left := 100;
  //...
end;