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 16-10-2007
Avatar de cacu
cacu cacu is offline
Miembro
 
Registrado: dic 2005
Ubicación: Chile
Posts: 132
Poder: 19
cacu Va por buen camino
Derivar Componente

Un grato saludo a todos los foristas
Estoy tratando de derivar un componente y poder modificar el evento onclik del TButton, que cuando se ejecute este evento me aparesca un mensaje ...

La cosa es que me confundo y no he podido dar con esto...
Sera posible que puedar darme una mano con esto

Se agradeceran sus comentarios
Responder Con Cita
  #2  
Antiguo 16-10-2007
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Si lo que quieres es solo lanzar un mensaje al ejecutar el evento (ONclick) pon dentro el mensaje y la forma que desees y si lo que quieres crear un componente, haz lo mismo en el evento on click, para el primer caso te pongo un ejemplo de memoria

Código Delphi [-]
procedure miaplicacion.buton1OnClick(...)
begin
      MEssagebeep(30);  //Si quieres mandar un sonido 
      Showmessage('Hola Mundo');  //El mensaje
       ...... (resto de código)
end
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #3  
Antiguo 16-10-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por cacu Ver Mensaje
Estoy tratando de derivar un componente y poder modificar el evento onclik del TButton, que cuando se ejecute este evento me aparesca un mensaje...
Como ya te han dicho, para sacar un mensaje puedes usar el evento estandard del componente.
Si realmente necesitas derivarlo, entonces, en ese caso, nunca debes utilizar los eventos del componente, para eso debes utilizar métodos virtuales o mensajes.

En el caso de TButton, hay un evento que puedes sobreescribir:

Código Delphi [-]
  procedure Click; override;

Crea este método en la parte public de tu componente y programa lo que necesites (no olvides de llamar al inherited); Algo así:

Código Delphi [-]
procedure TMiButton.Click();
begin
  // Método heredado
  inherited Click;
  // Mostrar mensaje
  ...    <= Tu mensaje
end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 16-10-2007 a las 16:37:43.
Responder Con Cita
  #4  
Antiguo 16-10-2007
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Bueno es que me corrigas Neftali, gracias a ello procurare no cometer ese error.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #5  
Antiguo 16-10-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por José Luis Garcí Ver Mensaje
Bueno es que me corrigas Neftali, gracias a ello procurare no cometer ese error.
Bueno, he de decir que mi afirmación no fue exacta 100%.
He leído mimensaje y creo que ha quedado un poco en el aire, así que intentaré explicarlo mejor.

(1º) Derivar un componente y utilizar (sobreescribir) eventos.
En el mensaje anterior dije que esto nunca se debía hacer; Tal vez debería haber dicho que no se debe hacer a no ser que no exista otra opción (NOTA1).
En problema de utilizar ventos, es que si lo hacemos tal cual y el programador final utiliza ese evento, se perderá la programación qu nosotros hemos hecho en el. Un evento no es más que un puntero a una función. Si utilizamos ese puntero corremos el riesgo de que el programador final lo vuelva a utilizar y ese único puntero llevará a su función en lugar de a la nuestra.
SOLUCIÓN: Si no hay otro remedio, lo que hay que hacer es crear un puntero auxiliar que apunte a la original y luego programar la nuestra; Y desde la nuestra llamar a la original.
En este hilo hay un par de ejemplos de cómo hacerlo explicados.

(2º) Qué utilizar en lugar de los eventos.
Lo normal es utilizar los métodos definidos como virtuales/abstract en las clases base (que son para eso) o capturar los mensajes de windows.
Si no hubiera métodos virtuales para sobreescribir, ni mensajes para capturar es el único caso en que se puede utilizar el método 1.

NOTA1: De todas formas comentar (es una opinión personal) que si llegamos al punto de necesitar usar el punto (1º), deberíamos plantearnos si el diseño del componente que estamos haciendo es el correcto.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 17-10-2007
Avatar de cacu
cacu cacu is offline
Miembro
 
Registrado: dic 2005
Ubicación: Chile
Posts: 132
Poder: 19
cacu Va por buen camino
Componente

Hola Foristas

En esta ocacion escribo para agradecer su colaboracion y acertividad, en especial Neftali quien atenido una volundad unica..

Sin mas y nuevamente agradiceindo vuestro apollo

cacu.-
Responder Con Cita
  #7  
Antiguo 17-10-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
De nada Cacu.
Sería bueno, para futuras búsquedas y dudas de otros foristas, que explicaras cómo se ha solucionado el tema y el código final (aunque tú y yo ya sabemos por dónde han ido los tiros, así quedará claro también para los demás ).

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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
¿de que componente derivar? más discusión que otra cosa, aclaro :) pvizcay Varios 7 08-05-2007 03:51:15
Componente VCL a OCX Pook OOP 4 27-04-2006 10:27:24
Apuntar una propiedad de un componente a otra de otro componente Majo Varios 10 24-03-2004 19:46:39
Componente!! merlin Varios 0 24-12-2003 10:59:42
Componente On/Off sergisan OOP 8 30-05-2003 16:31:30


La franja horaria es GMT +2. Ahora son las 13:07:51.


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