Ver Mensaje Individual
  #3  
Antiguo 21-04-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
Muchas gracias roman por ofrecer tu ayuda.

No lo entendiste mal...
El código que te expones es similar a lo que ya venía planteando. Esa parte es sencilla de entender.

Veamos si me termino de explicar mejor.
Supongamos que tenemos dos unidades: UnidadA y UnidadB. Cada unidad tiene asociado un Form: FormA y FormB respectivamente. Dichos Form son heredados de uno que denomino ExpertForm.

ExpertForm contiene este array interno. y los procedimientos adecuados.
Con FormB se realiza una operación cualquiera y se guarda el contenido en una posición x en el array, que justamente tiene visibilidad pública, para que luego siga realizando otras operaciones con dicho valor. También, un control del FormA debe tener una copia del valor de la posición x del array del FormB.

Una posible solución es hacer el típico ejemplo que mostraba antes (sin emplear el array):

FormA.propiedad_asociada_variable = FormB.Propiedad_de_variable;

Pero supongamos que A debe mantener un registro de otros tantos valores de distintos valores de la operatoria de B. Alli ya se pueden hacer un array dinámico... un TList,... hay muchas opciones.

El planteo de mi array variant es para esos usos en que se necesita mantener valores que son útiles para el formulario como para otros. Pretendo usarlos para mantener un flujo de datos (independientes del tipo. Por eso variant) dinámico entre unidades.

En algunos casos con mantener una unidad llamada Globales basta... pero en los casos en que no se puede determinar cuantas variables se empleen... la unidad Globales ya no sirve de mucho.
El propósito de mantener esa visibilidad es para determinar la reglas de flujo de los datos. Por ejemplo: "FormB necesita saber un dato que proporciona FormA, y a su vez... FormA debe conocer otros datos de una FormC. FormC no debe ser "vista" por FormB" pero que estas reglas puedan ir cambiando en forma dinámica.... "FormB ahora podrá acceder a FormC, pero no a FormA.

Estuve pensando en como averiguar esto de la visibilidad... si la visibilidad está pensada para ser dinámica... ¿Cómo podría saber el "Sender" de quien solicita la orden para conocer el dato?

Por eso estaba pensando en incorporar un procedimiento del tipo:

Código Delphi [-]
ExtractValue(Index: integer; ToCopy: ¿?);

De modo que cuando se solicite pasar el dato de un lugar a otro se llame a dicha función.
Mi gran duda es como determinar si ToCopy puede tener dicho acceso.

Si ToCopy es un objeto, se puede determinar el Control Padre y comparandolo con el del "Padre" del array (self) para determinar si pertenece a la forma en cuestión u otra. Pero... el "valor" debe ser asignado a una propiedad de un objeto... o a una variable... y dicha variable puede estar en una simple unidad (no le pertenece a un objeto).

Esa es mi gran duda...

Cita:
Empezado por roman
si quieres saberlo dependiendo de la unidad desde donde se accede, pues lo veo algo difícil
Sip... es algo complicado.

Mis ideas pueden ser ridículas... pero puede que me sirvan... de hecho toda esta idea me surgió como una alternativa para evitarme lo de unidades globales, declaraciones de mil variables.

A veces mi cerebro me sale con cosas un poco complicadas.

Espero haberme explicado mejor.
Y como dije, estoy considerando opciones.

Muchas gracias,
Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita