Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > OOP
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Coloboración Paypal con ClubDelphi

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 15/09/2015
gustavosv gustavosv is offline
Miembro
 
Join Date: Mar 2008
Posts: 51
Poder: 19
gustavosv Va por buen camino
Enlazando un evento OnClick a mi componente

Hola, tengo la siguiente definición de una clase que implementa un 'componente' y no sé que debo hacer para enlazar el OnClick del botón:

Código Delphi [-]
  TPruebaOnClic = class(TControl)
  private
    FRectang: TRectangle;
    FBoton: TButton;
    FOnClic: TNotifyEvent;
  public
    constructor Create(AOwner: TFmxObject);

    property OnClicBoton: TNotifyEvent read FOnClic write FOnClic;
  end;

constructor TPruebaOnClic.Create(AOwner: TFmxObject);
begin
  FRectang := TRectangle.Create(AOwner);
  with FRectang do
  begin
    Parent := AOwner;
    Align := TAlignLayout.Client;
    Opacity := 0.8;
  end;

  FBoton := TButton.Create(AOwner);
  with FBoton do
  begin
    Parent := FRectang;
    Align := TAlignLayout.Center;
    OnClick := FOnClic;
    Visible := True;
  end;
end;

Ahora desde la aplicación que usa el 'componente' ...

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  Boton := TPruebaOnClic.Create(Panel1);
  Boton.OnClicBoton := OnClicOpc1;
end;

procedure TForm1.OnClicOpc1(Sender: TObject);
begin
  showmessage('estamos en grabar trabajo');
end;

Al ejecutarla, se muestra el rectángulo con el botón, pero no se ejecuta el evento al hacer clic sobre el botón.

No se hace de esa manera ...?

Gracias.

GustavoSV
Reply With Quote
  #2  
Old 15/09/2015
AgustinOrtu's Avatar
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Join Date: Aug 2013
Location: Argentina
Posts: 1,858
Poder: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
TControl no publica el evento OnClick?

No tengo el Delphi a mano para verificarlo, en ese caso no hace falta que agregues el evento, con sólo publicar la propiedad OnClick ya este

Si en TControl no tiene el evento te conviene heredar de otro control que lo tenga
Reply With Quote
  #3  
Old 16/09/2015
gustavosv gustavosv is offline
Miembro
 
Join Date: Mar 2008
Posts: 51
Poder: 19
gustavosv Va por buen camino
Hola Agustín, gracias por tu respuesta, tienes razón, pero para obtenerlo necesitaría publicar todo el botón, y lo que quiero es solo dejar disponible el evento OnClick del botón.
Reply With Quote
  #4  
Old 16/09/2015
AgustinOrtu's Avatar
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Join Date: Aug 2013
Location: Argentina
Posts: 1,858
Poder: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
No entendi eso de publicar todo el boton

Revisa este codigo:


Código Delphi [-]
unit Unit2;

interface

uses
  Vcl.Controls;

type
  TNothing = class(TControl)
  public
    property OnClick;
  end;

implementation

end.

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  Nothing := TNothing.Create(Self);
  Nothing.Parent := Self;
  Nothing.Align := alClient;
  Nothing.OnClick := NothingClick;
end;

procedure TForm1.NothingClick(Sender: TObject);
begin
  ShowMessage('click on nothing');
end;
Reply With Quote
  #5  
Old 16/09/2015
AgustinOrtu's Avatar
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Join Date: Aug 2013
Location: Argentina
Posts: 1,858
Poder: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Releyendo tu ejemplo, lo que tenes que hacer es proveer una propiedad que mapee al OnClick del boton:


Código Delphi [-]
property OnClick: TNotifyEvent read GetOnClick write SetOnClick;

function GetOnClick: TNotifyEvent;
begin
  Result := FBoton.OnClick;
end;

procedure SetOnClick(const Value: TNotifyEvent);
begin
  FBoton.OnClick := Value
end;
Reply With Quote
  #6  
Old 16/09/2015
gustavosv gustavosv is offline
Miembro
 
Join Date: Mar 2008
Posts: 51
Poder: 19
gustavosv Va por buen camino
me refiero a publicar solo el evento OnClick del botón:
Código Delphi [-]
TNothing = class(TControl)
private
  FPanel: TPanel;
  FBoton: TButton;
public   
  property OnClick; ??? 
end;
Reply With Quote
  #7  
Old 16/09/2015
gustavosv gustavosv is offline
Miembro
 
Join Date: Mar 2008
Posts: 51
Poder: 19
gustavosv Va por buen camino
jajaja ... nos cruzamos por 1 minuto los post ...

Gracias Agustín, ahora si ya funcionó como es.

Saludos,

GustavoSV

Last edited by gustavosv : 16/09/2015 at 02:06.
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Evento OnClick en runtime hgiacobone OOP 5 31/07/2014 10:22
evento onClick a componente que no lo tiene locojoan API de Windows 2 20/09/2010 10:40
Evento OnClick de un componente Edit xio Varios 5 24/11/2009 12:31
Evento OnClick vtdeleon OOP 4 08/08/2005 23:40
Evento onClick jzk OOP 4 27/10/2004 18:46


All times are GMT +2. The time now is 21:10.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi