Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-06-2011
AndyLupa AndyLupa is offline
Miembro
 
Registrado: ene 2006
Posts: 25
Poder: 0
AndyLupa Va por buen camino
Question Asignar Evento

Buenas, estoy haciendo un form gral de consulta.
La idea es que funcione con cualquier tabla , a partir de la informacion pre cargada en una db.
Genere el form , la consulta, los botones, las busquedas pero me queda un tema.

Necesitaría asignar en tiempo de ejecucion un procedimiento a un objeto, mas precisamente a un boton.
El nombre del proc está en una campo str de una DB

Como puedo hacer?
Responder Con Cita
  #2  
Antiguo 17-06-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Para asignar un evento en tiempo de ejecución se hace así:

Código Delphi [-]
TMyForm = class(TForm)
private
  procedure DoBtnClick(Sender: TObject);
public
  constructor Create(AOwner: TComponent); override;
end;

implementation

constructor TMyForm.Create(AOwner: TComponet);
begin
  inherited;
  Button1.OnClick := DoBtnClick
end;

procedure TMyForm.DoBtnClick(Sender: TObject);
begin
  // Hacer algo...
end;


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #3  
Antiguo 17-06-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
El problema es que Andy toma la información del procedimiento a asignar de una cadena de caracteres. Tendría que usar RTTI:

Código Delphi [-]
uses TypInfo;

...

var
  Method: TMethod;

begin
  Method.Data := Self;
  Method.Code := Self.MethodAddress('MiClick');
  TypInfo.SetMethodProp(Button2, 'OnClick', Method);
end;

// Saludos
Responder Con Cita
  #4  
Antiguo 17-06-2011
AndyLupa AndyLupa is offline
Miembro
 
Registrado: ene 2006
Posts: 25
Poder: 0
AndyLupa Va por buen camino
Question Ok

Probe lo que me pasate aunque no lo entendí del todo.
Pero no resultó.

Estuve viendo el tema, pero no encuantro como hacer para asignar el nombre del proc al boton, el nombre del proc lo tengo como str en una db,

Al ser un str no me da error, alguna otra ides?

Les paso parte de mi codigo a ver si se les ocurre algo

Código Delphi [-]
procedure TfrmConsulta.CreoBotones;
var
  NuevoBoton: TSCButton;
begin
  with zQryBusca do
  begin
    SQL.Clear;
    SQL.Add('SELECT *');
    SQL.Add('FROM BOTONES');
    SQL.Add('WHERE MODULO=' + IntToStr(Modulo));
    SQL.Add('ORDER BY ORDEN DESC');
    Open;
    First;
    while not Eof do
    begin
      NuevoBoton := TSCButton.Create(self);
      with NuevoBoton do
      begin
        Parent := PanelInf;
        Align := alLeft;
        with zQryFormat do
        begin
          SQL.Clear;
          SQL.Add('SELECT *');
          SQL.Add('FROM TIPOS');
          SQL.Add('WHERE TIPO=''BOTON''');
          Open;
          Font.Name := FieldByName('FONT').AsString;
          Font.Size := FieldByName('FONT_WIDTH').AsInteger;
          if FieldByName('BOLD').AsInteger = 1 then
            Font.Style := [fsBold];
          Close;
        end;
        Style := cmdBusca1.Style;
        Width := FieldByName('WIDTH').AsInteger;
        Color := StringToColor(FieldByName('COLOR').AsString);
        Name := FieldByName('NAME').AsString;
        Caption := FieldByName('CAPTION').AsString;

{Tambien en la DB tengo un campo con el nombre del proc que debe ejecutar el boton en el cliec
El tema es como asignar este valor
}
      end;
      Next;
    end;
  end;
end;



Última edición por roman fecha: 17-06-2011 a las 18:52:24.
Responder Con Cita
  #5  
Antiguo 17-06-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Por favor, usa etiquetas [delphi] para publicar código:


[delphi]
Aquí tu código
[/delphi]


Por ahora te las he puesto yo.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Asignar una funcion al evento on click abmicros Varios 4 12-11-2009 11:56:36
Asignar un evento desde el código iktwo Varios 2 11-11-2009 00:29:34
Asignar evento OnDrawColumnCell en tiempo de ejecución gluglu OOP 6 01-06-2007 13:14:58
Asignar procedimiento al evento OnClick neon OOP 2 28-10-2004 11:53:21
asignar evento a control creado dinamicamente jorgeganc Varios 4 17-12-2003 02:47:51


La franja horaria es GMT +2. Ahora son las 16:42:53.


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