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.