Einzelnen Beitrag anzeigen

Sereby

Registriert seit: 31. Mär 2008
91 Beiträge
 
#5

Re: Eigene Form-Nachfolge-Klasse in der IDE

  Alt 3. Aug 2008, 08:23
aaaalso nochmal etwas ausführlicher:

Bisher habe ich bei meinem Hauptformular, bei der FormCreate Routine, die ecken abgerundet.
Nun.. da ich das allerdings schon während der Entwicklung gerne sehen würde, wollte ich halt ne neue Form klasse haben wo extra eigenschaften dafür vorhanden sind womit man das einstellen kann.

Das funktioniert auch wenn ich die Komponente auf die Form ziehe aber wegen Application.Createform kann ich das leider nicht beim Hauptformular benutzen weil der da TForm benutzt!

hier die Unit
Delphi-Quellcode:
unit FormX;

interface
  uses Windows, Classes, Forms;

type
  TFormX = class(TForm)
  private
    FRoundEdges: Boolean;
    FRoundWidth,FRoundHeight: Integer;
    procedure SetRoundEdges(const Value: Boolean);
    procedure SetRoundHeight(const Value: Integer);
    procedure SetRoundWith(const Value: Integer);
  public
    constructor Create(AOwner: TComponent); override;
  protected
    procedure Paint; override;
  published
    property RoundEdges: Boolean read FRoundEdges write SetRoundEdges default False;
    property RoundWidth: Integer read FRoundWidth write SetRoundWith default 40;
    property RoundHeight: Integer read FRoundHeight write SetRoundHeight default 40;
  end;

  procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Sere', [TFormX]);
end;

{ TFormX }

constructor TFormX.Create(AOwner: TComponent);
begin
  inherited;
  FRoundEdges := False;
  FRoundWidth := 40;
  FRoundHeight := 40;
end;

procedure TFormX.Paint;
var REGN: HRGN;
begin
  inherited;
  if FRoundEdges then
  begin
    //ecken abrunden
    REGN := CreateRoundRectRgn(0,0,Width,Height,FRoundWidth,FRoundHeight);
    SetWindowRgn(Handle, REGN, True);
  end;
end;

procedure TFormX.SetRoundEdges(const Value: Boolean);
begin
  if (FRoundEdges <> Value) then
  begin
    FRoundEdges := Value;
    Invalidate;
  end;
end;

procedure TFormX.SetRoundHeight(const Value: Integer);
begin
  if (FRoundHeight <> Value) then
  begin
    FRoundHeight := Value;
    Invalidate;
  end;
end;

procedure TFormX.SetRoundWith(const Value: Integer);
begin
  if (FRoundWidth <> Value) then
  begin
    FRoundWidth := Value;
    Invalidate;
  end;
end;

end.
  Mit Zitat antworten Zitat