FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
InheritsFrom
hola gente,
la funcion InheritsFrom me está devolviendo siempre false aún cuando estoy seguro que tendría que dar verdadero. Aca les paso como la estoy usando, seguramente estoy haciendo algo mal. ... Código:
if self.list[i].InheritsFrom(TControl) then Casi todas los componentes heredan de ahi. Grillas, Groupboxes, RatioGroups ... etc. list es un TObjectList con un listado de objetos como Grillas, Groupboxes, RatioGroups ... etc. Gracias por su ayuda Federico.-
__________________
El secreto de la libertad está en no tener miedo. |
#2
|
||||
|
||||
La herencia de TObjectList es:
TObjectList -> TList -> TObject Y los items de esta clase son del tipo TObject, por lo tanto lo que contenga esta lista puede heredar o no de TControl. Porque no nos muestras algún otro ejemplo donde estes seguro que no funcione. Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
|||
|
|||
en la lista agrego TGroupBoxes por ejemplo
Código:
lista.add(Groupbox1); lista.add(Groupbox2); lista.add(DBGrid1); lista.add(DBGrid2); Código:
for i := 0 to self.list.Count -1 do Código:
if self.list[i].InheritsFrom(TControl) then Código:
showmessage(TControl(self.list[i]).Name); gracias por tu ayuda ... sigo probando sin exito
__________________
El secreto de la libertad está en no tener miedo. |
#4
|
|||
|
|||
debo tener otro problema porque si creo un proyecto nuevo con un boton y un groupbox
Código:
procedure TForm1.Button1Click(Sender: TObject); begin if GroupBox1.InheritsFrom(Tcontrol) then showmessage('si') else showmessage('No'); end;
__________________
El secreto de la libertad está en no tener miedo. |
#5
|
||||
|
||||
Yo particularmente acostumbro usar el operador is, pero eso no viene al tema.
He probado esto, y funciona sin problemas: Código:
procedure TForm1.Button2Click(Sender: TObject); var Ol: TObjectList; begin Ol := TObjectList.Create; Try Ol.Add(Button1); if Ol.Items[0].InheritsFrom(TControl) Then ShowMessage('Ok!') else ShowMessage(Ol.Items[0].ClassName + ' no hereda de TControl'); finally Ol.Free; end; end; Me parece muy extraño que algo tan básico falle
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#6
|
||||
|
||||
Te aclaro que escribí el mensaje anterior sin leer tu último mensaje... pero tu último mensaje es aún mas desconcertante.
Prueba mostrar el ClassName cuando este falla... Aunque sea muy loco: ¿Estas usando alguna unit que defina otra clase TControl ?... (CLX??) prueba comparando contra Controls.TControl ¿Que units estas usando?
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#7
|
|||
|
|||
diste en la tecla delphi.com.ar !!!!!
estaba usando la unit QControls no me preguntes por que ..... mil gracias.... son esos errores que podes estar años buscando ... gracias de nuevo. saludos compatriota. fede.-
__________________
El secreto de la libertad está en no tener miedo. |
|
|
|