Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con findcomponent! (https://www.clubdelphi.com/foros/showthread.php?t=44813)

b3nshi 15-06-2007 05:18:02

Ayuda con findcomponent!
 
Les cuento mi problema...

tengo en un formulario los siguintes componentes:
label1, label2, edit1, edit2, edit3, memo1, memo2, button1.

En el onclick del button1 digo q tome el texto del edit3 (el texto q se debe ingresar es el nombre de alguno de los componentes existentes, por ejemplo: label1) y luego a ese componente le cambie la posicion top a 0.

Intente hacerlo de la siguiente manera:

Código Delphi [-]
   ...
   var
   comp: tcomponent;
 
   begin
   comp := findcomponent(edit3.text);
   comp.top := 0;
 
 {y me sale un error, ya q la propiedad top, no aparece en la 
   lista de las posibles del componente}
   ...

El problema es q si o si tengo q cambiarle la propiedad sin saber a q clase pertenece el componente... y yo se desde antes q la propiedad si la tiene... no se si se entiende... pero si a alguien le ocurre como hacerlo estaria muy agradecido!

Desde ya muchisimas gracias! Suerte! Y espero puedan ayudarme!

roman 15-06-2007 05:26:38

A ver si algo como esto:

Código Delphi [-]
if comp is TControl then
  TControl(comp).Top := 0;

// Saludos

b3nshi 15-06-2007 06:08:20

Muchas Gracias por la respuesta Roman... pero... mmm... veamos...
te explico... lo de recien fue un ejemplo... en realidad lo q estoy queriendo hacer es cambiar varias propiedades en comun q tienen estos objetos, como ser top, left y weight...

Entonces si hago esto, por cada tipo de objeto q se me presente tengo q volver a escribir todas las propiedades... onda algo asi:
Código Delphi [-]
if comp is tedit then
   begin
     with tedit(comp) do
         begin
              top:=
              height:=
              left:=
              weight:=
         end;
    end;  
 
if comp is tlabel then
   begin
     with tlabel(comp) do
         begin
              top:=
              height:=
              left:=
              weight:=
         end;
    end;
{y asi con cada tipo de componente solo q estaria repitiendo las propiedades}

y eso es lo q quiero evitar... tener q escribir muchas veces el mismo codigo... y la verdad q no se me ocurre como hacerlo con una subfuncion...
alguna idea?

desde ya muchas gracias por contestar y tan rapido!

roman 15-06-2007 06:19:19

Yo no digo que hagas un condicional para cada caso posible, sólo con TControl que es el ancestro de todos los demás y que tiene ya esas propiedades

Código Delphi [-]
comp := findcomponent(edit3.text);

if comp is TControl then
begin
  TControl(comp).top := ...
  TControl(comp).height := ...
  TControl(comp).left := ...
  TControl(comp).width := ...
end;

// Saludos

b3nshi 15-06-2007 06:47:06

Mira vos! Me habia olvidado de ese detalle... falta de practica!

Muchisimas Gracias roman... me solucionaste el problema y me simplificaste el codigo! jaja en serio muchisimas gracias!

Hugorr 02-08-2007 21:11:22

pregunta
 
Tengo que hacer un pequeño ajuste en vba, el problema es que necesitaba una funcion como el findComponent de delphi. No se si habra alguna y si la hay podrian decirme cual es. He buscado inf. pero nada solo encuentro la funcion de delphi.

Muchas gracias.


La franja horaria es GMT +2. Ahora son las 03:10:12.

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