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 19-01-2017
Jose_Pérez Jose_Pérez is offline
Miembro
 
Registrado: may 2003
Posts: 156
Poder: 21
Jose_Pérez Va por buen camino
Componente dentro de otro aparece la ventana de ordenación de acceso

Hola:

Estoy trabajando con Delphi 5. He desarrollado un componente que, a su vez, utiliza un componente ya existente. Funciona muy bien. El problema es que el componente incluido dentro del desarrollado por mí se muestra en la ventana de ordenación de acceso (tab edit order), no así en el inspector de objetos. ¿Qué estoy haciendo mal?

Además, en tiempo de diseño al pasar el ratón sobre el componente en desarrollo, en la eqtiqueta emergente (hint) se muestra el componente incluido.

Por favor, ver código y jpeg adjuntos.

Código Delphi [-]


  TSpecialEdit = class(TEdit)
  private
    FDateEdit: TNewDateEdit;


Constructor TSpecialEdit.Create(AOwner: TComponent);
Begin

  Inherited Create(AOwner);

  FDateEdit:=TNewDateEdit.Create(Self);

  // Inicialmente el componente no está visible

End;

// Cuando se da una condición lo hago visible asignandole la propiedad Parent.

procedure TSpecialEdit.WMPaint(var Message: TWMPaint);
begin

 inherited;

  If Condicion Then
     begin

     If FDateEdit.Parent=Nil Then
        FDateEdit.Parent:=Parent

     end
     else
     FDateEdit.Parent:=Nil;

end;
Imágenes Adjuntas
Tipo de Archivo: jpg taborder.JPG (16,5 KB, 10 visitas)
Tipo de Archivo: jpg iobjetos.JPG (6,7 KB, 10 visitas)
Responder Con Cita
  #2  
Antiguo 19-01-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Hay varias formas de tratar con componentes anidados. Hay una presentación de Ray Konopka del CodeRage X que explica muy claramente unas 3 variantes, te recomiendo que la mires

Una alternativa es utilizar sub componentes. Esto sería como el caso del TLabeledEdit en donde todas las propiedades del TLabel están disponibles para modificar.

Otra forma es publicar las propiedades del sub componente que te interesan modificar. De este modo se promueve el encapsulamiento

Revisa este link http://etutorials.org/Programming/ma...nd+Components/
Responder Con Cita
  #3  
Antiguo 20-01-2017
Jose_Pérez Jose_Pérez is offline
Miembro
 
Registrado: may 2003
Posts: 156
Poder: 21
Jose_Pérez Va por buen camino
Cita:
Empezado por AgustinOrtu Ver Mensaje
Hay varias formas de tratar con componentes anidados. Hay una presentación de Ray Konopka del CodeRage X que explica muy claramente unas 3 variantes, te recomiendo que la mires
Un artículo muy interesante. Pero fíjate que los componentes que utiliza de ejemplo (TTimer, TLabel y TBevel) ninguno puede tomar el foco de entrada, por lo tanto, no aparecen nunca en las ventana de ordenación de acceso. Además no aporta nada nuevo a mi código, al menos en Delphi 5.

Cita:
Empezado por AgustinOrtu Ver Mensaje
Una alternativa es utilizar sub componentes. Esto sería como el caso del TLabeledEdit en donde todas las propiedades del TLabel están disponibles para modificar.

Otra forma es publicar las propiedades del sub componente que te interesan modificar. De este modo se promueve el encapsulamiento
No es esto lo que busco.

Muchas gracias por tu amable respuesta.
Responder Con Cita
  #4  
Antiguo 20-01-2017
Jose_Pérez Jose_Pérez is offline
Miembro
 
Registrado: may 2003
Posts: 156
Poder: 21
Jose_Pérez Va por buen camino
Revisando un poco mi código, me he dado cuenta que quizás el problema está al asignar la propiedad parent. En lugar de FDateEdit.Parent:=Self (mi component) le asigno FDateEdit.Parentt:=Parent (la ventana que lo contiene) para que FDateEdit (es un botón de edición) se muestre junto al TSpecialEdit. Mii intención es encapsular los dos componentes para que parezcan uno solo.

Código Delphi [-]

// Cuando se da una condición lo hago visible asignandole la propiedad Parent.

procedure TSpecialEdit.WMPaint(var Message: TWMPaint);
begin

 inherited;

  If Condicion Then
     begin

     If FDateEdit.Parent=Nil Then
        FDateEdit.Parent:=Parent {<- probablemente el problema está aquí}

     end
     else
     FDateEdit.Parent:=Nil;

end;
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
No aparece la ventana emergente de codigo en el editor. Jere_84 Varios 3 07-07-2014 21:15:45
No aparece dentro PHP 5.5.1 el modulo interbase.so subzero PHP 0 30-04-2014 16:36:14
Free a un componente dentro de otro r_e_g_2007 OOP 10 12-03-2012 20:18:21
Problema acceso propiedades de un componente de otro formulario mguixot OOP 3 01-11-2004 01:40:09
Un componente dentro de otro. Tonio OOP 9 11-11-2003 23:44:12


La franja horaria es GMT +2. Ahora son las 04:57:59.


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