Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Simular Click en Boton de mi Aplicacion Delphi (https://www.clubdelphi.com/foros/showthread.php?t=79386)

gersojn 30-06-2012 00:20:11

Simular Click en Boton de mi Aplicacion Delphi
 
Hola, les comento que estoy desarrollando una aplicacion en Delphi XE, en la cual tengo 2 Forms. Tengo un Problema y es que tengo 2 botones(Boton A y Boton B).

Me he liado con una aplicacion en la cual necesito efectuar un proceso que retorna unos resultados, este proceso tiene que ser transparente al usuario, pero pero no debe interactuar con el mismo.

La duda que tengo, es como puedo lanzar un click a un boton de mi aplicacion. Le por aca que se pueden lanzar clicks a aplicaciones externas, seguna las coordenadas de una aplicacion y otros parametros adicionales. Pero no encuentro como hacerlo para botones propios en la aplicacion.

Otra cuestion, trate de gestionar el proceso, mediante un procedure, por Ejemplo:

Código Delphi [-]

Procedure Mi_Proceso();
Begin
ShowMessage('Mensaje Proceso Form2');
End;

El problema es que no puedo acceder al proceso desde el form1. Ya hice referencia al Unit en el Form1, puedo acceder a todos los objetos del Form2 desde el Form1, todo con excepcion del proceso.

Tambien intente colocando el proceso en

Código Delphi [-]
public
procedure Mi_Proceso();

Pero no me funciona. Alguien tiene una idea, ya sea que me pueda orientar, sobre como enviar un click a un form de la propia aplicacion, o bien como ejectuar un proceso como el que indique anteriomente desde un FormX en un FormY.

De antemano muchas gracias por las respuestas y por la ayuda que me pueda brindar.

escafandra 30-06-2012 00:45:53

LLama directamente al proceso OnClick:
Código Delphi [-]
Form1.Button1Click(self);

Tambien puedes revisar esto.


Saludos.

ecfisa 30-06-2012 01:02:31

Hola jersonjn.

Agregando algo más a lo que te comenta el amigo escafandra, si en Form2 tenes declarado un procedimiento(no método) en la sección de interface, tendrías que poder llamarlo sin problemas en forma dirécta desde Form1:

Form1:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
 if not Assigned(Form2) then 
   Form2:= TForm2.Create(Self);
 Form2.Show;   // Ojo con ShowModal
 Procedimiento; // <- llamada directa al procedimiento
end;

Form2:
Código Delphi [-]
unit Unit2;

interface

uses
    ...
type
  TForm2 = class(TForm)
  ...
  end;

  procedure Procedimiento;

...
El comentario sobre ShowModal es por que la línea que invoca al procedimiento en Form1, no se ejecutará hasta que se cierre Form2.

Y si además llegaras a tener en Form2 algo como
Código Delphi [-]
...
procedure TForm2.FormDestroy(Sender: TObject);
begin
  FreeAndNil(Form2);
end;
con seguridad obtendrás una excepción.

Saludos.

gersojn 30-06-2012 01:21:14

Gracias.
 
Gracias, es exactamente lo que buscaba, gracias me has sacado de un grandisimo apuro con esto :).
Lo solucione con
Código Delphi [-]
form3.Button2Click(self);


La franja horaria es GMT +2. Ahora son las 14:00:47.

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