Ir al contenido


Foto

Usando FindComponent


  • Por favor identifícate para responder
7 respuestas en este tema

#1 memofer

memofer

    Member

  • Miembros
  • PipPip
  • 32 mensajes

Escrito 27 febrero 2013 - 10:40

Saludos a todos

Tengo una duda (problema), quisiera ver si pueden orientarme.
Estoy usando el FindComponent para reconocer un objeto de un Form a otro, osea algo asi como querer heredar las propiedades de Left, Top, Width, etc de un Panel a el Panel de otro Form.
Para que me entiendan mas voy a poner el ejemplo aqui:


delphi
  1. with TUniPanel(FindComponent('Main.MainForm.PDomi1')) do    <<----- aqui es donde no creo estar bien.
  2.       begin
  3.         Left := PDomi.Left;
  4.         Top :=  PDomi.Top;
  5.         width := PDomi.Width;
  6.         Height:= PDomi.Height;
  7.         Color := Random(MaxInt) and $FFFFFF;
  8.         Visible := True;
  9.         Caption := Main.MainForm.DBEditRolGuia.Text;
  10.       end;


Espero contar con su ayuda, muchas gracias.
  • 0

#2 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.301 mensajes
  • LocationArgentina

Escrito 27 febrero 2013 - 10:55

Hola memofer,

¿Cuál es tu duda? ¿O cual es el error que te aparece?
FindComponent() lo que recibe como parámetro es el nombre del componente a buscar y regresa el objeto en cuestión.
Lo que veo en tu código es que intentas pasar como parámetro la referencia de un objeto en lugar de un nombre, salvo que efectivamente el nombre sea 'Main.MainForm.PDomi1'. Debería ser en todo caso algo Main.MainForm.PDomi1.Name, o .Text, .Caption según del componente en cuestión y el texto esperado por el cual buscar y si comillas:



delphi
  1. FindComponent(Main.MainForm.PDomi1.Name)



No está demás decir que FindComponent() devuele nulo (nil) si no ha encontrado al componente. Debiera haber un control previo antes de ejecutar un With.

Saludos,
  • 0

#3 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 27 febrero 2013 - 11:23

Saludos a todos

Tengo una duda (problema), quisiera ver si pueden orientarme.
Estoy usando el FindComponent para reconocer un objeto de un Form a otro, osea algo asi como querer heredar las propiedades de Left, Top, Width, etc de un Panel a el Panel de otro Form.
Para que me entiendan mas voy a poner el ejemplo aqui:


delphi
  1. with TUniPanel(FindComponent('Main.MainForm.PDomi1')) do    <<----- aqui es donde no creo estar bien.
  2.       begin
  3.         Left := PDomi.Left;
  4.         Top :=  PDomi.Top;
  5.         width := PDomi.Width;
  6.         Height:= PDomi.Height;
  7.         Color := Random(MaxInt) and $FFFFFF;
  8.         Visible := True;
  9.         Caption := Main.MainForm.DBEditRolGuia.Text;
  10.       end;


Espero contar con su ayuda, muchas gracias.



Creo que tu problema es que usas FindComponent sin decir desde donde quieres buscar, es decir, le pides al TForm actual, el "self", que busque entre SUS componentes uno 'loquesea'... y es que no lo tiene!

Resumiendo, prueba esto:



delphi
  1. MainForm:= TMainForm.create(self);
  2. with TUniPanel(MainForm.FindComponent('Domi1')) do
  3.       begin
  4.         Left := PDomi.Left;
  5.         Top :=  PDomi.Top;
  6.         width := PDomi.Width;
  7.         Height:= PDomi.Height;
  8.         Color := Random(MaxInt) and $FFFFFF;
  9.         Visible := True;
  10.         Caption := Main.MainForm.DBEditRolGuia.Text;
  11.       end;



Donde MainForm es tu form que contiene el panel ese (te lo he creado arriba, pero seguramente tu ya tienes ese form creado en tu código).
  • 0

#4 memofer

memofer

    Member

  • Miembros
  • PipPip
  • 32 mensajes

Escrito 27 febrero 2013 - 11:25

Bueno, mi duda es saber si estoy usando correctamente el FindComponent.
Ahora explico mas lo que estoy pasando:
Tengo el primer Form1, ahi tengo varios TUniPanel o TPanel, al darle click a estos panels me pasa a otro Form2, en este otro Form2, modifico a mi antojo un Panel, al terminar de modificarlo, le doy OK y los valores modificados del Left, Top, Width, etc. son pasado a otro Panel de el Form1. osea que el valor que le paso al FindComponent puede variar para ser cualquiera de los 50 Panel que tengo en el Form1.
Gracias Delphius, espero no haberte confundido con mi explicación.
  • 0

#5 memofer

memofer

    Member

  • Miembros
  • PipPip
  • 32 mensajes

Escrito 27 febrero 2013 - 01:59

Me respondere a mi mismo jeje, no es cierto, solo es para dar por cerrado el tema.
Solo estaba dandole un mal uso a la funcion FindComponent.
Lo que yo hacia era decirle a la funcion FindComponent que fuera a
la forma y luego al component, osea asi:


delphi
  1. with TUniPanel(FindComponent('Main.MainForm.PDomi1')) do


Pero estaba equivocado,  lo que debo hacer es ir a la MainForm y decirle que use la funcion FindComponent para que ahi ya busque el componente que deseo, osea que algo asi:


delphi
  1. with TUniPanel(Main.MainForm.FindComponent('PDomi1')) do


Ya con eso logro heredar valores(PARAMETROS) de cualquier Forma a cualquier otra FormaN.
Gracias a todos por sus comentarios.

  • 0

#6 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.301 mensajes
  • LocationArgentina

Escrito 27 febrero 2013 - 09:24

Que bueno que encontraras la solución. Pongo el hilo como RESUELTO.

No me había percatado de que debías hacer un FindComponent sobre el form principal  :( hasta leer la intervención de Sergio. Hoy si que estuve lento.  :(

Saludos,


  • 0

#7 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 28 febrero 2013 - 05:45

Me respondere a mi mismo jeje, no es cierto, solo es para dar por cerrado el tema.
Solo estaba dandole un mal uso a la funcion FindComponent.
Lo que yo hacia era decirle a la funcion FindComponent que fuera a
la forma y luego al component, osea asi:


delphi
  1. with TUniPanel(FindComponent('Main.MainForm.PDomi1')) do


Pero estaba equivocado,  lo que debo hacer es ir a la MainForm y decirle que use la funcion FindComponent para que ahi ya busque el componente que deseo, osea que algo asi:


delphi
  1. with TUniPanel(Main.MainForm.FindComponent('PDomi1')) do


Ya con eso logro heredar valores(PARAMETROS) de cualquier Forma a cualquier otra FormaN.
Gracias a todos por sus comentarios.


Eso justo es lo que te decía yo... pero bueno, si has llegado por otro lado, bien está.
  • 0

#8 memofer

memofer

    Member

  • Miembros
  • PipPip
  • 32 mensajes

Escrito 28 febrero 2013 - 10:05

Sergio
Disculpas
Claro que fue por lo que tu me dijiste, solo que me falto agradecerte y poner que de ahi fue que deduje lo que puse en  mi explicación.
Gracias Sergio
  • 0




IP.Board spam blocked by CleanTalk.