![]() |
Linie, von einer Punkt zum anderen
Hallo,
ich suche nach einer Möglichkeiten, eine Linie in mein Programm zu zeichnen. Das das mit Canvas geht ist mir klar. Jedoch lässt sich die Linie ja dann nicht mehr mit Drag und Drop verschieben. ich würde das gerne in einer Art Visio machen. Also ich will die Linie mit einem Object verbinden und wenn ich das Object ziehe soll sich die Linie mitziehen, weiss jemand wie ich vorgehen kann. Gruß Nico P.S. Sorry, mit Object meine ich eine ganz normale Komponente in Delphi, wie ein TImage etc... |
Re: Linie, von einer Punkt zum anderen
HiHo,
Ich habe zwar keine Ahnung, was du für ein Objekt meinst, aber deine Linie könnest du evtl. in einer - von TWinControl abgeleiteten - Komponente kapseln. Wenn du das Objekt dragst, musst du nur die Linien-Komponente verschieben, und dieser kannst du ebenfalls eine Drag'n Drop-Funktion verpassen. MfG, hanselmansel |
Re: Linie, von einer Punkt zum anderen
Hi,
mir fällt spontan ImageEn von ![]() Dort gibt es ein erweitertes Image, das auch Verktor-Objekte aufnehmen kann (darunter war auch ein Demo mit Pfeilen) Eine komplexere Funktionalität wie z.B. in Visio müsstest du natürlich noch einprogrammieren... Aber mit ImageEn hättest du ja schonmal ne Basis. Gruß Pfoto |
Re: Linie, von einer Punkt zum anderen
Delphi-Quellcode:
Das sollte eine 5px dicke schwartze Line mit einer Weite von 100px zeichnen die mit der Strg und der Maus Verschiebbar ist.
TALine = class (TCustomControl)
constructor Create(AOwner: TComponent); procedure MoveControl(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); protected procedure Paint;override; private { Private-Deklarationen } public { Public-Deklarationen } published end; ... constructor TALine.Create(AOwner: TComponent); var i:integer; begin inherited Create(AOwner); self.OnMouseDown:= MoveControl; self.Width:=100; self.Visible:=true; self.Height:=5; end; procedure TALine.Paint; var i:integer; s:string; save:tcolor; begin inherited; //save:=self.Canvas.Brush.Color; self.Canvas.Brush.Color:=clblack; self.Canvas.FillRect(Rect(0,0,self.Width,self.Height)); //self.Canvas.Brush.Color:=save; end; procedure TALine.MoveControl(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if ssCtrl in Shift then begin ReleaseCapture; (Sender as twincontrol).perform(WM_SysCommand, $F012, 0); end; end; |
Re: Linie, von einer Punkt zum anderen
Und eine schräge Linie?
|
Re: Linie, von einer Punkt zum anderen
Delphi-Quellcode:
self.Canvas.MoveTo(0,0);
self.Canvas.LineTo(self.Width,self.Height); |
Re: Linie, von einer Punkt zum anderen
Mit Anfassern, sodass man sie draggen kann? Das war, glaube ich, die ursprüngliche Frage. Da kommt man so aber nicht weiter.
|
Re: Linie, von einer Punkt zum anderen
Ja, das stimmt, gibt es denn keine generelle Komponente, die ihr kennt ? Ansonsten ist die Canvas Methode halt die einzige...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 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