also ich bekomme es einfach nicht hin, dass wenn ich die Höhe meiner Demo Komponente in einer Schleife verändere die Komponente neu gezeichnet wird.
der gesamte Code ist:
Code: Alles auswählen
%u7b TMyPanel %u7d
TMyPanel=class%u28TPanel%u29
private
procedure AnimatedCollapse%u28var size%u3ainteger%u29;
procedure Click; override;
end;
var
Form1%u3a TForm1;
mypanel%u3aTMyPanel;
implementation
%u7b TForm1 %u7d
procedure TForm1.FormCreate%u28Sender%u3a TObject%u29;
begin
mypanel%u3a=TMyPanel.Create%u28self%u29;
with mypanel do
begin
parent%u3a=self;
Height%u3a=300;
end;
end;
procedure TForm1.FormDestroy%u28Sender%u3a TObject%u29;
begin
mypanel.free;
end;
%u7b TMyPanel %u7d
procedure TMyPanel.AnimatedCollapse%u28var size%u3ainteger%u29;
var step%u3areal;
originalSize%u3ainteger;
begin
originalSize%u3a=size;
step%u3a=2;
while size>0 do
begin
if size-round%u28step%u29 >= 0 then
size%u3a=size-round%u28step%u29
else
size%u3a=0;
Caption%u3a=IntToStr%u28size%u29;
Update;
Paint;
Application.ProcessMessages;
end;
end;
procedure TMyPanel.Click;
begin
AnimatedCollapse%u28self.Height%u29;
inherited Click;
end;
Habt ihr eine Idee?
EDIT: Irgendwie liegt das an der Variablenübergabe.... kann ich keine Properties als var übergeben?
hmmm so klappt das auch nicht:
Gruß Alexander
Code: Alles auswählen
procedure TMyPanel.AnimatedCollapse%u28var size%u3aPInteger%u29;
var step%u3areal;
originalSize%u3ainteger;
begin
originalSize%u3a=size^;
step%u3a=2;
while size^>0 do
begin
if size^-round%u28step%u29 >= 0 then
size^%u3a=size^-round%u28step%u29
else
size^%u3a=0;
Caption%u3a=IntToStr%u28size^%u29;
Update;
Paint;
Application.ProcessMessages;
end;
end;
procedure TMyPanel.Click;
begin
AnimatedCollapse%u28%u40Height%u29; //Fehler
inherited Click;
end;
Ich muss doch irgendwie die Properties so übergeben können, dass ich nicht nur height sondern auch width übergeben kann.
Es kann doch wohl nicht sein dass ich den Code 2 mal schreiben muss....