Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Cómo ejecutar un método de un formulario desde otro (https://www.clubdelphi.com/foros/showthread.php?t=48994)

alba13 10-10-2007 10:40:29

Cómo ejecutar un método de un formulario desde otro
 
hola
necesito ayuda con una aplicacion de delphi. tengo que llamar desde un form a un metodo de otro form. como debo hacerlo? lo hago poniendo form2.nombremetodo y me dice que no identifica dicho metodo. podeis ayudarme por favor?
muchas gracias

Gabo 10-10-2007 12:04:36

El método del form2, ¿lo has declarado como público?

alba13 10-10-2007 12:27:17

si. y el form del que llamo al metodo usa el otro form (use)

Ivanzinho 10-10-2007 13:09:40

¿Puedes poner el código de la llamada al método?

Un saúdo

alba13 11-10-2007 10:09:35

codigo, gracias por ayudar
 
Código Delphi [-]
function veces :integer;
begin
      result :=strToInt(Form4.Edit1.Text);
end;
 
procedure TForm4.Button1Click(Sender:TObject);
begin
       form2.visible := true;
       form2.calculoPi(veces);
end;
 
//en el form2
public procedure calculoPi(veces:integer);
begin 
end;

dec 11-10-2007 10:18:20

Hola,

Fíjate que "calculoPi" debe ser un método de "form2", y no un procedimiento cualquiera. Es decir:

Código Delphi [-]
procedure calculoPi(veces: integer);
begin
  {...}
end;

Es un procedimiento, aunque se implemente en la misma unidad que "form2", pero:

Código Delphi [-]
procedure TForm2.calculoPi(veces: integer);
begin
  {...}
end;

Ya es un método de "form2", y por tanto puede ser ejecutado como tú requieres:

Código Delphi [-]
begin
  form2.calculoPi(2);
end;

alba13 11-10-2007 10:22:34

ahora lo miro.
muchas gracias

alba13 11-10-2007 10:29:55

supuestamente si yo pongo form2. deberia desplegarse la lista de metodos y componentes publicos no?
es que no ocurre asi en mi programa y eso puede ser q no puede acceder a el no?

dec 11-10-2007 10:32:50

Hola,

Efectivamente, el método al que quieres acceder debería ser público y no privado.

Código Delphi [-]
unit Unit2;

interface

{...}

type
  TForm2 = class(TForm)
  public
    procedure calculoPi(veces: integer);
  end;

var
  Form2: TForm2;

implementation

{...}

procedure TForm2.calculoPi(veces: integer);
begin
  {...}
end;

Código Delphi [-]
unit Unit1;

interface

{...}

type
  TForm1 = class(TForm)
  private
    procedure UsaCalculoPi(); 
  end;

var
  Form1: TForm1;

implementation

uses
  Unit2;

procedure TForm2.UsaCalculoPi();
begin
  Form2.calculoPi(2);
end;

Más o menos...

alba13 11-10-2007 10:37:30

Hola,
ya he declarado el método calculoPi como público, poniendo public en la cabecera. (public procedure calculoPi (veces:integer);

alba13 11-10-2007 10:38:10

Hola,
ya he declarado el método calculoPi como público, poniendo public en la cabecera. (public procedure calculoPi (veces:integer);

el error que me da es undeclared identifier

dec 11-10-2007 10:40:44

Hola,

He actualizado mi anterior mensaje mientras tú escribías el último... Echa un vistazo a mi anterior mensaje... fíjate cómo está declarado el método en "Form2" y cómo se usa luego desde un supuesto "Form1". Si aún no te aclaras copia por aquí el código fuente en cuestión, si bien no todo, algo que de una idea de dónde puede estar el problema.

alba13 11-10-2007 10:44:42

jo, muchas gracias, creo que ya se ha solucionado, no sabia que debia declararlo en la parte Type.
la verdad es que no se mucho de delphi, y me explico, estoy haciendo con una compañera una comparativa de lenguajes de programacion, de los lenguajes delphi, Java, C++ y Visual Basic. Hemos realizado una misma aplicacion en los 4 lenguajes y estamos comparandolos. La verdad es que solo sabemos Java bien.
otra vez, muchas gracias

dec 11-10-2007 11:05:42

Hola,

Estupendo. Ya nos diréis cómo queda la comparativa. :)

alba13 11-10-2007 12:11:27

un pequeña preguntita...:)
 
:)hola otra vez
necesito usar un array que va de 1 a numeroPosi (variable que recibo por parametros), como lo declaro? es que al poner en
var
aBB : array[1..numeroPosi] of integer;
me da error, quito y pongo
var
aBB : array of integer;

y funciona, pero luego me dice para inicializarlo.
¿cómo le indico que el array va de 1 a numeroPosi?

dec 11-10-2007 12:23:18

Hola,

No mezclemos temas en un mismo hilo... revisa la guía de estilo, procura usar etiquetas cuando muestres código fuente...

Pero, en fin, saltémonos la regla y hagamos una excepción. Si quieres inicializar el tamaño de un "Array" y el mismo ha de estar determinado por el valor de una variable que recibes por parámetro, la idea es usar la función "SetLength", que te permite determinar cuán grande es un "Array".

Es decir, puedes hacer algo como esto:

Código Delphi [-]
procedure Foo(longitudArray: integer);
var
  aBB: array of integer;
begin
  SetLength(aBB, longitudArray);
  {...}
end;

alba13 11-10-2007 12:34:26

muchas gracias otra vez


La franja horaria es GMT +2. Ahora son las 03:35:59.

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