Einzelnen Beitrag anzeigen

FarAndBeyond
(Gast)

n/a Beiträge
 
#42

AW: Panel mit vielen Buttons baut sich langsam auf

  Alt 19. Mär 2016, 17:31
Zitat:
Danke, das stellt mein Problem super dar. Ich habe die Größe der Buttons angepasst, um meinen PC sichtbar zu beschäftigen, etwa 10000 Stück. Nicht, dass das irgendeinen Sinn hätte, aber man sieht deutlich, wie zunächst nichts passiert, während die Buttons erzeugt werden. Sobald das Label verschwindet, fangen die Buttons an, von unten nach oben zu erscheinen, anstatt alle gleichzeitig angezeigt zu werden.
Echt? Das ist ja schräg...
Kannst du mal das hier ausprobieren: das Sleep(50) kannst du ja auf 5 oder 10 stellen, falls überhaupt notwendig...
(Wenn ich den Code hier fahre, dann werden die einzelnen Buttons sichtbar und relativ langsam von links nach rechts bzw. oben nach unten aufgebaut ohne das Panel1.Show irgend eine Wirkung hätte... ist schließlich von Anfang an sichtbar).

Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
  Var
   I: Integer;
   B: TButton;
   myTop, myLeft, countLeft, countTop,
   btnWidth, btnHeight, maxLeft, panMaxH,
   panMaxW: Integer;
 Begin
  btnWidth := 100;
  btnHeight := 100;
  countLeft := 0;
  countTop := 1;
  myTop := 0;
  myLeft :=-100;

  Label1.Show;
  Panel1.Show;
  Form1.Update;
   panMaxH:= (Panel1.ClientHeight Div btnHeight);
   panMaxW:= (Panel1.ClientWidth Div btnWidth);

   For I:= 1 To (panMaxH*panMaxW)
   Do
    Begin
     myLeft:= myLeft +btnWidth;

      If (Panel1.ClientWidth-(countLeft*btnWidth)) < btnWidth
      Then
       Begin
        myLeft := 0;
        myTop := myTop +btnHeight;
        maxLeft := countLeft;
        countLeft:= 0;
        //countTop := countTop +1;
       End;

     B:= TButton.Create(Self);
     B.SetBounds(myLeft, myTop, btnWidth, btnHeight);
     B.Parent:= Panel1;

     countLeft:= countLeft +1;

     Sleep(50);
     Form1.Update;
    End;
  Label1.Hide;
 End;

End.
  Mit Zitat antworten Zitat