Zum Inhalt springen

Delphi 4: Fenster mit Button verschieben


Chrischn2

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ;) )

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...