Delphi-PRAXiS

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.

semo 1. Jun 2008 22:01

Re: Form Refresh ?
 
Die Komponente ist aus dem jahr 2004.
Wenn du unter Vista programmierst kann es doch gut sein, dass die Komponente dafür nicht entwickelt wurde?!

Frage ist nun was du in deinem Programm bezwecken willst.

Delphiturbo 2. Jun 2008 09:04

Re: Form Refresh ?
 
Zitat:

Zitat von M. Hassmann
Die Komponente ist aus dem jahr 2004.
Wenn du unter Vista programmierst kann es doch gut sein, dass die Komponente dafür nicht entwickelt wurde?!
Frage ist nun was du in deinem Programm bezwecken willst.

>> Die Komponente ist aus dem jahr 2004
Und warum bei JvPanel genauso ist !?
>> wenn du unter Vista programmierst kann es doch gut sein
Leider kann ich nicht, da heute fast 95% xp verwenden

Ich habe versehe immer noch nicht, warum beim Verschieben der Form gehen die Flecken
weg :gruebel: . Ich habe die Tipps von Leute gemacht wie ohne Erfolg

semo 2. Jun 2008 09:08

Re: Form Refresh ?
 
also nutzt du XP - schon mal gut zu wissen :-)
hast du dir mal das demoprojekt zu dem tr-panel angesehen?

mkinzler 2. Jun 2008 09:11

Re: Form Refresh ?
 
Zitat:

also nutzt du XP - schon mal gut zu wissen Smile
Der Te könnte endlich mal der Bitte nachkommen, Informationen zum OS bzw. die verwendete D-Version in seinem Profil anzugeben

Macci 2. Jun 2008 17:17

Re: Form Refresh ?
 
Also, so sollte es defintiv gehen:

Füge diese Code irgendwo am Anfang ein.

Delphi-Quellcode:
procedure InvalidateAll(Control:TWinControl);
var i:integer;
begin
InvalidateRect(Control.Handle,nil,True);
for i:=0 to Control.ControlCount - 1 do
    if Control.Controls[i] is TWinControl then
        InvalidateAll(TWinControl(Control.Controls[i]));
end;
Und dann da, wo du die Flecken weg machen willst:

Delphi-Quellcode:
InvalidateAll(Self);
Probiers aus !!

Viele Grüsse,
Macci

Delphiturbo 2. Jun 2008 17:56

Re: Form Refresh ?
 
>> InvalidateAll(Self);
Mit deiner Funktion kommen leider noch mehr Flecken !
Der Trns-Panel wird komplett grau !

rollstuhlfahrer 2. Jun 2008 18:16

Re: Form Refresh ?
 
versuch mal, bei dem Transparent-Panel die Transparenz auszuschalten und dann wieder an. (Eigentlich ist dies hier keine Ratestunde)

rollstuhlfahrer

Der.Kaktus 2. Jun 2008 18:25

Re: Form Refresh ?
 
Zitat:

Zitat von rollstuhlfahrer
versuch mal, bei dem Transparent-Panel die Transparenz auszuschalten und dann wieder an. (Eigentlich ist dies hier keine Ratestunde)

rollstuhlfahrer

richtig;-)

Delphiturbo 2. Jun 2008 19:09

Re: Form Refresh ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Bild im Anhang

lbccaleb 2. Jun 2008 19:34

Re: Form Refresh ?
 
genau den gleichen thread gab es schon mal, schau mal hier ;-)

TTrsPanel

Delphiturbo 11. Jun 2008 15:53

Re: Form Refresh ?
 
Was ist jetzt bemerkt habe, der Panel verliert seine Transparenz nicht. Gott sei Dank, aber trotzdem ist auch schlecht, da der TrsPanel immer noch der Verursacher ist.
Die Farbe, was ich sehe, wenn das Problem eintrit, ist nicht von dem transparenten Panel, sondern von der Form :gruebel:

Die Form darf auch nicht durch den Panel gesehen werden, da unter dem Panel bereits der Webbrowser liegt dann kommt ein anderer Panel und ganz unten ist die Form

Wer kann mir sagen warum wird die Form durch den Trs-Panel gesehen, obwohl zwischen Trs-Panel und Form schon mehrere Objekte sich befinden ?

Ich kann kauf verstehen :wall:

xy124 11. Jun 2008 16:13

Re: Form Refresh ?
 
vieleicht geht es auch mit panel.refresh/repaint...

rollstuhlfahrer 11. Jun 2008 19:08

Re: Form Refresh ?
 
Zitat:

Zitat von Delphiturbo
Die Form darf auch nicht durch den Panel gesehen werden, da unter dem Panel bereits der Webbrowser liegt dann kommt ein anderer Panel und ganz unten ist die Form

Wer kann mir sagen warum wird die Form durch den Trs-Panel gesehen, obwohl zwischen Trs-Panel und Form schon mehrere Objekte sich befinden ?

Zu der ersten Zeile: warum diese Struktur (Form -> Panel -> Webbrowser -> Panel)?? Das wirkt etwas unschlüssig.
Zu der zweiten Zeile: ich würde nicht wie mein Vorposter nur das Panel aktualisieren, sondern alles in der Reihenfolge Form, Panel, Webbrowser, TrsPanel

Für was brauchst du das TrsPanel eigentlich über einem Webbrowser :?: :gruebel:

rollstuhlfahrer


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 Uhr.

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