Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-08-2013
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Question Eventos en otras UNIT

Hola a todos,

Tengo delphi 2007 y estoy realizando un programa el cual posee muchas lineas de codigo, por ahi lei que seria mejor utilizar otra UNIT en la cual divido el codigo, mi pregunta es ¿Como puedo capturar un evento (OnClic por ejemplo) hecho en otra unidad? lo he intentado pero a pesar que la coloco en la clausula uses no me aparece como opcion para incluirla en un evento OnClic de un TButton.


Gracias de antemano
Responder Con Cita
  #2  
Antiguo 14-08-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
¿Como puedo capturar un evento (OnClic por ejemplo) hecho en otra unidad?
Hola Jose Roman.

Un ejemplo.

Form1:
Código Delphi [-]
...
type
  TForm1 = class(TForm)
    btnShowForm2: TButton;
    procedure btnShowForm2Click(Sender: TObject);
  private
    procedure ClickEnForm2Button1(Sender: TObject);
  public
  end;
...
implementation

uses Unit2; 

procedure TForm1.ClickEnForm2Button1(Sender: TObject);
begin
  Caption := 'Han echo click sobre Button1 en Form2';
end;

// Asignar evento y mostrar Form2
procedure TForm1.btnShowForm2Click(Sender: TObject);
begin
  Caption := '';
  if not Assigned(Form2) then
  begin
    Form2 := TForm2.Create(Self);
    Form2.Button1.OnClick := ClickEnForm2Button1;
  end;
  Form2.Show; // (o ShowModal)
end;
...

El ejemplo supone que Form2 no está en Auto create form y que, lógicamente en Form2 existe un TButton llamado "Button1".

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 14-08-2013 a las 02:00:56.
Responder Con Cita
  #3  
Antiguo 14-08-2013
Avatar de ozsWizzard
ozsWizzard ozsWizzard is offline
Miembro
 
Registrado: may 2004
Ubicación: Murcia
Posts: 190
Poder: 20
ozsWizzard Va por buen camino
Si lo eventos no se van a reutilizar, aunque se pueda modular el código y llevar código a otras Units, precisamente lo eventos no es lo que deberías llevarte, al menos en mi opinión.

Y si es un código que se va a reutilizar, aún así hay opciones mejores que sacar los eventos de la unidad del formulario. Entre esas opciones, modula el código y llama desde los eventos a esas funciones y procedimientos.

Si asocias eventos de forma dinámica a tus componentes, puedes ser que si te interese tener estos eventos en una unidad concreto.

Mi consejo, si lo aceptas, es que reflexiones sobre cual es tu caso y ver si realmente te interesa llevarte los eventos a otras unidades, hay mucho código exportable a otras unidades y, precisamente, los eventos no son el mejor ejemplo.

Un saludo.
__________________
La Madurez se llama...
~~~Gaia~~~
Responder Con Cita
  #4  
Antiguo 14-08-2013
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
muchas gracias por su colaboracion,
Les comento que los eventos que deseo realizar aparte los deseo hacer en una unidad aparte (File -> New -> Unit) la cual solamente posee:
Código Delphi [-]
unit Unit1;

interface

implementation

end.
Y ahi deseo realizar los eventos pero todo en tiempo de diseño, como por ejemplo que quedara en el evento OnClic del TButton en el Form1 algo asi Unit1.Click, no se que se deba colocar en Uses, piensoi que ahi esta el asunto....
Responder Con Cita
  #5  
Antiguo 14-08-2013
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Utilizar eventos de otra Unit

Hola a todos,


Tengo Delphi 2007 y tengo un programa con mas de 1000 lineas de codigo, deseo realizar los eventos en otra unidad (File -> New -> Unit)



y poder asignarlos a los componentes de mi formulario principal en tiempo de diseño, como por ejemplo en el evento OnClick de un TButton



en la imagen en vez de Button1Click deseo que quede algo como Unit2.ButtonClick.

Sera que se puede esto????? se que se debe colocar en USES la UNIT2 mas no se que se debe colocar de mas para pueda realizar esto.

Gracias por su colaboracion
Responder Con Cita
  #6  
Antiguo 14-08-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Jose Roman.

Por favor, tál como sugiere el punto 6 de la guía de estilo, no crees otro hilo con el mismo tema, continua con el inicial.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 14-08-2013
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
mil disculpas, como veo que no me habian entendido realice una nueva pregunta pero con mas detalle
Responder Con Cita
  #8  
Antiguo 14-08-2013
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Hola gracias por tu respuesta pero en la nueva unidad no hay form utilizo la opcion (File -> New -> Unit) de ahi es que hago la unidad y deseo crear los procedimientos
Responder Con Cita
  #9  
Antiguo 14-08-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Jose Roman.

Por lo que entiendo de tu imágen, deseas asignar en tiempo de diseño, desde el Object Inspector, el evento correspondiente a un TButton residente en otro formulario. Hasta donde sé, eso sólo es posible mediante código de forma similar al ejemplo que te puse en el mensaje anterior.

Pero desconozco si en las últimas versiones de Delphi es posible.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 15-08-2013
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Thumbs up

Hola ecfisa,

Tienes toda la razon me pase buscando por distintos sitios y despues de unas horas y dentro del Object Inspector no se puede.

Te agradezco tu ayuda porque eso me dio una luz para realizardo por el lado que tu propones.
Responder Con Cita
  #11  
Antiguo 21-08-2013
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
gatosoft Va camino a la fama
Ok Amigo Jose Roman, No es posible hacer lo que dices de forma directa, como dice ecfisa, se logra por codigo...

Sin embargo creo que te estas centrando en una solución que no es adecuada para tu problema... apoyo lo que dice ozsWizzard, sobre replantear tu estrategia y modular el código...

Tu problema es: Un programa con muchas lineas, no es un evento en otra unidad.

No se cuanto conozcas de objetos, pero aprender sobre ellos es un buen camino para mejroar tu codigo.

El problema es que normalmente teienes en tu pantalla principal toda la logica de tu aplciacion y en cada boton, tenes toda la logica de un proceso... La mejor práctica es solo hacer llamadas desde tu GUI a código definido en otras unidades agrupadas por funcioanlidad o mejor, convertidas en clases...


De esta forma, tu boton debería tener codigo sencillo como:

Procedure BotonClick(Sender:TObject);
Begin
Factura.Inicializar;
Factura.item.add(...);
Factura.Aplicar;
end;


La lógica de como se inicializa, cómo se agrega y como se aplica una factura está definida en otra parte... tu boton solos e encarga de recoger la información de la pantalla y pasarla a tu otra unidad o clase...

Un saludo,
Responder Con Cita
  #12  
Antiguo 21-08-2013
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Gracias por la respuesta,
Te comento que lo que he aprendido practicamente autodidacta y para completar aqui en Colombia no enseñan este maravilloso lenguaje, tienen un ejemplo de lo que comentan porque como veo el planteamiento propuesto por ecfisa y usted me ayudan, les comento que cada click que doy en un TButton no las muestro en un TForm, lo hago en un TTabSheet de un TPageControl pero ello me ha llevado a que haya muchas lineas de codigo y deseo que sea mas legible para un futuro si necesito realizar alguna modificacion. Gracias

Última edición por Jose Roman fecha: 21-08-2013 a las 19:37:33.
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
DBGrid y otras asdbernardo Varios 5 05-10-2011 00:34:21
¿Filas de 1 color y otras de otras En Synedit IDE Delphi? JXJ Varios 1 11-12-2008 00:01:28
Mi servidor no ve las otras pc´s mefixxto Redes 2 03-10-2008 16:51:06
Monitorear eventos de otras aplicaciones Marco A. Ruiz API de Windows 0 22-08-2006 21:41:59
Ayudas para el uso de las unit Excel2000 y otras del Office Rpabreu Servers 0 07-08-2005 03:14:39


La franja horaria es GMT +2. Ahora son las 06:51:20.


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