Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como saber si un DBComboBox esta incluido en un TDBCtrlGrid (https://www.clubdelphi.com/foros/showthread.php?t=61129)

David 27-10-2008 09:01:31

Como saber si un DBComboBox esta incluido en un TDBCtrlGrid
 
Hola

Como puedo saber si un control esta incluido dentro de otro, mediante un if. En este caso quiero saber si el TDBComboBox esta incluido o no dentro de TDBCtrlGrid.

Un saludo

coso 27-10-2008 09:16:06

Hola, puedes ir recorriendo los componentes de DBCtrlGrid (DBCtrlGrid.Components[]) o bien por su nombre usando FindComponent y comparando la propiedad .parent. saludos.

David 27-10-2008 09:20:48

Con parent no funciona. El caso es que no sé porque.

Desde el DBCtrlGrid, puedo averiguar si un control esta contenido en él, mediante la propiedad containsControl, el caso es lo que quiero es saber si un determinado control, en este caso el DBCombobox esta incluido dentro de un componete del tipo DBCtrlGrid.

Necesito algo así.

if DBComboBox esta contenido dentro de un control TDBCtrlGrid then


La propiedad para otros controles es parent, pero no sé aquí porque no funciona.

coso 27-10-2008 09:22:42

...quiza es porque no esta incluido dentro del DBCtrlGrid...

David 27-10-2008 09:30:52

Hola

He descubierto una forma, algo cutre, pero funciona. Si el DBCombobox esta en un panel o en el formulario, la propiedad parent no esta vacia, pero si esta dentro del control DBCtrlGrid, entonces parent esta vacio. Asi pues

if TDBComboBox.parent.name = '' then
// esta en el TDBCtrlGrid, ya que de mometo todos los controles o pertencen a formulario o a un panel.

No me gusta mucho esta forma, pero de momento salgo del paso.

jorge82 27-10-2008 15:29:11

Hola, el DBCtrlGrid tiene un TDBCtrlPanel y es en éste donde están los componentes, entonces parece que hay que preguntar si el Parent del DBComboBox es de la clase TDBCtrlPanel y no TDBCtrlGrid.

Código Delphi [-]
for I := 0 to Self.ComponentCount-1 do
  begin
    C := Components[i];
    if (C is TDBComboBox) then
      if TDBCombobox(C).Parent.ClassType = TDBCtrlPanel then
      ...
  end;


La franja horaria es GMT +2. Ahora son las 04:15:22.

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