Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-10-2007
alba13 alba13 is offline
Miembro
 
Registrado: oct 2007
Posts: 22
Poder: 0
alba13 Va por buen camino
Exclamation 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
Responder Con Cita
  #2  
Antiguo 10-10-2007
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
El método del form2, ¿lo has declarado como público?
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.
Responder Con Cita
  #3  
Antiguo 10-10-2007
alba13 alba13 is offline
Miembro
 
Registrado: oct 2007
Posts: 22
Poder: 0
alba13 Va por buen camino
si. y el form del que llamo al metodo usa el otro form (use)
Responder Con Cita
  #4  
Antiguo 10-10-2007
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 20
Ivanzinho Va por buen camino
¿Puedes poner el código de la llamada al método?

Un saúdo
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)
Responder Con Cita
  #5  
Antiguo 11-10-2007
alba13 alba13 is offline
Miembro
 
Registrado: oct 2007
Posts: 22
Poder: 0
alba13 Va por buen camino
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;

Última edición por dec fecha: 11-10-2007 a las 10:16:01.
Responder Con Cita
  #6  
Antiguo 11-10-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 11-10-2007
alba13 alba13 is offline
Miembro
 
Registrado: oct 2007
Posts: 22
Poder: 0
alba13 Va por buen camino
ahora lo miro.
muchas gracias
Responder Con Cita
  #8  
Antiguo 11-10-2007
alba13 alba13 is offline
Miembro
 
Registrado: oct 2007
Posts: 22
Poder: 0
alba13 Va por buen camino
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?
Responder Con Cita
  #9  
Antiguo 11-10-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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...
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 11-10-2007 a las 10:36:26.
Responder Con Cita
  #10  
Antiguo 11-10-2007
alba13 alba13 is offline
Miembro
 
Registrado: oct 2007
Posts: 22
Poder: 0
alba13 Va por buen camino
Hola,
ya he declarado el método calculoPi como público, poniendo public en la cabecera. (public procedure calculoPi (veces:integer);
Responder Con Cita
  #11  
Antiguo 11-10-2007
alba13 alba13 is offline
Miembro
 
Registrado: oct 2007
Posts: 22
Poder: 0
alba13 Va por buen camino
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
Responder Con Cita
  #12  
Antiguo 11-10-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #13  
Antiguo 11-10-2007
alba13 alba13 is offline
Miembro
 
Registrado: oct 2007
Posts: 22
Poder: 0
alba13 Va por buen camino
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
Responder Con Cita
  #14  
Antiguo 11-10-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Estupendo. Ya nos diréis cómo queda la comparativa.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #15  
Antiguo 11-10-2007
alba13 alba13 is offline
Miembro
 
Registrado: oct 2007
Posts: 22
Poder: 0
alba13 Va por buen camino
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?
Responder Con Cita
  #16  
Antiguo 11-10-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #17  
Antiguo 11-10-2007
alba13 alba13 is offline
Miembro
 
Registrado: oct 2007
Posts: 22
Poder: 0
alba13 Va por buen camino
muchas gracias otra vez
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
refrescar un datagrid desde otro formulario en vb.net Mayorlin .NET 8 01-08-2007 20:02:20
¿Como asignar action:=caFree por defecto para todo formulario? Cheerpipe OOP 8 14-05-2007 20:34:13
problemas para pasar los datos de un Tmemo a otro, ya probe de todo :/ nahuel007 Varios 6 08-01-2005 20:05:02
Pasar datos desde otro formulario taita Varios 5 04-10-2004 23:48:45
ejecutar aplicacion desde delphi como otro usuario aram2r API de Windows 3 03-06-2004 10:36:12


La franja horaria es GMT +2. Ahora son las 06:29:43.


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
Copyright 1996-2007 Club Delphi