![]() |
Re: Linien-Komponente gesucht
Zitat:
Delphi-Quellcode:
/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:
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:41 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 by Thomas Breitkreuz