Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie kann ich Objekte zur Laufzeit verschiebe? (https://www.delphipraxis.net/59440-wie-kann-ich-objekte-zur-laufzeit-verschiebe.html)

Aurus 22. Dez 2005 11:18


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

Der_Unwissende 22. Dez 2005 11:26

Re: Wie kann ich Objekte zur Laufzeit verschiebe?
 
Zitat:

Zitat von Aurus
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?

Einen "einfachen, guten"? Was genau meinst du denn?

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

dahead 22. Dez 2005 11:27

Re: Wie kann ich Objekte zur Laufzeit verschiebe?
 
kuck dir mal diesen thread an, da wurde was ähnliches diskutiert.

Aurus 22. Dez 2005 11:38

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

Rastaman 22. Dez 2005 11:51

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:
  ReleaseCapture;
  SendMessage(ButtonX.Handle, WM_SYSCOMMAND, $F012, 0);
Und zum größe verändern das gleiche, musst halt nur mit dem Wert experimentieren wo die 12 steht.

Aurus 22. Dez 2005 12:11

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

Khabarakh 22. Dez 2005 12:13

Re: Wie kann ich Objekte zur Laufzeit verschiebe?
 
Zitat:

Zitat von Aurus
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

Auch bei TScrollBar gibt es das Ereignis, allerdings ist es "protected". Wenn du die Komponenten nicht ableiten willst, musst du einen Classhack zu Hilfe nehmen:
Delphi-Quellcode:
type
  TControlHack = class(TControl);

[...]

  TControlHack(ScrollBar1).OnMouseMove := ...;

3_of_8 22. Dez 2005 12:15

Re: Wie kann ich Objekte zur Laufzeit verschiebe?
 
Bei den JEDIS gibts Laufzeit-Design-Komponenten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz