![]() |
Wie kann ich Objekte zur Laufzeit verschiebe?
Hallo Zusammen
Ich mache gerade ein Programm mit einer grafische Oberfläche ähnlich wie Delphi. Ich erzeuge Objekte während der Laufzeit. Jetz möchte ich diese Objekte während der Laufzeit mit der Maus verschieben können so wie die Grösse mit der Maus verändern können. Also eigentlich genau wie mit Delphi. Bist jetzt habe ich keine brauchbaren Code gefunden. Viele Beispiel gehen über "MouseMove" doch es gibt grafische Objekte die diese Event nicht haben. Auch ist es mir nicht gelungen die Objekte mit der Maus zu vergrössern / verkleinern. Kennt Jemand einen "einfachen, guten" der mir die Arbeit abnehmen kann? Gruss Aurus |
Re: Wie kann ich Objekte zur Laufzeit verschiebe?
Zitat:
Wenn du Objekte anzeigst, dann erben die ja von TControl und jedes TControl hat die Eigenschaft OnMouseMove. Zum verschieben musst du dann nur auf ein OnMouseDown, OnMouseMove und OnMouseUp reagieren. Vergrößern und verkleinern machst du auf die gleiche Art und Weise, wertest aber noch die Position der Maus (beim OnMouseDown) aus und entscheidest dann z.B. ob auf den Rand geklickt (und vergrößert) wird oder in die Mitte (und verschoben). Gruß Der Unwissende |
Re: Wie kann ich Objekte zur Laufzeit verschiebe?
kuck dir mal
![]() |
Re: Wie kann ich Objekte zur Laufzeit verschiebe?
Hallo zusammen
In zum Beispiel beim Objekt "Scrollbar" kein Erreignis "MouseMove". Wie soll ich dann hier was zuweisen um das Objekt dann bewegen zu können ? Gruss Aurus |
Re: Wie kann ich Objekte zur Laufzeit verschiebe?
Also eigentlich müsste alles über Mousedown gehen.
Probier zum verschieben onMouseDown mal das hier:
Delphi-Quellcode:
Und zum größe verändern das gleiche, musst halt nur mit dem Wert experimentieren wo die 12 steht.
ReleaseCapture;
SendMessage(ButtonX.Handle, WM_SYSCOMMAND, $F012, 0); |
Re: Wie kann ich Objekte zur Laufzeit verschiebe?
Hallo Rastaman
Wenn ich die Procedure einem Button zuweise geht das wie hier : procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; SendMessage(Button1.Handle, WM_SYSCOMMAND, $F012, 0); end; Nur was ich nicht begreife ist eine Scrollbar hat keine "MouseMove". Also wie muss ich das dann zuweisen ? Gruss Aurus |
Re: Wie kann ich Objekte zur Laufzeit verschiebe?
Zitat:
Delphi-Quellcode:
type
TControlHack = class(TControl); [...] TControlHack(ScrollBar1).OnMouseMove := ...; |
Re: Wie kann ich Objekte zur Laufzeit verschiebe?
Bei den JEDIS gibts Laufzeit-Design-Komponenten.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:36 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