Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
CALL FORM
|
CALL FORM ( ventana ; metodo {; param}{; param2 ; ... ; paramN} ) | ||||||||
Parámetro | Tipo | Descripción | ||||||
ventana | WinRef |
![]() |
Número de referencia de la ventana | |||||
metodo | Texto |
![]() |
Nombre del método proyecto a llamar | |||||
param | Expresión |
![]() |
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 ). 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:
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")
Producto: 4D
Tema: Eventos de formulario
Número
1391
Creado por: 4D v15 R5
Modificado: 4D v16 R4
Manual de lenguaje 4D ( 4D v19)
Manual de lenguaje 4D ( 4D v19.1)
Manual de lenguaje 4D ( 4D v19.4)
Manual de lenguaje 4D ( 4D v19.5)
Manual de lenguaje 4D ( 4D v19.6)
Manual de lenguaje 4D ( 4D v19.7)
Manual de lenguaje 4D ( 4D v19.8)