Die Componente
Delphi-Quellcode:
unit ButtonBarU;
interface
uses
BarButtonsU,
System.ComponentModel,
System.Windows.Forms;
const
WM_Size = 5;
type
TBarButtonClickEvent =
procedure(sender : TButtonItem)
of Object;
TButtonBar =
class(Panel)
strict protected
procedure WndProc(
var AMessage : System.Windows.Forms.
Message);
override;
protected
FButtons : TButtonList;
FOnBarButtonClick : TBarButtonClickEvent;
protected
procedure InitializeObject;
public
constructor Create;
property Buttons : TButtonList
read FButtons;
published
[Category('
Buttons'), Description('
Raised while a button was clicked')]
property OnBarButtonClick : TBarButtonClickEvent
read FOnBarButtonClick
write FOnBarButtonClick;
end;
implementation
uses
System.Security.Permissions;
{$REGION TButtonBar}
{ TButtonBar }
constructor TButtonBar.Create;
begin
inherited;
InitializeObject;
FButtons := TButtonList.Create(Self);
end;
procedure TButtonBar.InitializeObject;
begin
FButtons :=
nil;
FOnBarButtonClick :=
nil;
end;
{$ENDREGION}
//[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name='FullTrust')]
procedure TButtonBar.WndProc(
var AMessage : System.Windows.Forms.
Message);
begin
if AMessage.Msg = WM_SIZE
then
MessageBox.Show(Width.ToString);
Inherited WndProc(AMessage);
end;
end.
ein teil der ButtonsListe
Delphi-Quellcode:
TButtonList = class(ArrayList)
protected
function get_ButtonsWidth : Int32;
function TButtonList.get_ButtonsWidth: Int32;
begin
if (FParent <> nil) then
Result := FParent.Width - (2 * FButtonConst.ButtonSpaceLeftRight)
else
Result := 0;
end;
FParent ist die Control und wird beim erstellen der Buttonliste
gefillt also vor dem ersten aufruf von get ButtonsWidth
Wenn das Meer unruhig ist und der Wind die Wellen treibt, erfreut es, vom Strand aus die Mühen eines Anderen zu beobachten.