Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 27-05-2004
Sonic Sonic is offline
Miembro
 
Registrado: may 2004
Posts: 40
Poder: 0
Sonic Va por buen camino
Supongo que no me explicado muy bien, suele ocurrirme a menudo, es que aprendí builder por mi cuenta y es muy probable que no esté usando los términos correctos, veras:

Cuando digo que mi componente lo quiero hacer VCL lo que quiero decir es que lo quiero incrustar en las barras de herramientas, ahora mismo lo tengo en la barra Samples (lo llamo TSRichEdit y hereda obviamente de TRichEdit), disponible para poder ser arrastrado a la aplicación de cualquier usuario.

Según tenía entendido eso es un componente VCL, pero ya te digo si no es así agradecería una aclaración.

Mi problema no es la asignación del evento, para asignarlo uso órdenes como:

Puntero_a _funcion_de_usuario =OnSelectionChange;
OnSelectionChange=MiFuncion;

Y el evento se asigna correctamente.

Lo que yo quiero es que mi componente, cuando alguién lo "pegue" en su aplicación responda al evento OnSelectionChange, primero mediante mi funcion y despus mediante la que él tenga especificada en el Inspector de Objetos.

Para ello, la última linea del código de MiFuncion es :

Puntero_a _funcion_de_usuario (Owner);

Y así se ejcuta primero mi función y luego la del usuario.

Y ahora cuento de nuevo el problema:

Cuando, como usuario, del Componente VCL abro un proyecto, que contiene ese nuevo componente, pegado desde la barra de herramientas Samples. Éste entra en estado de ejecucíón (en la versión anterior del componente, la que no está integrada en la barra SAMPLES no se ejecuta el código del componente hasta que no se ejecuta el proyecto completo por eso me refiero a uno como VCL (Visual Component Library) y al otro como componente o clase a secas). Al ajecutarse el código del componente se llega a las lineas:

Puntero_a _funcion_de_usuario =OnSelectionChange;
OnSelectionChange=MiFuncion;

En concreto la última borra automáticamente en el inspector de objetos la casilla donde antes ponía SRichEdit1SelectionChange (por ejemplo) y me la deja vacía.
La función SRichEdit1SelectionChange sigue existiendo en el código pero el vículo se ha roto.

Cuando posteriormente le doy a ejecutar, la aplicación se ejecuta sin problemas, ya que el componente tiene capturada la dirección de la funcion del usuario (SRichEdit1SelectionChange). Pero, si guardo el proyecto, esta vez se guarda sin el vículo a la función de usuario (es decir con la casilla del Inspector de Objetos vacía). De modo que al cerrar y abrir el proyecto otra vez, cuando mi componente va a guardar en la variable
Puntero_a _funcion_de_usuario la dirección de la funcion de usuario que atiende a OnSelectionChange se encuentra con que esta dirección es NULL (el vínculo hora no existe) y posteriomente cuando se ejecuta el proyecto completo al producirse el evento OnSelectionChange solo se ejecuta mi función y no la del usuario pese a que está esta escrita.

Espero que esta vez haya quedado un poco más claro que es lo que quiero hacer y cuál es mi problema, y espero que ahora sí me podaís ayudar.

Gracias
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 16:00:14.


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