Wie verschiebe ich ein randloses Formular? Ich habe versucht, im Internet zu suchen, aber nichts. Danke vielmals.Formular ohne Rahmen bewegen
Antwort
Sie können eine Form unter Verwendung eines beliebigen ziehen Steuerelement enthalten, einschließlich sich selbst.
Mithilfe des folgenden Beispiels können Sie ein Formular verschieben, indem Sie auf seine Zeichenfläche klicken und ziehen. Sie können das gleiche mit einem Panel auf dem Formular tun, indem Sie denselben Code in das MouseDown-Ereignis des Panels einfügen, mit dem Sie Ihre eigene Pseudo-Titelleiste erstellen können.
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
SC_DRAGMOVE = $F012;
begin
if Button = mbLeft then
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
end;
end;
Danke, dieser Code ist besser! –
Wenn Sie das Fenster mit der Maus ziehen möchten, können Sie die Nachrichtenbehandlung WM_NCHITTEST
überschreiben und HTCAPTION
für die Ziehregion zurückgeben. Die unten wird das Fenster innerhalb der oberen 30 Pixel für insance ziehen:
type
TForm1 = class(TForm)
private
protected
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
end;
..
procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
var
Pt: TPoint;
begin
Pt := ScreenToClient(SmallPointToPoint(Message.Pos));
if Pt.Y < 30 then
Message.Result := HTCAPTION
else
inherited;
end;
+1 dies ist der Weg es zu tun –
@ David: In letzter Zeit bin ich etwas skeptisch zu diesem Ansatz, weil Sie im Grunde sagen, das Betriebssystem * das gesamte Formular ist die Beschriftung des Fensters *, die möglicherweise nicht wirklich sei semantisch wahr. (Nun, in Sertacs Code sind vielleicht die ersten 30 Pixel * tatsächlich die Beschriftung, aber im Allgemeinen ist dies möglicherweise nicht wahr.) –
@andreas Haben Sie einen konkreten Grund, dies abzulehnen? Was sind die Schattenseiten? Dies ist der Standardansatz. –
- 1. spielen Rahmen Formular Probleme
- 2. Draggeable WPF-Fenster ohne Rahmen
- 3. HTML-Tabellenzellen ohne Rahmen
- 4. Rvalue Referenzen ohne std :: bewegen
- 5. Ajax Formular einreichen in yii Rahmen
- 6. Formular mit abgerundeten Rahmen in C#?
- 7. Erstellen von Tabellen ohne Rahmen
- 8. Bewegen Sprite in AndEngine Ohne digitalonscreencontrol
- 9. Hide navigation bar ohne scrollView zu bewegen
- 10. Change Sprite Anchorpoint ohne es zu bewegen?
- 11. Suchmuster hervorheben, ohne den Cursor zu bewegen
- 12. serialisieren ohne ein Formular?
- 13. Dropzonejs ohne Formular
- 14. FileSystemWatcher.SynchronizingObject ohne ein Formular
- 15. Login-Formular ohne ssl
- 16. Datei-Upload ohne Formular
- 17. ActiveX-Steuerelement ohne Formular
- 18. Formular ohne Aktualisierung senden
- 19. Ohne interne Header aus Rahmen Schirm Kopf
- 20. Run Aurelia Rahmen ohne NodeJS und JSPM
- 21. Rahmen google_app_id ohne google_play_services.json oder Gradle
- 22. Finden verschachtelten Arrays ohne Aggregation Rahmen
- 23. SWT: Wie erstelle ich eine Gruppe ohne Rahmen?
- 24. Rahmen/Rahmen um Emacs Rahmen
- 25. Formular POST ohne Senden-Taste
- 26. Petersilien-Validierung ohne Formular auslösen?
- 27. jQuery Validierung ohne Formular-Tag
- 28. AJAX-Formular senden ohne Aktualisierungsfehler
- 29. jQuery validate Element ohne Formular
- 30. PHP Formular Update ohne Logout
kann hier sein: http://delphi.about.com/od/windowsshellapi/a/dragnocaption.htm – philnext
Duplizieren von [C++ Builder: Erstellen Sie ein TForm mit Border bsNone, die dennoch beweglich ist und der Größe veränderbar ] (http://stackoverflow.com/questions/7178030/cbuilder-create-a-tform-with-borderstyle-bsnone-that-is-rethe-movable) - dieser Code ist für C++ Builder, aber es ist immer noch der dieselbe VCL! Es sollte trivial sein, zu Delphi zu wechseln. –