Einzelnen Beitrag anzeigen

Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
946 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#72

Re: Benötige Hilfe beim Entwickeln einer Komponente

  Alt 6. Sep 2007, 12:47
Hi torud

Kleines Beispiel für den Font(stammt aus dem Kalender - unter OpenSource).

Delphi-Quellcode:
  TCalendarControl = class(TCustomControl)
  private
    ...
    FFont : TFont;
    ...
    procedure SetFont(Value : TFont);
    ...
  public
    constructor Create(aOwner : TComponent); override;
    destructor Destroy; override;
    ...
  end;

...

implementation

...
constructor TCalendarControl.Create(aOwner : TComponent);
begin
  inherited Create(aOwner);
  ...
  FFont := TFont.Create;
  FFont.Name := 'Arial';
  FFont.Size := 8;
  ...
end;

procedure TCalendarControl.SetFont(Value : TFont);
begin
  if FFont <> Value then
  begin
    FFont.Assign(Value);
    Canvas.Font.Assign(Value);
    Invalidate;
  end;
end;

destructor TCalendarControl.Destroy;
begin
  ...
  FFont.Free;
  inherited Destroy;
end;
und für den Rahmen:

Delphi-Quellcode:
...
procedure TCalendarControl.Paint;
...
begin
  ...
    if FOptions.BorderStyle = bsSingle then
    begin
      Rectangle(R);
      InflateRect(R, -1, -1);
    end;
  ...
end;
...
Für Rectangle geht auch RoundRect.

Die Zuweisung Canvas.Font.Assign(Value) kann auch in Paint erfolgen, dann aber so Canvas.Font.Assign(FFont).

Gruß
  Mit Zitat antworten Zitat