• Sábado 14 de Diciembre de 2024, 13:59

Autor Tema:  utilizar una funcion desde diferentes formularios  (Leído 1652 veces)

mizzard

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
utilizar una funcion desde diferentes formularios
« en: Viernes 19 de Septiembre de 2008, 16:23 »
0
Hola, tengo creada una libreria con diferentes funciones  para ser utilizada desde diferentes formularios, el caso es que cuando añado una función que depende de un objeto instanciado en uno de los formularios (como un boton) la cosa no funciona.

Este es el archivo "MiLibreria.cpp" el cual incluyo en todos los formularios

Tengo 2 formularios que quieren acceder a esta funcion, el MainForm (En donde se encuentra el elemento ComboBox que quiero utilizar) y el otro es el InfoSatBox.

 void ListaSat()
{
   int sat=0;
   for(int i=0;i<MainForm->Memo->Lines->Count-1;i++)
   {
      if(sat<(MainForm->Memo->Lines->Count))
         {
         MainForm->ListarSatelites->Items->Add(MainForm->Memo->Lines->Strings[sat]);//ahi pasa por cada linea...
         MainForm->ListarSatelites->Items->Add(MainForm->Memo->Lines->Strings[sat]);//ahi pasa por cada linea...

         sat=sat+4;
         }
   MainForm->ListarSatelites->ItemIndex=0;
   }
}


que deberia hacerla, publica?, como?

un saludo y espero vuestra respuesta!

11_8_88

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
Re: utilizar una funcion desde diferentes formularios
« Respuesta #1 en: Domingo 21 de Septiembre de 2008, 19:34 »
0
el q debes incluir es el .h, MiLibreria.h

mizzard

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Re: utilizar una funcion desde diferentes formularios
« Respuesta #2 en: Domingo 21 de Septiembre de 2008, 23:02 »
0
Al final ese MiLibreria.cpp la utilizo para realizar operaciones matemáticas con variables.


El caso es que esa función la tengo en el formulario principal y la he declarado de la siguiente forma (Archivo Principal.cpp):

double __fastcall TMainForm::DatosSatelite(char datos[])
{
   AnsiString tmp="";
   char *decimal = "0.";
   char info[]="";
   double infoPedida=0;
   if (strcmp(datos,"epocaAño")==0)
   {
      tmp= MainForm->Memo->Lines->Strings[SelSatelite()+1].SubString(19,2);
      strcpy(info,tmp.c_str());
   }
   if (strcmp(datos,"epoca")==0)
   {
      tmp= MainForm->Memo->Lines->Strings[SelSatelite()+1].SubString(21,12);
      strcpy(info,tmp.c_str());
   }
   if (strcmp(datos,"inclinacion(grados)")==0)
   {
      tmp= MainForm->Memo->Lines->Strings[SelSatelite()+2].SubString(9,8);
      strcpy(info,tmp.c_str());
   }
   if (strcmp(datos,"ascensionRecta(grados)")==0)
   {
      tmp= MainForm->Memo->Lines->Strings[SelSatelite()+2].SubString(18,8);
      strcpy(info,tmp.c_str());
   }
   if (strcmp(datos,"excentricidad")==0)
   {
      tmp= MainForm->Memo->Lines->Strings[SelSatelite()+2].SubString(27,7);
      strcpy(info,decimal);
      strcat(info,tmp.c_str());
   }
   if (strcmp(datos,"perigeo(grados)")==0)
   {
      tmp= MainForm->Memo->Lines->Strings[SelSatelite()+2].SubString(35,8);
      strcpy(info,tmp.c_str());
   }
   if (strcmp(datos,"anomaliaMedia(grados)")==0)
   {
      tmp= MainForm->Memo->Lines->Strings[SelSatelite()+2].SubString(44,8);
      strcpy(info,tmp.c_str());
   }
   if (strcmp(datos,"movimientoMedio")==0)
   {
      tmp= MainForm->Memo->Lines->Strings[SelSatelite()+2].SubString(53,11);
      strcpy(info,tmp.c_str());
   }

   infoPedida=atof(info);
   return(infoPedida);
}

y en el Principal.h he agregado la siguiente linea:

double __fastcall DatosSatelite(char datos[]);

y en el formulario en donde quiero acceder a esa funcion he agregado:
#include "Principal.h"

el caso es que me funciona cuando le paso a la funcion ciertos parametros, pero para otros no me funciona, alguna idea????

plisssss ayuda que no se que hacer!!!, muchas gracias

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: utilizar una funcion desde diferentes formularios
« Respuesta #3 en: Jueves 25 de Septiembre de 2008, 13:00 »
0
¿Has declarado el método como "public" en la clase TMainForm? Si pones tu declaración de la clase TMainForm te explico cómo hacerlo público.