Einzelnen Beitrag anzeigen

Master_BB

Registriert seit: 17. Mai 2003
285 Beiträge
 
Delphi 7 Professional
 
#3

Re: Problem mit eigener .NET Componente

  Alt 27. Nov 2005, 12:56
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.
  Mit Zitat antworten Zitat