AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Linien-Komponente gesucht

Ein Thema von ibp · begonnen am 11. Jan 2007 · letzter Beitrag vom 12. Jan 2007
Antwort Antwort
Seite 2 von 3     12 3      
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
335 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Linien-Komponente gesucht

  Alt 11. Jan 2007, 13:23
Wie wäre es mit einem Bevel?
Oliver
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Linien-Komponente gesucht

  Alt 11. Jan 2007, 13:24
In diesem Fall wäre die [bi.onPaint[/i]-Property nicht so ideal, besser .Paint überschreiben.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#13

Re: Linien-Komponente gesucht

  Alt 11. Jan 2007, 13:25
Zitat von Union:
... Wenn Du allerdings schräge Linien willst, kommst Du um eine externe Komponente ...
ja genau und das suche ich wie im ersten post beschrieben!


Zitat von ibp:
kennt jemand eine frei erhältliche Komponente mit der man einfach eine Gerade auf einer Form zur Designtime zeichnet.
Ich will das nicht per Code machen.
  Mit Zitat antworten Zitat
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
335 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: Linien-Komponente gesucht

  Alt 11. Jan 2007, 14:23
Hier mal was ganz einfaches um zu verstehen, wie man sich selbst sowas macht... hehe

Delphi-Quellcode:
unit FormLine;

interface

uses
  SysUtils, Classes, Controls, Windows, Graphics;

type
  TFormLine = class(TCustomControl)
  private
   FStartPosX : Integer;
   FStartPosY : Integer;
   FEndPosX : Integer;
   FEndPosY : Integer;
   FPenColor : TColor;
   procedure SetStartPosX(const Value: Integer);
   procedure SetStartPosY(const Value: Integer);
   procedure SetEndPosX(const Value: Integer);
   procedure SetEndPosY(const Value: Integer);
   procedure SetPenColor(const Value: TColor);
   procedure Paint; override;
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
  published
   property StartPosX: Integer read FStartPosX write SetStartPosX;
   property StartPosY: Integer read FStartPosY write SetStartPosY;
   property EndPosX : Integer read FEndPosX write SetEndPosX;
   property EndPosY : Integer read FEndPosY write SetEndPosY;
   property Color;
   property PenColor : TColor read FPenColor write SetPenColor;
    { Published-Deklarationen }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Beispiele', [TFormLine]);
end;

procedure TFormLine.SetStartPosX(const Value: Integer);
begin
 IF (Value <> FStartPosX) THEN BEGIN
  FStartPosX := Value;
  Invalidate;
 END;
end;

procedure TFormLine.SetStartPosY(const Value: Integer);
begin
 IF (Value <> FStartPosY) THEN BEGIN
  FStartPosY := Value;
  Invalidate;
 END;
end;

procedure TFormLine.SetEndPosX(const Value: Integer);
begin
 IF (Value <> FEndPosX) THEN BEGIN
  FEndPosX := Value;
  Invalidate;
 END;
end;

procedure TFormLine.SetEndPosY(const Value: Integer);
begin
 IF (Value <> FEndPosY) THEN BEGIN
  FEndPosY := Value;
  Invalidate;
 END;
end;

procedure TFormLine.SetPenColor(const Value: TColor);
begin
 IF Value <> FPenColor THEN BEGIn
  FPenColor := Value;
  invalidate;
 END;
end;


procedure TFormLine.Paint;
begin
 Canvas.Brush.Color := Color;
 Canvas.FillRect(Canvas.ClipRect);
 Canvas.Pen.Color := FPenColor;
 Canvas.MoveTo(FStartPosX, FStartPosY);
 Canvas.LineTo(FEndPosX, FEndPosY);
end;

end.
Oliver
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#15

Re: Linien-Komponente gesucht

  Alt 11. Jan 2007, 17:53
Veröffentliche doch einfach Pen und Brush ...

Delphi-Quellcode:
unit FormLine;

interface

uses
  SysUtils, Classes, Controls, Windows, Graphics;

type
  TFormLine = class(TGraphicControl)
  private
   FStartPosX : Integer;
   FStartPosY : Integer;
   FEndPosX : Integer;
   FEndPosY : Integer;
   procedure SetStartPosX(const Value: Integer);
   procedure SetStartPosY(const Value: Integer);
   procedure SetEndPosX(const Value: Integer);
   procedure SetEndPosY(const Value: Integer);
   procedure SetPen(const Value: TPen);
   procedure GetPen: TPen;
   procedure SetBrush(const Value: TBrush);
   procedure GetBrush: TBrush;
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
   procedure Paint; override;
  published
   property StartPosX: Integer read FStartPosX write SetStartPosX;
   property StartPosY: Integer read FStartPosY write SetStartPosY;
   property EndPosX : Integer read FEndPosX write SetEndPosX;
   property EndPosY : Integer read FEndPosY write SetEndPosY;
   property Pen: TPen read GetPen write SetPen;
   property Brush: TBrush read GetBrush write SetBrush;
    { Published-Deklarationen }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Beispiele', [TFormLine]);
end;

procedure TFormLine.SetStartPosX(const Value: Integer);
begin
IF (Value <> FStartPosX) THEN BEGIN
  FStartPosX := Value;
  Invalidate;
END;
end;

procedure TFormLine.SetStartPosY(const Value: Integer);
begin
IF (Value <> FStartPosY) THEN BEGIN
  FStartPosY := Value;
  Invalidate;
END;
end;

procedure TFormLine.SetEndPosX(const Value: Integer);
begin
IF (Value <> FEndPosX) THEN BEGIN
  FEndPosX := Value;
  Invalidate;
END;
end;

procedure TFormLine.SetEndPosY(const Value: Integer);
begin
IF (Value <> FEndPosY) THEN BEGIN
  FEndPosY := Value;
  Invalidate;
END;
end;

procedure SetPen(const Value: TPen);
Begin
  Canvas.Pen.Assign(Value);
End;

procedure GetPen: TPen;
Begin
  Result := Canvas.Pen;
End;

procedure SetBrush(const Value: TBrush);
Begin
  Canvas.Brush.Assign(Value);
End;

procedure GetBrush: TBrush;
Begin
  Result := Canvas.Brush;
End;

procedure TFormLine.Paint;
begin
  Canvas.FillRect(Canvas.ClipRect);
  Canvas.MoveTo(FStartPosX, FStartPosY);
  Canvas.LineTo(FEndPosX, FEndPosY);
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#16

Re: Linien-Komponente gesucht

  Alt 12. Jan 2007, 11:01
@muetze da sind noch einige fehler drin

- was mir nicht gefällt, ist dass ein rechteck entsteht, welches dann die linie beinhaltet. schön wären einfach nur ein start und endpunkt und dazwischen die linie und das direkt auf dem canvas des parent!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#17

Re: Linien-Komponente gesucht

  Alt 12. Jan 2007, 11:14
Delphi-Quellcode:
unit FormLine;

interface

uses
  SysUtils, Classes, Controls, Windows, Graphics;

type
  TFormLine = class(TGraphicControl)
  private
   FStartPosX : Integer;
   FStartPosY : Integer;
   FEndPosX : Integer;
   FEndPosY : Integer;
   procedure SetStartPosX(const Value: Integer);
   procedure SetStartPosY(const Value: Integer);
   procedure SetEndPosX(const Value: Integer);
   procedure SetEndPosY(const Value: Integer);
   procedure SetPen(const Value: TPen);
   function GetPen: TPen;
   procedure SetBrush(const Value: TBrush);
   Function GetBrush: TBrush;
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
   procedure Paint; override;
  published
   property StartPosX: Integer read FStartPosX write SetStartPosX;
   property StartPosY: Integer read FStartPosY write SetStartPosY;
   property EndPosX : Integer read FEndPosX write SetEndPosX;
   property EndPosY : Integer read FEndPosY write SetEndPosY;
   property Pen: TPen read GetPen write SetPen;
   property Brush: TBrush read GetBrush write SetBrush;
    { Published-Deklarationen }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Beispiele', [TFormLine]);
end;

procedure TFormLine.SetStartPosX(const Value: Integer);
begin
IF (Value <> FStartPosX) THEN BEGIN
  FStartPosX := Value;
  Invalidate;
END;
end;

procedure TFormLine.SetStartPosY(const Value: Integer);
begin
IF (Value <> FStartPosY) THEN BEGIN
  FStartPosY := Value;
  Invalidate;
END;
end;

procedure TFormLine.SetEndPosX(const Value: Integer);
begin
IF (Value <> FEndPosX) THEN BEGIN
  FEndPosX := Value;
  Invalidate;
END;
end;

procedure TFormLine.SetEndPosY(const Value: Integer);
begin
IF (Value <> FEndPosY) THEN BEGIN
  FEndPosY := Value;
  Invalidate;
END;
end;

procedure TFormLine.SetPen(const Value: TPen);
Begin
  Canvas.Pen.Assign(Value);
End;

Function TFormLine.GetPen: TPen;
Begin
  Result := Canvas.Pen;
End;

procedure TFormLine.SetBrush(const Value: TBrush);
Begin
  Canvas.Brush.Assign(Value);
End;

Function TFormLine.GetBrush: TBrush;
Begin
  Result := Canvas.Brush;
End;

procedure TFormLine.Paint;
begin
  Canvas.FillRect(Canvas.ClipRect);
  Canvas.MoveTo(FStartPosX, FStartPosY);
  Canvas.LineTo(FEndPosX, FEndPosY);
end;

end.
So, nun sollten die Fehler raus sein.

Wenn er kein Rechteck füllen sollen, dann kannst du zum einen den Brush Style auf bsClear setzen oder du entfernst das FillRect in Paint. Erstere Methode lässt dir aber noch mehr andere Möglichkeiten offen.

Mein Code ist von TGraphicControl abgeleitet und dieses benutzt den Canvas des Parent und keinen eigenen
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#18

Re: Linien-Komponente gesucht

  Alt 12. Jan 2007, 11:22
nein sind sie immer noch nicht

Zitat von Muetze1:
[delphi]
...
procedure GetPen: TPen; <--------- muss eine Funktion sein
...
procedure GetBrush: TBrush; <--------- muss eine Funktion sein

...
Canvas.Pen.Assign(Value); <--------- Canvas wird nicht gekannt da in TGraphicControl als protected deklariert!
...
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#19

Re: Linien-Komponente gesucht

  Alt 12. Jan 2007, 14:27
Zitat von ibp:
nein sind sie immer noch nicht
Ok, ersten beiden Dinge erledigt - hatte ich nicht gesehen. Ich habe die Kompo nur hier im Editor abgeändert von phpbb, nicht in Delphi.

Zu dem
Zitat von ibp:
Canvas.Pen.Assign(Value); <--------- Canvas wird nicht gekannt da in TGraphicControl als protected deklariert!
kann ich nur sagen: ja, und?

Ich weiss nicht was du mir damit willst, schliesslich leite ich von TGraphicControl ab und habe somit Zugriff auf die protected-Member.
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#20

Re: Linien-Komponente gesucht

  Alt 12. Jan 2007, 16:18
Zitat von Muetze1:
Ich weiss nicht was du mir damit willst, schliesslich leite ich von TGraphicControl ab und habe somit Zugriff auf die protected-Member.
bei mir meckert er aber, dass canvas nicht bekannt ist!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:13 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