Delphi-PRAXiS
Seite 3 von 3     123   

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 Linien-Komponente gesucht (https://www.delphipraxis.net/84104-linien-komponente-gesucht.html)

Muetze1 12. Jan 2007 15:38

Re: Linien-Komponente gesucht
 
Zitat:

Zitat von ibp
bei mir meckert er aber, dass canvas nicht bekannt ist!

Ich habe nun die Komponente bei mir in Delphi 7 Architect installiert und sie läuft ohne Warnung etc durch und funktioniert. Ich habe dabei noch festgestellt, dass sie so nicht auf Änderungen bei Pen und Brush reagiert und das noch schnell erweitert. Da ich es nun sogar mit einem richtigen Delphi Compiler getestet habe und nicht nur mit meinen (schlechten) Augen, kann ich nun sagen: Die Komponente läuft unter Delphi 7 ohne Probleme.

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;
    Procedure ValueChanged(Sender: TObject);

  protected
    { Protected-Deklarationen }

  public
    { Public-Deklarationen }
    Constructor Create(AOwner: TComponent); Override;
    Procedure Paint; Override;

  published
    { Published-Deklarationen }
    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;
  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;

Constructor TFormLine.Create(AOwner: TComponent);
Begin
  inherited;

  Canvas.Pen.OnChange := ValueChanged;
  Canvas.Brush.OnChange := ValueChanged;
End;

Procedure TFormLine.ValueChanged(Sender: TObject);
Begin
  If ( Not ( csLoading In ComponentState ) ) Then
    Invalidate;
End;

end.
/EDIT: Was mich aber noch viel mehr wundert ist, dass du hier in Beitrag #16 schreibst, dass dich das Rechteck stört, somit muss die Komponente doch schon bei dir gelaufen sein. Somit frage ich mich, was du seit dem verändert hast? Schliesslich wurde das Canvas zuvor auch genutzt und war damals aber anscheinend noch bekannt... :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:24 Uhr.
Seite 3 von 3     123   

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