Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi button löschen mit nebenwirkungen (https://www.delphipraxis.net/62623-button-loeschen-mit-nebenwirkungen.html)

Julzn 7. Feb 2006 11:30


button löschen mit nebenwirkungen
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich schon wieder...

also hier tritt n kleines prob auf:

Delphi-Quellcode:
  begin
  for loop1:=0 to ((n2*d2)-1) do Feld[loop1].Free;

  {Felder erstellen}
  for loop1:=0 to (d1-1) do {y}
      for loop2:=0 to (n1-1) do {x}
      begin
      i:=(loop2+(loop1*n1));
      Feld[i]:= TSpeedButton.Create(Form1);

      with Feld[i] do begin
           parent:= Form1;
           Name:= 'Feld'+IntToStr(i);
           Top:= 40+(loop1*25);
           Left:= 20+(loop2*25);
           Width:= 25;
           Height:= 25;
           Tag:=i;
           Feld[i].Glyph.LoadFromFile('feld.bmp');
           end;

      end;
  n2:=n1;
  d2:=d1;

  end;
wenn erst viele buttons existieren, zb 9x9 un danach wenige erstellt werden, zb5x5 dann hat der
irgendwelche fehler beim anzeigen. siehe bild im anhang.

an was liegt das??

marabu 7. Feb 2006 11:36

Re: button löschen mit nebenwirkungen
 
Vielleicht hilft es schon, wenn du die Form nach dem Löschen neu zeichnen lässt.

Delphi-Quellcode:
begin
  for loop1:=0 to ((n2*d2)-1) do Feld[loop1].Free;

  Application.ProcessMessages;

  {Felder erstellen}
  for loop1:=0 to (d1-1) do {y}
      for loop2:=0 to (n1-1) do {x} 
// ...
Grüße vom marabu

Julzn 7. Feb 2006 11:40

Re: button löschen mit nebenwirkungen
 
ne, des funktioniert nich so ganz...

marabu 7. Feb 2006 11:46

Re: button löschen mit nebenwirkungen
 
Dann musst du nachhelfen - z.B. mit Form1.Invalidate().

marabu

Julzn 7. Feb 2006 11:47

Re: button löschen mit nebenwirkungen
 
hey, es klappt. THX :thumb:

aber kannst mir vllt kurz noch erklären was des genau bewirkt??

marabu 7. Feb 2006 11:55

Re: button löschen mit nebenwirkungen
 
Du vernichtest in der ersten Schleife visuelle Komponenten und baust in der zweiten Schleife wieder welche auf - ohne einmal Luft zu holen. Dadurch bringst du den nachrichten-basierten window painter aus dem Tritt. Mit Invalidate() sagst du Bescheid, dass er sobald wie möglich die Form neu malen soll.

marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:01 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