Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Delphi 4: Fenster mit Button verschieben

Empfohlene Antworten

Veröffentlicht

Hallo,

ich habe bereits Tipps gefunden, mit denen man sein Formular auch ohne Titelleiste mit der Maus verschieben kann :

private

procedure WMNCHitTest(var msg: TWMNCHitTest); message WM_NCHITTEST;

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WMNCHitTest(var msg: TWMNCHitTest);

begin

inherited;

if msg.Result = htClient then

msg.Result := htCaption;

end;

Ich möchte mein Fenster jedoch mit einem Button verschieben und nicht, so wie im Beispiel, dass man das Fenster im gesamten Formular verschieben kann.

Ist es möglich das Fenster mit einem bestimmten Button zu verschieben ??

Gruß

Chrischn

Hi, ich bin vorerst nur Hobbyprogrammierer (TP und C++), und weiß nicht, ob das was ich jetzt schreibe absoluter blödsinn ist (wenn ja, sagts) :D

Ist es vielleicht möglich ein object anzulegen, welches die Eigenschaften der Titelleiste erbt. Dein selbstdefiniertes object kann ja dann ein Button sein, mit frei wählbarer (für den Programmierer frei wählbar) Größe und Position. Über diesen Button kannst du dann dein Fenster verschieben.

Original geschrieben von Chrischn2

Ist es möglich das Fenster mit einem bestimmten Button zu verschieben ??

hm... also vielleicht schreibe ich auch Blödsinn ;)

Probier mal:


procedure TForm1.ButtonLeftClick(Sender: TObject);

begin

  Self.Left:= Self.Left - 5;

end;

Bei jeden Click auf den Button wird das Form1 um 5 Pixel nach links verschoben...

Oder denke ich jetzt zu einfach :confused:

EDIT:

Oder meintest du, der Button soll wie die Titelleiste funktionieren und mit gedrückter Maus und Bewegung über dem Button das Formular bewegen?

Dann würd ich es probieren, in den ich eine globale Boolean Variable beim OnMouseDown des buttons auf True setze, beim OnMouseMove des Buttons auf die globale Boolean prüfe und das Formluar verschiebe mit der Maus. Bei OnMouseUp wird die globale Variable auf False gesetzt.

  • Autor

Ich meine die zweite Variante. Es muss auch nicht unbedingt ein Button sein. Ein Image währe vielleicht sogar besser. Also ein kleines Image (Das z.B. so aussieht wie ein Button), mit dem man dann genau wie bei der Titelleiste das Fenster verschieben kann.

Original geschrieben von Chrischn2

Ich meine die zweite Variante. Es muss auch nicht unbedingt ein Button sein.

Also du kannst jedes Obejkt nehmen, dass ein MouseDown, MouseUp und MouseMove Ereigniss hat. (s.o.) Hab leider keine Zeit dir da ein Beispiel zu schicken, sollte aber nicht so schwer sein. :) (Es sei denn du kannst bis Mittwoch oder später warten ;) )

Original geschrieben von stico

Ist es vielleicht möglich ein object anzulegen, welches die Eigenschaften der Titelleiste erbt. Dein selbstdefiniertes object kann ja dann ein Button sein

Mehrfachvererbung is nich ;) (geht bei C++, aber auch da ist es umstritten)

@Chrischn2

Danke, wüsche ich dir auch.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.