Einzelnen Beitrag anzeigen

Anubarak

Registriert seit: 23. Okt 2011
2 Beiträge
 
#1

Objektgröße zur Laufzeit ändern

  Alt 28. Okt 2011, 15:18
hallo liebe Delphi Freunde..

seit einiger Zeit versuche ich eine art Spoiler für Delphi zu erstellen, bisher war ich dabei nicht sehr erfolgreich also habe ich versucht es so gut wie möglich "nachzustellen" indem ich eine Pagecontrol ganz klein gemacht habe, sodass man lediglich die Caption sieht. Jetzt habe ich versucht per OnMouseEnter und OnMouseLeave Event die größe der PageControl zu ändern, dass sie eine vorher im OI festgelegte größe erreicht.

Eigentlich alles gar kein Problem, nur sieht das wirklich schei**e aus, wenn die Pagecontrol mit einen mal größer wird. Deswegen wollte ich die Pagecontrol in einer schleife größer machen lassen ungefähr so hier
Code:
procedure TForm1.PageControl1MouseEnter(Sender: TObject);
var i : integer;
begin
with sender as TPageControl do
     begin
       for i := Constraints.MinHeight to Constraints.MaxHeight do
           begin
             Height:=Height+1;
             width:=width+1;
             refresh;
             sleep(10);
             end;
     end;
end;
Problem hierbei: ohne refresh ändert sich die größe des Objektes erst wenn die schleife durchlaufen war also immernoch ruckartig was unschön aussieht. Mit einen refresh besteht das Problem, dass das OnMouseLeave event direkt gestartet wurde, sodass sich die PageControl direkt wieder verkleinert...
Außerdem entstehen beim verkleinern des Objektes "schwarze Linien" bzw ein schwarzer Hintergrund nachdem es verkleinert wurde, der erst weg geht, wenn die Procedure endet.
Eine Maus position abfrage wollte ich auch erst versuchen und dann darüber bestimmen ob die Maus drüber ist oder eben nicht, da ich allerdings 10 verschiedene pagecontrols habe wäre das etwas aufwendig

Ich hoffe sehr, dass mir jemand helfen kann
vielen dank
  Mit Zitat antworten Zitat