Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Komponente aus Form "sliden/fahren" lassen => flackert (https://www.delphipraxis.net/114071-komponente-aus-form-sliden-fahren-lassen-%3D-flackert.html)

---Bernhard--- 19. Mai 2008 12:25


Komponente aus Form "sliden/fahren" lassen => f
 
Hallo.

Habe in meinem Porgramm zwei Komponenten: eine Combobox zur Auswahl der Verbindung und eine Progressbar zur Anzeige des aktuellen Übertragungsfortschritts.
Beide Komponenten müssen jedoch nicht zur selben Zeit angezeigt werden, daher wollte ich für beide Komponenten die gleiche Position auf dem Formular verwenden und je nach Situation die benötigte Komponente einblenden.

Den Anzeigenstatus per visible umschalten gefiel mir nicht so sehr, daher wollte ich eine kleine Animation erstellen, dass die eine Komponente die andere aus dem Formular "schiebt". Soweit auch kein Problem, nur flackert das ganze übelst und auch mit doublebuffered konnte ich keine Verbesserung feststellen. :/

Hier mein bisheriger Code:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  i: Integer;
  max_width: Integer;
begin
  //combobox2.Parent:= Statusbar1; !!!

  form1.DoubleBuffered:= true;
  StatusBar1.DoubleBuffered:= true;
  combobox2.DoubleBuffered:= true;

  max_width:= combobox2.Width;

  for I := 0 to combobox2.Width do
  begin
    combobox2.Width:= max_width - i;
    combobox2.Left:= i;

    if i mod 5 = 0 then application.ProcessMessages;;
  end;
end;
Hoffe ihr könnt mir weiterhelfen. :)

Viele Grüße,
Bernhard

Billa 19. Mai 2008 12:42

Re: Komponente aus Form "sliden/fahren" lassen =&a
 
.. was hältst Du z.B. von der Verwendung einer Scrollbox?

Dunkel 19. Mai 2008 12:49

Re: Komponente aus Form "sliden/fahren" lassen =&a
 
Durch das
Delphi-Quellcode:
  if i mod 5 = 0 then application.ProcessMessages;
bekommt die Form und die sich darauf befindenden Controls nur alle 5 "Pixel-Ticks" (oder wie auch immer Du das nenne möchtest) die Message zum sich neu Zeichnen. Probier mal den Divisor des Modulo kleiner zu machen oder komplett raus zu lassen.

---Bernhard--- 19. Mai 2008 12:58

Re: Komponente aus Form "sliden/fahren" lassen =&a
 
Zitat:

Zitat von Dunkel
Probier mal den Divisor des Modulo kleiner zu machen oder komplett raus zu lassen.

Hi.
Hab ich bereits probiert, die modulo Abfrage war eigentl. nur zum Test zusätzlich drinn. Es ist jetzt auch nicht so, dass die Combobox aussieht als würde sie nach rechts "springen", sondern definitv ein flackern (ist zwischenzeitlich nicht sichtbar, ein/zwei Pixel später wieder sichtbar, dann wieder nicht, etc. )


@Billa:
Werde mir mal anschauen wie gut sich die Scrollbox für den Zweck eignet und in die Statusbar einbindbar ist.


Danke schonmal für eure Tipps. :)

---Bernhard--- 22. Mai 2008 18:33

Re: Komponente aus Form "sliden/fahren" lassen =&a
 
Hi.

Hab das ganze letztendlich über die Scrollbox gelöst. Nach etwas herumexperimentieren klappts eigentl. recht zufriedenstellend. Nur versteh ich nach wie vor nicht ganz, was die Scrollbox groß anders macht als ich, verschiebt letztendlich auch nur die Komponenten auf einem Art Panel :?:
Nunja, jedenfalls vielen Dank für den Tipp.

Bernhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz