Autor Beitrag
mexx2k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 60



BeitragVerfasst: Mo 04.02.08 11:05 
Kleine Frage:

Habe ein Panel(GrPhMainPanel) welches gefüllt ist, mit diversen anderen Objekten.
Dieses Panel soll so etwas wie eine Zeile darstellen, welche ich mehrmals kopieren und unter einander auf auflisten will.

Ich habe mir das etwa so vorgestellt:

ausblenden Delphi-Quelltext
1:
GrPhPanel : array of TAPanel;					


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
  iCountPanel := 5;                             // Anzahl der Panels
  iStartTop := GrPhMainPanel.Top;               

  setLength(GrPhPanel, iCountPanel);            // Die Größe des Arrays
  for i := 0 to iCountPanel - 1 do begin
    iStartTop := iStartTop+160;

    GrPhPanel[i] := TAPanel.Create(self);        
    GrPhPanel[i] := GrPhMainPanel;              // Hier kopiere ich die Eigenschaften des fertigen Panels
    GrPhPanel[i].Top := iStartTop;              // Hier wird der einzige Unterschied zu den anderen Panels definiert
  end;


Wundert euch nicht über das 'A' im TAPanel, aber wir haben das Objekt abgeleitet.

Mein Problem dabei ist, dass er nur das Objekt anzeigt, welches als letztes erstellt worden ist.
Habe ich da irgendwas übersehen?

Danke für eure Hilfe
hazard999
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 162

Win XP SP2
VS 2010 Ultimate, CC.Net, Unity, Pex, Moles, DevExpress eXpress App
BeitragVerfasst: Mo 04.02.08 11:22 
Hallo,

ich würd mich mal mit Pointern beschäftigen.

Du überschreibst den Pointer auf dein neues Panel mit dem von GrPhMainPanel

Siehe:

ausblenden Delphi-Quelltext
1:
GrPhPanel[i] := GrPhMainPanel;					


Was du brauchst ist Assign;

ausblenden Delphi-Quelltext
1:
GrPhPanel[i].Assign(GrPhMainPanel);					


r u

René

_________________
MOV EAX, Result;MOV BYTE PTR [EAX], $B9;MOV ECX, M.Data;MOV DWORD PTR [EAX+$1], ECX;MOV BYTE PTR [EAX+$5], $5A;MOV BYTE PTR [EAX+$6], $51;MOV BYTE PTR [EAX+$7], $52;MOV BYTE PTR [EAX+$8], $B9;MOV ECX, M.Code;MOV DWORD PTR [EAX+$9], ECX
mexx2k Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 60



BeitragVerfasst: Mo 04.02.08 11:48 
Hab das Ganze jetzt über ein Frame gemacht:

ausblenden Delphi-Quelltext
1:
2:
uses
  Windows, ..., frameGP;


ausblenden Delphi-Quelltext
1:
2:
var
  GrPhPanel  :  TFrame1;


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure THomeForm.CreateGPhPanel();
var
  i,iCountPanel,iStartTop: Integer;
begin

  iCountPanel := 5;     // Anzahl der Panels
  iStartTop := 20;

  //setLength(GrPhPanel, iCountPanel);
  for i := 0 to iCountPanel - 1 do begin
    GrPhPanel        :=  TFrame1.Create(self);
    GrPhPanel.Parent := ScrollBox3;
    GrPhPanel.Top    := iStartTop;
    GrPhPanel.Left   := 220;
    GrPhPanel.Name   := 'Frame_'+IntToStr(i);
    iStartTop := iStartTop+160;
  end;
end;



So funktioniert es einwandfrei ;)