Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TGraphicControl verschieben (https://www.delphipraxis.net/94930-tgraphiccontrol-verschieben.html)

oki 28. Jun 2007 07:25


TGraphicControl verschieben
 
hi Leute,

Matzel hat hier Komponente verschieben einen sehr einfachen und guten Weg gezeigt, wie man eine Komponente über WM_SYSCOMMAND's verschieben und in der Größe ändern kann. Leider gilt das nur für TWinControls. Wenn ich nicht was falsch gemacht habe, dann klappt das aber nicht bei TGraphicControl.

Bsp. für TWinControl im Ereignis OnMouseDown:
Delphi-Quellcode:
    //Fängt alle Mausereignisse ab
    ReleaseCapture;
    // mit TWinCotrol verschieben, $F012 verschiebt das Control
    TWinControl(self).Perform(WM_SYSCOMMAND, $F012, 0);
Gibt es sowas auch für TGraphicControl?

Das hat bei mit nicht geklappt:
Delphi-Quellcode:
    //Fängt alle Mausereignisse ab
    ReleaseCapture;
    // mit TWinCotrol verschieben, $F012 verschiebt das Control
    TControl(self).Perform(WM_SYSCOMMAND, $F012, 0);
Gruß oki

DeddyH 28. Jun 2007 07:28

Re: TGraphicControl verschieben
 
Das wird damit zu tun haben, dass TGraphicControl kein Handle hat. Du könntest aber von TCustomControl ableiten.

Hawkeye219 28. Jun 2007 07:41

Re: TGraphicControl verschieben
 
Hallo oki,

in diesem Beitrag findest du einen Code, der das Verschieben von TShapes mit der Maus ermöglicht.

Gruß Hawkeye

oki 28. Jun 2007 07:55

Re: TGraphicControl verschieben
 
@DaddyH: Das ist so richtig; nutze ich auch für meine anderen Kompos. Nun ist aber das Problem, das ich Verbindungslinien zwischen meinen Kompos brauche. Bei TGraphicControl wird nur die Linie die ich zeichne angezeigt. Bei TCustomControl auch der Hintergrund. Somit verdeckt das Control dann meine anderen Komponenten, was TGraphicControl nicht macht.

@Hawkeeye219: Ich nenne das mal den "klassischen Weg". Die Variante von Matzel ist halt sehr elegant. Bei dem von dir gezeigten Code hatte ich immer das Gefühl, das das Control manchmal hinter der Mouse nicht so richtig hinterher kommt.
Falls nicht noch einer ne Idee für Matzels Weg hat werd ich aber diese nehmen.

Dank und Gruß

oki

[edit] Text verständlicher gemacht. [/edit]

bitsetter 28. Jun 2007 08:54

Re: TGraphicControl verschieben
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,

für ein TLabel welches mit Drag Drop verschoben wird, hatte ich mal eine kleine Demo geschrieben. Das ist natürlich auch komplizierter als mit dem Code von Mazel. Eventuell kannst du davon ja was gebrauchen.

oki 28. Jun 2007 09:28

Re: TGraphicControl verschieben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Bitsetter,

Dank für deine Hilfe. Leider hilft mir das nicht weiter. Liegt aber an meiner halb konkreten Fragestellung.

Ich baue mir gerade eine Kompo, mit der ich einzelne Controls auf meinem Bildschirm miteinander graphisch verbinden will. Das ist leide komplizierter als ich gedacht habe. Wer Visio und die enthaltenen Verbinder kennt, der weiß was ich meine. Nun hab ich hier mehrere Probleme:

- nur die Linien und Punkte dürfen gezeichnet werden,
- das dahinter befindliche Control muß transparent sein um andere Controls nicht zu verdecken,
- durch das Ziehen der Punkte müssen die Linien "mitkommen",
- wird über den Rand des Controls gezogen, muß sich die Größe des Controls logischerweise ändern,
- Beim verschieben einer "äußeren" Linie nach "innen" soll sich das Control automatisch auf die notwendige Größe reduzieren,

Das nur mal für den Grafikteil.

Ich häng mal einen Screenshot ran.

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:54 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