4D v16.3

CALL FORM

Inicio

 
4D v16.3
CALL FORM

CALL FORM 


 

CALL FORM ( ventana ; metodo {; param}{; param2 ; ... ; paramN} ) 
Parámetro Tipo   Descripción
ventana  WinRef in Número de referencia de la ventana
metodo  Texto in Nombre del método proyecto a llamar
param  in Parámetros pasados al método

El comando CALL FORM ejecuta el método de proyecto cuyo nombre pasó en metodo con uno o varios param(s) en el contexto de un formulario que se muestra en una ventana, independientemente del proceso al que pertenece la ventana.

Al igual que en la comunicación entre procesos basada en los workers (ver Sobre workers), un cuadro de mensaje está asociado a la ventana y se puede utilizar cuando la ventana muestra un formulario (después del evento On Load). CALL FORM encapsula el nombre del método y sus argumentos en un mensaje que se ha enviado en el cuadro de mensaje de la ventana. El formulario a continuación, ejecuta el mensaje en su propio proceso. El proceso de llamada puede ser cooperativo o apropiativo, por tanto, esta funcionalidad permite a un proceso apropiativo intercambiar información con los formularios.

En ventana, pase el número de referencia de la ventana que muestra el formulario llamado.

En metodo, pase el nombre del método de proyecto que se ejecutará en el contexto del proceso padre de la ventana.

También puede pasar parámetros al método que utilizan uno o más parámetros param. Pase los parámetros de la misma manera que los pasaría a una subrutina (ver la sección Pasar parámetros a los métodos). Al iniciar la ejecución en el contexto del formulario, el método recibe los valores parámetro en $1, $2, etc. Recuerde que los arrays no pueden ser pasados ​​como parámetros a un método. Además, en el contexto del comando CALL FORM, las siguientes consideraciones adicionales deben tenerse en cuenta:

  • Se permiten punteros a tablas o campos.
  • Los punteros a las variables, particularmente las variables locales y de proceso, no se recomiendan ya que estas variables pueden no estar definidas en el momento en que el método de proceso acceda.
  • Si pasa un parámetro de tipo Objeto, 4D crea una copia del objeto en el proceso de destino si el formulario está en un proceso diferente del que llama al comando CALL FORM.

Usted quiere abrir dos ventanas de diálogo diferentes en el mismo formulario, pero con diferentes colores de fondo y diferentes mensajes. También desea enviar mensajes después y mostrarlos en cada ventana de diálogo.

En el formulario principal, un botón abre los dos diálogos:

  //Crear método objeto formularios
  // primera ventana
 formRef1:=Open form window("FormMessage";Palette form window;On the left)
 SET WINDOW TITLE("MyForm1";formRef1)
 DIALOG("FormMessage";*)
 SHOW WINDOW(formRef1)
 
  //segunda ventana
 formRef2:=Open form window("FormMessage";Palette form window;On the left+500)
 SET WINDOW TITLE("MyForm2";formRef2)
 DIALOG("FormMessage";*)
 SHOW WINDOW(formRef2)
 
  //Enviar colores
 CALL FORM(formRef1;"doSetColor";0x00E6F2FF)
 CALL FORM(formRef2;"doSetColor";0x00F2E6FF)
  //Dibujar mensajes
 CALL FORM(formRef1;"doAddMessage";Current process name;"Hello Form 1")
 CALL FORM(formRef2;"doAddMessage";Current process name;"Hello Form 2")

El método doAddMessage sólo añade una línea en un list box en el formulario "FormMessage":

 C_TEXT($1// nombre del llamador
 C_TEXT($2// mensaje a mostrar
  // recibir mensaje desde $2 y log el mensaje en list box
 $p:=OBJECT Get pointer(Object named;"Column1")
 INSERT IN ARRAY($p->;1)
 $p->{1}:=$1+" sends "+$2

En ejecución, obtiene el siguiente resultado:

Luego puede añadir otros mensajes ejecutando el comando CALL FORM nuevamente:

 CALL FORM(formRef1;"doAddMessage";Current process name;"Hello 2 Form 1")
 CALL FORM(formRef2;"doAddMessage";Current process name;"Hello 2 Form 2")

Puede utilizar el comando CALL FORM para pasar configuraciones personalizadas a un formulario, por ejemplo valores de configuración, sin tener que utilizar variables proceso:

 $win:=Open form window("form")
 CALL FORM($win;"configure";param1;param2)
 DIALOG("form")



Ver también 


CALL WORKER

 
PROPIEDADES 

Producto: 4D
Tema: Formularios
Número 1391

This command can be run in preemptive processes

 
HISTORIA 

Creado por: 4D v15 R5

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)