Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Form Refresh ? (https://www.delphipraxis.net/114851-form-refresh.html)

Delphiturbo 1. Jun 2008 19:30


Form Refresh ?
 
Hallo,

ich habe einen Transparenten Panel auf meine Form
Der Trs-Panel lässt Flecken bei:
-Programm minimieren und maximieren
-Oder wenn ich den Trs-Panel invisible und visible mache
-oder Wenn ein Fenster drauf (auf Trs-Panel) kommt
und und ...

Nur bis heute habe ich Zufall bemerkt, dass diese Spuren und Flecken vom Trs-Panel sofort weg gehen , wenn ich die Form (Mein Programm) verschiebe :wink:

Das gibt mir eine Hoffnung um diese Flecken zu verhindern
Momentan lasse ich meine Form beim Maximieren z.B. hin und her um ein Pixel bewegen
um diese Flecken zu löschen

Vielleicht hat jemand mit Refresh noch eine bessere Lösung ?

Bitte nicht so denken:
Delphi-Quellcode:
Form1.Refresh; // macht noch mehr Flecken
Form1.Repaint; // macht auch noch mehr Flecken !!!
Was passiert noch beim Form-Verschieben ?
Das konnte die Lösung sein :gruebel:

semo 1. Jun 2008 20:11

Re: Form Refresh ?
 
Um was für eine Komponente handelt es sich denn dabei? (Selbstgeschrieben oder kommerzielle Komponnete einer bestimmten Firma, Freeware, Open Source Porjekt...)

Ein bissl Code wär enicht schlecht, denn beim Repaint oder Refresh des Forms wird nix anderes gemacht als neu zu zeichnen. Es wundert mich daher, dass noch mehr "Flecken" entstehen.

Macci 1. Jun 2008 20:14

Re: Form Refresh ?
 
Versuchs mal mit

InvalidateRect
(siehe Hilfe)

rollstuhlfahrer 1. Jun 2008 20:30

Re: Form Refresh ?
 
oder nimm
SendMessage(handle, WM_Paint, 0, 0);

rollstuhlfahrer

Delphiturbo 1. Jun 2008 21:00

Re: Form Refresh ?
 
mit
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
und
invalidaterect(windowfromdc(0), nil, false);
Haben nichts gebracht

>> um was für eine Komponente handelt es sich denn dabei?
Ich habe sowohl eine freeware (Trs-Panel) als auch von JvPanel getestet

Meine Frage warum wird meine Form wieder schön und ohne Flecken, wenn ich die Form bewege ?
Darum habe ich mit Refresh und repaint versucht.
Was passiert beim Bewegen einer Form außer Refresh und Repaint ?

semo 1. Jun 2008 21:09

Re: Form Refresh ?
 
Delphi-Quellcode:
procedure TControl.Refresh;
begin
  Repaint;
end;
Delphi-Quellcode:
procedure TWinControl.Repaint;
begin
  Invalidate;
  Update;
end;
Wo gibt es denn die Komponente Trs-Panel zum Download (URL)?
Oder kannst Du diese als Zip anhängen?

Delphiturbo 1. Jun 2008 21:22

Re: Form Refresh ?
 
TransparentPanel - Freeware with sources:
http://www.zecos.com/delphi/components.html

Macci 1. Jun 2008 21:29

Re: Form Refresh ?
 
Versuchs doch mal mit EraseBackground, also

InvalidateRect(handle, nil, True);

Wenn du meinst, es liegt am Verschieben, versuchs mal so:

MoveWindow(handle, left, top, width, height, True);

Delphiturbo 1. Jun 2008 21:37

Re: Form Refresh ?
 
Zitat:

Zitat von Macci
Wenn du meinst, es liegt am Verschieben, versuchs mal so:
MoveWindow(handle, left, top, width, height, True);

Das ist mein alte Lösung, was ich gerne nicht machen möchte
Ich verschiebe meine Form um ein Pixcel Form1.left:=Form1.left+1
das ist aber keine alternative Lösung
oder was meinst Du mit :
MoveWindow(handle, left, top, width, height, True);

Macci 1. Jun 2008 21:51

Re: Form Refresh ?
 
Im Grunde genau wie deine alte Lösung, nur dass sich die Form dabei NICHT unsauber um einen Pixel verschiebt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 Uhr.
Seite 1 von 3  1 23      

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