Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como pasar un parametro? (https://www.clubdelphi.com/foros/showthread.php?t=47102)

b3nshi 17-08-2007 23:35:48

Como pasar un parametro?
 
Buenas... les cuento q este es un problema q lo tengo resuelto parcialmente con una solucion muy poco efectiva, por lo q queria saber si a alguien se le ocurre alguna manera mejor de hacerlo...

Esto es lo q tengo... una aplicacion MDI:

Formulario Principal: Contiene una tabla q se conecta a una base paradox...

Dicha tabla contiene: Apellido, Nombre y Edad de una persona. Al hacer doble clic en un registro de ella, esta tiene q abrir el form hijo y pasarle como parametro la cadena: "apellido+nombre+edad".

Formulario Hijo: Abre el archivo con el nombre: "apellido+nombre+edad", y muestra su info, lo hace desde el evento "oncreate". Contiene ademas un Label quien conservara el valor del nombre del archivo, ya q se pueden abrir varias personas al mismo tiempo.

El problema: Cuando abro este formulario, lo q quiero hacer es cargar el valor al label, para luego poder usar este valor en otros botones, sin necesidad de estar creando una variable global, q es como lo estoy haciendo... ya q por ejemplo puedo abrir varias personas al mismo tiempo, y si abro dos personas al mismo tiempo esta variable global tomara el valor del ultimo abierto...

Mi solucion:

Código Delphi [-]
    
   with tfcontactos.Create(application) do
    begin
      name := apellido+nombre+edad;
      top := 0;
      left := 0;
      label1.Caption := table1.FieldValues['Apellido'] + ' ' + table1.FieldValues['Nombre'] + ' ' + inttostr(table1.FieldValues['Edad']);
      show;
    end;
 
//Doy un valor a una variable global
varglobal:= apellido+nombre+edad;

Y en el oncreate del Formulario Hijo:

Código Delphi [-]
   AssignFile(archivo, 'Ruta\' + varglobal);

Y luego cada vez q quiero volver a trabajar sobre el archivo uso el valor del label y solo una vez, en su creacion utilizo el valor de la variable global, ya q luego si abro otra ventana esta pierde su valor y toma el del ultimo contacto seleccionado.

Mi pregunta: Existe alguna forma mejor de hacerlo sin estar usando una variable global? es decir alguna forma de hacer q el oncrete me tome directamente este valor?

Desde ya muchisimas gracias!

{Saludos}

Khronos 18-08-2007 02:52:01

Usar variables globales no es malo, de hecho ayudan mucho. Como no das muchos mas datos yo usaria esto:

Código Delphi [-]
 
//en el oncreate metes esto...
 
AssignFile(archivo, 'Ruta\' + FormPrincipal.Label1.caption);

espero que te sirva, si no puedes seguir con las variables globales porque a veces no hay mas remedio.

Salu2

The_Duke 18-08-2007 04:56:14

QUe tal seria si la varible global las manejas como un array ose asi

Código Delphi [-]
//Doy un valor a una variable global
varglobal[x]:= apellido+nombre+edad;
inc(x);

mas omeno algo asi para no perder la informacion

b3nshi 18-08-2007 06:54:53

Gracias a los dos por contestar... y veamos... le explico... no pienso q usar variables globales sea malo... el problema es q puedo abrir varios formularios y por ejemplo si con el primero q abrí decido trabajar con un archivo, automaticamente la variable global tomaria el nombre del ultimo formulario abierto... se entiende?

En cuanto a la solucion del label es lo mismo q usar una variable global, y es esa la solucion q estoy usando en este momento...

Si habia pensado en hacer un arreglo de strings, y digamos q es una buena solucion, pero me gustaria saber si hay alguna forma de asignarle por ejemplo, el valor apellido+nombre+edad a un label dentro del formulario hijo antes de q se ejecute el evento oncreate...

Muchas Gracias por contestar!

{Saludos}


La franja horaria es GMT +2. Ahora son las 12:47:34.

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