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 Frage zu: Fenster ohne Titelzeile verschieben (https://www.delphipraxis.net/48704-frage-zu-fenster-ohne-titelzeile-verschieben.html)

Flocke 29. Jun 2005 10:22


Frage zu: Fenster ohne Titelzeile verschieben
 
Frage an Luckie:

Ich habe gerade den Code aus Fenster ohne Titelzeile verschieben in ein Splashscreen eingebaut (wird beim Programmstart angezeigt, kein Rahmen). So kann man das Fenster zur Seite schieben, falls ein Fehler passiert - sonst ist nämlich immer die Fehlerbox verdeckt und der Anwender meint, das Programm sei abgestürzt.

Wozu überprüfst du in WMNCHitTest, ob ein Control getroffen wurde?

Delphi-Quellcode:
ControlAtPos(Point(Message.xPos, Message.yPos), True, True) <> nil
Wenn ich das drin lasse, dann passiert bei mir garnichts. Wenn ich es rausnehme, dann kann ich im gesamten Formular klicken und verschieben.

Müsste der Test nicht andersherum lauten? Ich meine ...

Delphi-Quellcode:
ControlAtPos(Point(Message.xPos, Message.yPos), True, True) = nil
... damit man dem Control nicht den Mausklick wegnimmt?

TeronG 29. Jun 2005 10:25

Re: Frage zu: Fenster ohne Titelzeile verschieben
 
Zitat:

Zitat von Flocke
Frage an Luckie:

http://www.delphipraxis.net/template...an/icon_pm.gif an Luckie :gruebel: :zwinker:

toms 30. Jun 2005 04:02

Re: Frage zu: Fenster ohne Titelzeile verschieben
 
Zitat:

Müsste der Test nicht andersherum lauten? Ich meine ...

ControlAtPos(Point(Message.xPos, Message.yPos), True, True) = nil
genau, so müsste es lauten.

DevilsCamp 19. Aug 2005 13:55

Re: Frage zu: Fenster ohne Titelzeile verschieben
 
Es gibt noch eine zweite Möglichkeit:

Delphi-Quellcode:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
const
  SC_DRAGMOVE = $F012;
begin
  if Button = mbleft then
  begin
    ReleaseCapture;
    Form1.Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
  end;
end;


Dies kann für jede Komponente angewendet werden, die ein OnMouseDown-Ereignis besitzt.

SirThornberry 19. Aug 2005 13:59

Re: Frage zu: Fenster ohne Titelzeile verschieben
 
@DevilsCamp: Ich würde auch diese Lösung bevorzugen (schließlich sind wir hier ja auch im VCL Thread). Zur Ergänzung noch: Wenn auf dem Splashscreen ein Bild (z.B.: TImage) ist musst das ganze natürlich auch in das OnMouseDown von dem TImage (bzw. die gleiche procedure zuweisen)

DevilsCamp 19. Aug 2005 14:24

Re: Frage zu: Fenster ohne Titelzeile verschieben
 
und natürlich bei jeder anderen Komponente auch.

Deshalb wollte ich eine Komponente schreiben, die dies für mich erledigt, allerdings schaffe ich das nur für das Hauptformular :(

Für Anregungen bin ich offen ;)


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