Entwickler-Ecke

Sonstiges (Delphi) - Fensterinhalt beim Verschieben anzeigen


Dargor - Fr 13.09.02 12:37
Titel: Fensterinhalt beim Verschieben anzeigen
Wie kann ich es anstellen, dass der Inhalt eines Fensters/Forms beim Verschieben weiterhin angezeigt wird (und nicht nur die graue Umrandung).
Ich will einen Effekt erzielen, wie man ihn z.B. unter WinME über
Eigenschaften von Anzeige -> Effekte -> Fensterinhalt beim Ziehen anzeigen erreichen kann.


DeCodeGuru - Fr 13.09.02 13:49

Hi,

das kannste in der Registry einstellen.

Schlüssel:
HKEY_CURRENT_USER\Control Panel\Desktop\DragFullWindows

P.S.: Wenn der Wert auf 1 steht, dann wird der Inhalt angezeigt. Wenn er auf 0 steht, dann nicht.


Dargor - Fr 13.09.02 14:07

Hm? Ich habe mich da wohl etwas kompliziert ausgedrückt...
Ich meinte natürlich, wie ich das in einer Delphi-App realisieren kann (Delphi 5).
Die Einstellung bei "Eigenschaften von Anzeige" / Registry-Einstellung bezieht sich ja afaik nur auf die Explorerfenster.

Ich hoffe, dass das jetzt etwas verständlicher ist... :wink:


Tino - Fr 13.09.02 15:19

Dargor hat folgendes geschrieben:
Die Einstellung bei "Eigenschaften von Anzeige" / Registry-Einstellung bezieht sich ja afaik nur auf die Explorerfenster.

Nein, diese Einstellung bezieht sich auf alle Anwendungsfenster. Jedefalls bei mir.

Letztendlich solltest Du diese Einstellung nicht ändern. Denn schließlich möchte der Anwender selbst entscheiden ob der Fensterinhalt beim ziehen angezeigt wird oder nicht!

Gruß
TINO


Dargor - Fr 13.09.02 16:19

@Tino:
Hast recht! Hab's gerade mal probiert.

[Ironie-Modus]
*neueFrageindenRaumwirft*
Hat hier irgendjemand den Quellcode zu Windows? Will wissen, wie MS das gemacht hat 8)
Ich würde dieses *Feature* sehr gern explizit in mein Proggy einbauen.
[/Ironie-Modus]

Hab auch schon auf http://www.torry.net nachgeschaut, aber nix diesbezüglich gefunden. Kennt jemand noch eine weitere große VCL-/Tipps-Sammlung?


Delete - Fr 13.09.02 18:09

Beim Verschieben den Inhalt ständig neu zeichnen lassen.
Aber ich glaube, da kommst du besser weg, wenn dein Programm z.B. die entsprechende Option im System selbst aktiviert. :wink:


Dargor - Fr 13.09.02 19:54

Wie würde das mit dem ständig neuzeichnen funktionieren?
Habe es schon versucht - leider vergeblich, indem ich
dem OnMouseDown-Ereignis MousePressed:=true;,
dem OnMouseUp-Ereignis MousePressed:=false; und
dem OnMouseMove-Ereignis folgenden Code zugeordnet habe
if MousePressed then Repaint;

Aber wie gesagt, es hat nicht funktioniert. (Habs auch mit Refresh probiert.)


Delete - Sa 14.09.02 08:46

Warum MousePressed? Du bewegst doch ein Fenster, oder?
Eine Ansatzmöglichkeit wären dann die Nachrichten WM_MOVE, bzw. WM_MOVING, und WM_SIZING (falls man dein Fenster auch vergrößern und verkleinern kann).