Fórum Criação de componentes #357329
18/04/2008
0
O exemplo seria:
Toda vez que o usuário apertar no botão, ter uma msg.
´Você apertou um botão´
Como fazer isto?
[]s,
ET
Et.vinny
Curtir tópico
+ 0Posts
22/04/2008
Rodc
Gostei + 0
22/04/2008
Et.vinny
Porém, tenho a procedure abaixo, que vincula o TButton extendido, com um TButton normal da tela:
procedure TEditExt.prEscreve(Sender: TButton);
begin
TButton(FButonInsert) := Sender;
end;
Porém, FButonInsert, esá como nil:
Vai ai o código completo.
unit EditExt;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Forms, Dialogs,
StdCtrls;
type
TButtonControl = class(TButton)
public
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
procedure Click; override;
end;
TEditExt = class(TEdit)
private
{ Private declarations }
FRequired : Boolean;
FButonInsert : TButtonControl;
FButton : TButton;
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
published
{ Published declarations }
// Indica se o campo é obrigatório ou não
BotaoInserte : TButton;
property Required : Boolean read FRequired write FRequired;
function prLe : TButton;
procedure prEscreve(Sender : TButton);
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents(´Palheta Ext´, [TEditExt]);
end;
{ TEnterCombo }
constructor TEditExt.Create(AOwner: TComponent);
begin
inherited;
// Código se necessário ]
FButonInsert := FButonInsert.Create(Self);
FButonInsert := TButtonControl(BotaoInserte);
end;
destructor TEditExt.Destroy;
begin
// Código se necessário
inherited;
end;
procedure TEditExt.prEscreve(Sender: TButton);
begin
TButton(FButonInsert) := Sender;
end;
function TEditExt.prLe: TButton;
begin
TButtonControl(FButton) := FButonInsert;
end;
{ TButtonControl }
procedure TButtonControl.Click;
begin
ShowMessage(´Testes do cmponente´);
inherited;
end;
constructor TButtonControl.Create(AOwner: TComponent);
begin
inherited;
end;
destructor TButtonControl.Destroy;
begin
inherited;
end;
end.
[]s
ET
Gostei + 0
22/04/2008
Et.vinny
Segue código atualizado
[]s,
ET
unit EditExt;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Forms, Dialogs,
StdCtrls;
type
TButtonControl = class(TButton)
public
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
procedure Click; override;
end;
TEditExt = class(TEdit)
private
{ Private declarations }
FRequired : Boolean;
FButonInsert : TButtonControl;
FButton : TButton;
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
published
{ Published declarations }
// Indica se o campo é obrigatório ou não
BotaoInserte : TButton;
property Required : Boolean read FRequired write FRequired;
function prLe : TButton;
procedure prEscreve(Sender : TButton);
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents(´Palheta Ext´, [TEditExt]);
end;
{ TEnterCombo }
constructor TEditExt.Create(AOwner: TComponent);
begin
inherited;
// Código se necessário ]
FButonInsert := TButtonControl.Create(Self);
end;
destructor TEditExt.Destroy;
begin
// Código se necessário
inherited;
end;
procedure TEditExt.prEscreve(Sender: TButton);
begin
TButton(FButonInsert) := Sender;
end;
function TEditExt.prLe: TButton;
begin
TButtonControl(FButton) := FButonInsert;
end;
{ TButtonControl }
procedure TButtonControl.Click;
begin
ShowMessage(´Testes do cmponente´);
inherited;
end;
constructor TButtonControl.Create(AOwner: TComponent);
begin
inherited;
end;
destructor TButtonControl.Destroy;
begin
inherited;
end;
end.
Gostei + 0
22/04/2008
Rodc
unit EditExt;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Forms, Dialogs,
StdCtrls;
type
TButtonControl = class(TButton)
public
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
procedure Click; override;
end;
TEditExt = class(TEdit)
private
{ Private declarations }
FRequired : Boolean;
FButonInsert : TButtonControl;
FButton : TButton;
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
published
{ Published declarations }
// Indica se o campo é obrigatório ou não
BotaoInserte : TButton;
property Required : Boolean read FRequired write FRequired;
property ButonInsert : TButton read FButonInsert write FButonInsert;
function prLe : TButton;
procedure prEscreve(Sender : TButton);
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents(´Palheta Ext´, [TEditExt]);
end;
{ TEnterCombo }
constructor TEditExt.Create(AOwner: TComponent);
begin
inherited;
// Código se necessário ]
FButonInsert := FButonInsert.Create(Self);
FButonInsert.Parent := Self;
end;
destructor TEditExt.Destroy;
begin
// Código se necessário
if Assigned(FButonInsert) then
FButonInsert.Free();
inherited;
end;
{ TButtonControl }
procedure TButtonControl.Click;
begin
ShowMessage(´Testes do cmponente´);
inherited;
end;
constructor TButtonControl.Create(AOwner: TComponent);
begin
inherited;
end;
destructor TButtonControl.Destroy;
begin
inherited;
end;
end.Gostei + 0
22/04/2008
Lcfinformatica
/////////////////////////////
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
procedure PersonalClick(Sender: TObject);
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.PersonalClick(Sender: TObject);
begin
ShowMessage(´Hello World!´);
end;
{ ATRUBUIR AO EVENTO ONCLICK DO BOTÃO DO FORMULARIO A PROCEDURE CRIADA }
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.OnClick := PersonalClick;
end;
end.
////////////////////////
Gostei + 0
22/04/2008
Et.vinny
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)