Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como llamar un procedimiento de un Tframe no creado? (https://www.clubdelphi.com/foros/showthread.php?t=82441)

Theluar 07-03-2013 07:41:48

Como llamar un procedimiento de un Tframe no creado?
 
Hola! a todos . Saludos

Quizás el titulo pueda parecer extraño, pero no supe como referirme a mi duda en el.

Mi duda es como mandar llamar el procedimiento de un TButton que tiene como padre un [COLOR="rgb(46, 139, 87)"]TFrame[/color] y que a su vez es creado en tiempo de ejecución.

e intentado llamarmalo como:

Código Delphi [-]
Button1.Click(Self)

La cuestion es que como en tiempo de diseño el Tframe no ha sido asignado a algun TForm obiamente me marca error.

Ademas de que no se si exista otra forma de encontrar el Tbutton que no sea de la forma:

Código Delphi [-]
TButton(FindComponent('Button1')).Click(Self)

ya que tengo otro frame en ejecucion que tiene un Tbutton con el mismo nombre. Quizas lo mas sencillo seria cambiar el nombre a mis componentes. Pero quizás exista alguna manera de identificar el TFrame y despues el TButton dentro del TFrame, si la hay se los agradecería o si no alguna idea de como realizar esta tarea. o si de plano tengo que cambiar el nombre para realizarlo pues que me lo hagan saber.

Les agradesco su tiempo y sus respuestas y puntos de vista .

Gracias
Saludos.

Neftali [Germán.Estévez] 07-03-2013 10:16:29

Igual que lo harías con un form que crearas en tiempo de ejecución.
¿Cómo creas el TFrame en ejecución? ¿Te guardas la referencia?

Código Delphi [-]
  Frame1 :=  TMyFrame.Create(...);
  ....

Si lo has hecho así, no debería haber problema en luego llamar al botón de la siguiente forma:

Código Delphi [-]
  Frame1.Button1.Caption := 'hola';
  Frame1.Button1Click(nil);
  ...

Tal vez no he entendido la pregunta....

dec 07-03-2013 11:48:03

Hola,

Tal como lo entiendo, y, sabiendo de antemano que no es posible usar un objeto sin antes crearlo... creo que "lo que haces" en el evento "OnClick" del botón en cuestión, debería ser separado de dicho evento y puesto en otro lugar, de manera que el botón de marras pueda hacer uso del código y también pueda usarse dicho código separado desde otros lugares del programa. Es decir, tú preparas un procedimiento en una unidad de nombre, digamos, "UUtilidades.pas":

Código Delphi [-]
procedure MiProcedimiento();
begin
  // Haz lo que tengas que hacer aquí
end;

De esta forma en el evento "OnClick" del botón puedes llamar a dicho procedimiento, y, desde otro lugar del programa también, ya si necesidad de crear frame ni botón alguno sólo para eso.

Theluar 08-03-2013 21:18:49

Solucionado.
 
Muchas gracias Neftali y Dec.

Me sirvieron mucho sus consejos los dos los use, aun que no para el mismo problema , muchas graci

Tal y como lo decia Neftali, es como lo estaba haciendo , pero me marcaba erroro por que no habia declarado los frames .
Disculpen por mi error

gracias de nuevo por su ayuda

Saludos


La franja horaria es GMT +2. Ahora son las 04:54:50.

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