Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Acceder a un componente dinamicamente (https://www.clubdelphi.com/foros/showthread.php?t=66409)

jandro 18-02-2010 17:15:13

Acceder a un componente dinamicamente
 
Hola a todos!!

Mi problema es que tengo varias pestañas que se crean dinamicamente en tiempo de ejecución y dentro de cada una de esas pestañas tengo un TMemo que también se genera dinamicamente en tiempo de ejecución.

Entonces, tengo un boton comun que quiero que escriba en el memo correspondiente a la pestaña que esta activa, pero como el nombre de cada pestaña depende del nombre de un equipo en red que puede ser cualquiera no se como decirle que memo es en cada momento

Idea:
"memo".Lines -> Tengo que conseguir poner en "memo" el memo que corresponde a la pestaña activa, sin saber su nombre.

Espero haberme explicado.
Saludos.

fjcg02 18-02-2010 18:29:42

A vuela pluma.

Memo.Lines.Add(Memo.parent.PageActive.caption);

hay errores, es simplemente un ejemplo. Iguak tienes que haer un cast

TTabshet(Memo.parent).PageActive.caption

Saludos

jandro 18-02-2010 23:04:59

Hola, gracias por tu respuesta.

He probado pero no lo consigo. Voy a poner un ejemplo para ver si alguien me puede ayudar.

Tengo una variable de tipo String que contiene el valor 'MemoPC1' por ejemplo. Que codigo tengo yo que usar para referirme a las lineas del MemoPC1 (MemoPC1.Lines) ?? Realmente necesito usar el valor de esa variable para aplicarlo a un componente.

Gracias de nuevo.
Saludos.

JosepGA 19-02-2010 09:06:51

para obtener el memo de una pestaña en el caso de que solo tenga un componente dentro:

Código Delphi [-]
     ( Pagina.ActivePage.Controls[ 0 ] As tMemo ).Lines.loquequierashacer

para buscar el memo dentro de la pagina:

Código Delphi [-]
            For i := 0 to ( Pagina.ActivePage.Controls.Count - 1 ) Do
               If ( Pagina.ActivePage.Controls[ i ] Is tMemo )  Then
                  Begin
                     // lo que quieras hacer
                  End;

fjcg02 19-02-2010 09:41:40

Puedes utilizar FindComponent.

MiMemo:= FindComponent(variable);

MiMemo.Lines.Add('Lo que quieras');

Es a grosso modo, ya que no tengo delphi a mano.

igual tienes que hacer un cast
MiMemo:= TMemo(FindComponent(variable));

MiMemo es una variable que tienes que declarar de tipo Tmemo.

Saludos

jandro 19-02-2010 10:17:17

Muchisimas gracias!! Por fin lo resolvi!! Era una duda que tenia desde hace mucho. Use la primera solucion y fue como la seda!

Muchas gracias de nuevo!
Saludos.


La franja horaria es GMT +2. Ahora son las 04:51:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi