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 Linie, von einer Punkt zum anderen (https://www.delphipraxis.net/57520-linie-von-einer-punkt-zum-anderen.html)

Scorpion 22. Nov 2005 17:19


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...

hanselmansel 22. Nov 2005 17:26

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

Pfoto 22. Nov 2005 17:46

Re: Linie, von einer Punkt zum anderen
 
Hi,

mir fällt spontan ImageEn von HiComponents ein.
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

arbu man 22. Nov 2005 18:10

Re: Linie, von einer Punkt zum anderen
 
Delphi-Quellcode:
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;
Das sollte eine 5px dicke schwartze Line mit einer Weite von 100px zeichnen die mit der Strg und der Maus Verschiebbar ist.

alzaimar 22. Nov 2005 18:12

Re: Linie, von einer Punkt zum anderen
 
Und eine schräge Linie?

arbu man 22. Nov 2005 18:14

Re: Linie, von einer Punkt zum anderen
 
Delphi-Quellcode:
self.Canvas.MoveTo(0,0);
self.Canvas.LineTo(self.Width,self.Height);

alzaimar 23. Nov 2005 07:34

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.

Scorpion 23. Nov 2005 08:49

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:57 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