Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Enviando y reciviendo parametros (https://www.clubdelphi.com/foros/showthread.php?t=6931)

StartKill 28-01-2004 02:39:11

Enviando y reciviendo parametros
 
Hola amigos :cool:

Estoy haciendo una aplicacion y resulta que uno de mis formularios va ha ser llamado varias veces por otros formularios... :p

Por ejemplo: tengo un formulario de clientes donde le doy mantenimiento-añade, modifica, elimina.... y tengo otro formulario que llama a este pero quiero desactivar los botones de mantenimiento, Deseo poder enviarle un parametro a dicho formulario(como lo hago?). :confused:

En estos momentos estoy superando este inconveniente utilizando variables publicas (antes de cada llamada asigno un valor a VarPublic y de acuerdo al valor activo).

Gracias de antemano

Your friend

StartKill :cool:
Lima-Peru

Nota: DELPHInitivamente cada día el Delphi va tomando el mercado :D

orfeo 28-01-2004 03:18:55

no se si te entendi bien...
Queres que el formulario se comporte de distintas formas dependiendo de como y de donde lo llames.

Si es eso, como lo estas haciendo esta bien, si el form se llama form1, podes hacer 'form1.componente.value:=cValor'

Otra que se me ocurre es que hagas una herencia de formularios.

Y otra mas linda y simple es que el formulario lo maneges con estados
+ definis una var global state
+ luego dependiendo de la variable, con un if/case of agas que el form se conporte distindo en cada valor de state.

Nuria 28-01-2004 09:38:03

Hola!

Yo lo que normalmente hago, es lo siguiente:

El formulario tiene una propiedad llamada tag, hay le doy un valor. Cuando me creo el form según el valor que tenga tag, activo unas cosas o otras. Y no me hace falta crearme una varible global.

Código:

Form1.Tag := 1;
Espero que te sirva.

Saludos!

Lepe 28-01-2004 12:29:10

Yo usaria un procedimiento público:

Código:


type
TApertura =(Ver, Modificar, Anadir, Borrar) ; // depende de lo que quieras

procedure TFRMXXX.ModoApertura(const modo:TApertura=Ver );
begin
 if modo = Ver then
 begin
  // inhablito controles
 end;
 TFRMXXX.ModoActual := modo;
end;

//Así desde cualquier Forma puedes hacer la llamada:
ModoApertura(Ver); ó  ModoApertura() // por defecto a "Ver"

Si necesitas saber el modo actual, puedes usar una variable publica (ModoActual)


Espero te sirva de algo :).

StartKill 28-01-2004 15:38:10

Muy buenas todas la alternativas, desde lo sencillo a lo aprentemente complicado... todas muy elegantes :p

Muchas gracias

Your friend

StartKill :cool:
Lima-Perú

roman 28-01-2004 17:46:18

StarKill, te comento que ya alguna vez me "sentí muy listo" :D haciendo un formulario que se adaptara según el caso; mostraba u ocultaba controles, hacía o no algunas validaciones, buscaba en unas u otras bases, etc. según el caso con la "genial" idea de reutilizar el código.

Pero bastante caro he pagado eso. El resultado fué un complejísimocódigo lleno de ifs-elses y cases que daba dolor de cabeza sólo mirarlo.

En mi caso llegué a la conclusión de que la mejor opción es la herencia de formularios. Dejar el código común en el formulario ancestro y el código de cada caso en el respectivo descendiente. A la larga tendrás un código mucho más entendible y claro y por ende más fácil de mantener.

// Saludos

Gydba 28-01-2004 21:58:38

Estoy de acuerdo con Roman (y no es de chupamedias :)), para mis ABMs yo me cree una clase ancestra con los procedimientos y funciones básicas para el manejo de datos (Búsqueda, alta, modificación y eliminación de registros, etc).

De esta manera simplifico mucho la tarea así como el control de errores. Mas que una alternativa me parece algo a tomar en cuenta.

uhilari 29-01-2004 00:11:14

Hola a Todos.

Estoy de Acuerdo con roman y gydba, no debemos olvidar que Delphi es Orientado a Objetos, ¿por que no aprovechar esto? usar la herencia de formularios siempre es una mejor opción que crear formularios con muchos Ifs o Cases, estos codigos cada vez se hacen mas grandes y cuando quieras aumentarle alguna otra funcionalidad pues tendras que añadir mas cases o ifs lo cual hace el codigo mas tedioso e inentilegible. Los exorto a usar mas el Object Pascal para reutilizar el codigo

Bye- Suerte

StartKill 29-01-2004 00:19:08

Buenas :cool:

DELPHInitivamente tienen razón y les agradezco por preocuparse que mi código sea legible en un futuro :p

A medida que he ido creciendo mi código opté por clasicar algunos formularios comunes de la siguiente forma (hey, no soy un gran maestro hago lo que puedo)

Tengo un solo formulario para dar mantenmiento de tablas referenciales que solo son de 4 campos, mas solo valido mi primarykey y uno otro que no sea null.

Para el mantenimiento de los clientes es otro formulario.

Pero, queria que estos formularios se comporten diferente segun quien lo llame (habiltando botones, un campo mas, un campo menos,... ya saben) :D

Y ok, perfect, lo consegui con la ayuda de todos Uds.

De seguro que tendre que utilizar herencia mas adelante (a un no esta muy grande my-program, pronto tendre que reutilizar algunos formularios ;) )

Your Friend :cool:
StartKill
Lima-Peru


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

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