Foros Néfele 4 Harbour › Foros › Ejemplos › Ejemplo, lo más simple, para entender abrir un Modal
- Este debate tiene 3 respuestas, 3 mensajes y ha sido actualizado por última vez el 3 años, 7 meses por Alfredo Sanz. This post has been viewed 1194 times
-
AutorEntradas
-
-
05-12-2020 a las 23:40 #1634XeviParticipante
En el proceso de aprendizaje, estoy intentando poder disponer de ejemplos lo más sencillos y con menos código posible, para poder ir entendiendo y tomar como base para poder ir ampliando e incorporando funcionalidades, pero siempre, partiendo de una base sencilla, clara y que pueda llegar a comprender.
En este caso, para poder saber el proceso de una llamada Modal desde una ventana...
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899PROCEDURE ProvaModal()// Comenzamos instanciando la Página Web que queremos crearWITH OBJECT TWebPage():New():lAlerts := .T. // Como vamos a usar alerts desde ajax, tenemos que indicarlo a webpagevCrearModal( :WO ) // Creamos la ventana modalWITH OBJECT WBevel():New( :WO ):cId := "mibevel"WITH object WEdit():New( :WO ):cId := "miedit":cTitle := "Mi Edit":Create()END WITHWITH object WButton():New(:WO):cText := "Prueba abrir ventana Modal":cOnClick := "AbrirModal":cAjaxBevel := "nflcargo":Create()END:Create()ENDoCgi:SendPage(:Create())END WITHRETURN//----------------------------------------------// creamos la ventana modalFUNCTION vCrearModal ( o )LOCAL oBevel, oFormWITH OBJECT oBevel := WBevel():New( o ):cId := "modal1":nStyle := xc_Modal:lTrueModal := .f.:aWidth[ xc_S ] := 10:aWidth[ xc_M ] := 8WITH OBJECT WPanel():New( :WO ):cTitle := "Edición de datos":aWidth[ xc_S ] := 12WITH OBJECT oForm := WForm():New( :WO ):cId := "frmModal1":cFunction := "mUpdateModal"WITH OBJECT WEdit():New( :WO ):cId := "MiEditModal1":cTitle := "MiEditModal1":Create()END WITHWITH OBJECT WButton():New( :WO ):cId := "submit":cText := "Aceptar":cOnClick := oBevel:Submit( oForm ):Create()END WITH:Create()END WITH //form:Create()END WITH //Panel:Create()END WITH //BevelRETURN NIL//----------------------------------------------FUNCTION AbrirModal()*oCGI:SendScript( nfl_OpenModal("modal1",.t.) )SendAjaxScript( "", "modal1", "control1" ) //Texto, id de la ventana modal a abrir, id del control que tomarᡥl foco )RETURN NIL//----------------------------------------------PROCEDURE mUpdateModalLOCAL oMsgAlertWITH OBJECT oMsgAlert := WMsgAlert():New():cTitle := "Proceso finalizado":cType := "info":Create()ENDSendAjaxScript( oMsgAlert:FullHtml() )RETURNA partir de ahí, voy a intentar, siempre con el mínimo código posible y lo más sencillo que se pueda, incorporar mas funcionalidades, como por ejemplo envio/recepcion de datos... (recibir en el Modal el contenido del Edit, modificarlo y devolverlo a la ventana principal, actualizando el valor.
Si alguien se anima, o quiere ayudar a incorporar más código "facilón" y entendible por todos...
Un saludo,
Xevi.
-
06-12-2020 a las 21:48 #1636XeviParticipante
La ventana Modal, recibe el parámetro de la ventana Inicial, y la ventana Modal retorna el valor a la ventana Inicial
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101PROCEDURE ProvaModal()// Comenzamos instanciando la Página Web que queremos crearWITH OBJECT TWebPage():New():lAlerts := .T. // Como vamos a usar alerts desde ajax, tenemos que indicarlo a webpageCrearModal( :WO ) // Creamos la ventana modalWITH OBJECT WBevel():New( :WO ):cId := "myBevel"WITH object WEdit():New( :WO ):cId := "myEdit1":cTitle := "Mi Edit1":Create()END WITHWITH object WButton():New(:WO):cText := "Prueba abrir ventana Modal":aParams := { { "myEdit1", "#myEdit1"} }:cOnClick := "AbrirModal":cAjaxBevel := "nflcargo":Create()END:Create()ENDoCgi:SendPage(:Create())END WITHRETURN//----------------------------------------------// creamos la ventana modalFUNCTION CrearModal ( o )LOCAL oBevel, oFormWITH OBJECT oBevel := WBevel():New( o ):cId := "modal1":nStyle := xc_Modal:lTrueModal := .f.:aWidth[ xc_S ] := 10:aWidth[ xc_M ] := 8WITH OBJECT WPanel():New( :WO ):cTitle := "Edición de datos":aWidth[ xc_S ] := 12WITH OBJECT oForm := WForm():New( :WO ):cId := "frmModal1":cFunction := "UpdateModal"WITH OBJECT WEdit():New( :WO ):cId := "MyEditModal1":cTitle := "MyEditModal1":Create()END WITHWITH OBJECT WButton():New( :WO ):cId := "submit":cText := "Aceptar":cOnClick := oBevel:Submit( oForm ):Create()END WITH:Create()END WITH //form:Create()END WITH //Panel:Create()END WITH //BevelRETURN NIL//----------------------------------------------FUNCTION AbrirModal()Local cHtml := ""Local cTextEdit1 := oCGI:GetCGIValue( "myEdit1" ) //Capturamos els valor introducido en el Edit1 de la ventana Inicial//En Ajax, los nombres de los Id/Controles, en minúsculascHtml := SetValueById( "myeditmodal1", cTextEdit1 )SendAjaxScript( cHtml, "modal1", "myeditmodal1" ) //Texto, id de la ventana modal a abrir, id del control que tomarᡥl foco )RETURN NIL//----------------------------------------------PROCEDURE UpdateModalLocal cHtml := ""Local cTextEdit1 := oCGI:GetCgiValue( "myEditModal1", "" ) //Capturamos els valor introducido en el Edit1 de la ventana Modal//En Ajax, los nombres de los Id/Controles, en minúsculascHtml := SetValueById( "myedit1", cTextEdit1 )SendAjaxScript( cHtml, "mybevel", .F. ) //Texto, id de la ventana modal a abrir, id del control que tomarᡥl foco )RETURNSimple y con poco código... para poder empezar a manipular datos.
Un Saludo,
Xevi.
- Esta respuesta fue modificada 3 años, 10 meses por Xevi.
-
14-03-2021 a las 10:10 #1748Gabriel Gonzalez AngelesParticipante
Hola buen dia.
Tengo un pequeño problema.
Me coloca un error que dice,..
undefined reference to 'HB_FUN_SENDAJAXSCRIPT'Me podrían decir como lo soluciono ?
Gracias por sus conocimientos y tiempo.
-
14-03-2021 a las 19:59 #1752Alfredo SanzSuperadministrador
Hola!
SendAjaxScript es una función de los ejemplos nefele y que no forma parte del núcledo nefele
La encontrarás en el prg eFuncionesGenericas.prg en los ejemplos
Te la adjunto por si no la encuentras
123456789101112131415161718192021222324252627//-------------------------------------FUNCTION SendAjaxScript( cText, cModal, cFocus )IF !Empty( cModal )cText += cOpenModal( cModal )ENDIFIF !Empty( cFocus )cText += SetFocus( cFocus )ENDIFoCGI:Send( "" )oCGI:send( IF(At("<SCRIPT>",Upper(cText))=0,"<script>","") + crlf + cText + crlf + "</script>" )RETURN NIL//----------------------------------------------FUNCTION cOpenModal( cName )RETURN '$("#' + cName + '").modal("open");' + crlf//----------------------------------------------FUNCTION SetFocus( cName )RETURN 'document.querySelector("#' + cName + '").focus();' + crlf- Esta respuesta fue modificada 3 años, 7 meses por Alfredo Sanz.
-
-
AutorEntradas
- Debes estar registrado para responder a este debate.