Respuestas de foro creadas
-
AutorEntradas
-
Vicente ArdinesParticipante
dmillas creo que el problema puede estar al mostrar los tabs dentro de un Wpanel, prueba dentro de Wbevel, y define los tabs como se indica en este fichero.
Sustituye el codigo del ejemplo de Nefele samples (formulario 6), por este, y veras que funciona correctamente. (abajo tienes unas capturas de pantalla, para verlo)
PROCEDURE Formulario6()
// Comenzamos instanciando la Página Web que queremos crear
with object TWebPage():New()
:cClrPane := "pink lighten-5"
:aBreadCrumbs := {{GetEnv("SCRIPT_NAME"),"🏠"},{GetEnv("SCRIPT_NAME") + "?mainforms","📋"},"Máscaras"}
AppMenu( :WO, "Formularios" )// Instanciamos un Panel para que sea el contenedor del formulario, permite poner un titulo y tiene un efecto sombra
With Object WPanel():New(:WO)
:cTitle := "FICHA DE VEHÍCULO"
:aWidth[xc_M] := 8 // Apartir del tamaño (Tablet) solo ocupara 8/12 partes de la pantalla
:aOffset[xc_M] := 2 // Y la centramos desplzandola 2/12 desde la izquierda// Instanciamos el Formulario propiamente dicho
with object WForm():New(:WO)
:cId := "formulario"
:cFunction := "VisParam"WITH OBJECT wTabs():New( :WO )
:cId := "tabs_captura":additem("primero" , "bevel_uno")
:additem("segundo" , "bevel_dos")
:additem("tercero" , "bevel_tres"):Create()
end with
// Nombre y apellidos del usuario
with object WBevel():New(:WO)
:cId := "bevel_uno"
:nStyle := xc_Rowwith object WEdit():New( :WO )
// Modificamos la máscara del control
with object :oMask
:lUpperCase := .t. // En mayúsculas
:lAutoComplete := .f. // Al ponerlo a .f. evita que se muestre la selección de los datos previamente introducidos
:cPicture := "A" // Admite los caracteres indicados en cValidatorA
end with:cId := "Nombre y apellidos"
:cTitle := "Primer Apellido"
:cIcon := "group"
:nLength := 30:SetRequired()
:Create()
end withwith object WEdit():New( :WO )
with object :oMask
:lAutoComplete := .f.
:cPicture := "B" // Aplica en formato que hemos redefinido a cValidatorB
end with:cId := "direccion"
:cTitle := "Dirección"
:cIcon := "store"
:nLength := 40:SetRequired()
:Create()
end withwith object WEdit():New(:WO)
with object :oMask
:cPicture := "+9{1,3} (999) 99 99 99"
// :cPicture := "| a{1,10} |"
:lShowMask := .f. // Si el dato está vacío, oculta la máscara
end with:oStyle:cColor := "red" //Color del icono
:cId := "telefono"
:cTitle := "Teléfono"
:cIcon := "phone":aWidth[xc_M] := 6
:Create()
end withwith object WEdit():New(:WO)
:oMask:cPicture := "currency" // Tipo moneda
:oMask:nDecimalPlaces := 2 // Con dos decimales
:oMask:lMinus := .f. // Solo valores positivos:oStyle:cColor := "blue"
:cValue := 10.555 //Valor inicial. Como nuestra máscara tiene solo admite 2 decimales, lo redondea automáticamente
:nMaxValue := 300 // Valor máximo
:nMinValue := 10 // Valor mínimo:cId := "importe"
:cTitle := "Importe"
:cIcon := "payment":aWidth[xc_M] := 6 // En pantallas Tablet o superior queremos que la Fecha y la Hora compartan el ancho
:Create()
end with:Create()
end withwith object WBevel():New(:WO)
:cId := "bevel_dos"
:nStyle := xc_Rowwith object WEdit():New(:WO)
:oMask:cPicture := "9999-AAA" // 4 números, un guión y 3 letras de tipo ValidatorA
:cId := "Matricula"
:cTitle := "Matrícula"
:cIcon := "directions_car"
:aWidth[xc_M] := 6 // En pantallas Tablet o superior queremos que la Fecha y la Hora compartan el ancho:Create()
end with
with object WEdit():New(:WO)
:oMask:cPicture := "date" // Tipo fecha
:cId := "Fecha"
:cTitle := "Fecha matriculación"
:cIcon := "date_range":aWidth[xc_M] := 6
:Create()
end with
with object WRadioMenu():New( :WO )
:cId := "RMenu1"
:cClrTitle := "blue"
:aItems := { "UNO",;
"DOS",;
"TRES",;
"CUATRO"}
:nIndex := 1
:lGap := .F.
:Create()
END withwith OBJECT WComboBox():New(:WO)
:cId := "mesvisita"
:aWidth[xc_M] := 12 // En pantallas Tablet o superior queremos los dos wcombobox en la misma linea
// Hay varias maneras de alimentar un wComboBox, en el wiki estan explicados
:aItems := {{-1, "1er Trimestre"},{1,"Enero"},{2,"Febrero"},{3,"Marzo"},;
{-1, "2o Trimestre"}, {4,"Abril"},{5,"Mayo"},{6,"Junio"},;
{-1, "3er Trimestre"}, {7,"Julio"},{8,"Agosto"},{7,"Septiembre"},;
{-1, "4o Trimestre"}, {10,"Octubre"},{11,"Noviembre"},{12,"Diciembre"}}
:cText := "Seleccione el mes de visita"
:cIcon := "event_available"
:cTitle := "Mes de visita"
:cHelp := "Este es el Mes que prefiere que le hagamos la visita periodica"
:Create()
end withwith object WSeparator():New(:WO)
:lBR := .T.
:Create()
end with:Create()
end with
with object WBevel():New(:WO)
:cId := "bevel_TRES"
:nStyle := xc_RowWITH OBJECT WDataTable():New(:wo)
:cId := "Table1"
WITH OBJECT :Configure()
:SetColumns({"Nombre", "Puesto"})
:data := {{"JOSE","1001"},{"ANDRES","1004"},{"MANOLO","1005"}}
END
:Create()END
:create()
:Create()end with
with object WSeparator():New(:WO)
:lLine := .T.
:lBR := .T.
:Create()
end withwith object WButton():New(:WO)
:cId := "submit"
:cText := "Aceptar"
:lSubmit := .T.
:lLarge := .T.
:lCenter := .T.
:Create()
end with// Ya tenemos creados todos los controles dentro del wForm por lo que procedemos a crearlo
:Create()end with
:Create()
end with
oCGI:SendPage(:Create())
end with
RETURN
- Esta respuesta fue modificada 1 año por Vicente Ardines.
- Esta respuesta fue modificada 1 año por Vicente Ardines.
- Esta respuesta fue modificada 1 año por Vicente Ardines.
Adjuntos:
Debes acceder para ver los archivos adjuntos.Vicente ArdinesParticipanteMuchísimas gracias Gabriel, ahora ya me funciona correctamente, mi error era cargar el array con QueryArrayHash(), en vez de QueryArray().
Gracias por tu ayuda.
Vicente ArdinesParticipantePerdona, tienes razón, yo he logrado hacerlo funcionar, pero compilando los nuevos samples, con la librería anterior.
Con esta ultima librería, efectivamente, da el error que tu señalas.
Disculpa por aportar, antes de comprobar.
Vicente ArdinesParticipanteprueba a activar estas lineas en : maindatatables.prg
/*
AAdd( :aHeadScript, '<script src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>')
AAdd( :aHeadLinks, '<link rel="stylesheet" href="https://cdn.datatables.net/1.10.22/css/jquery.dataTables.css" />')
AAdd( :aHeadScript, '<script src="https://cdn.datatables.net/rowreorder/1.2.7/js/dataTables.rowReorder.min.js"></script>')
AAdd( :aHeadLinks, '<link rel="stylesheet" href="https://cdn.datatables.net/rowreorder/1.2.7/css/rowReorder.dataTables.min.css" />')
:AddHTML( '<table id="browse"></table>' )
AAdd( :aScript, DataScript() )*/
Vicente ArdinesParticipantedescomenta las lineas del MainDatatables.prg, que hacen referencia a los cdn.datatables.net
Vicente ArdinesParticipanteMuchísimas gracias por tu rápida respuesta, sabiendo que se puede hacer y mas o menos como, me pongo manos a la obra 😉
Vicente ArdinesParticipanteVicente ArdinesParticipanteWlabel():cText:= "Bienvenido a Tokens Samples" // te va a devolver siempre ese valor en el texto del label
//----------------------------------------------------------------------------------------
manejándolo así , y cargando ahí el token de tu función????
LOCAL cTexto_a_mostrar := "Bienvenido a Tokens Samples"
Wlabel():cText:=cTexto_a_mostrar
//-------------------------------------------------
cTexto_a_mostrar := Token
Vicente ArdinesParticipanteNo se si esto te pueda servir.
Contenido no disponible.
Por favor, acepta las cookies haciendo clic en este aviso28-12-2022 a las 23:15 en respuesta a: Al actualizar la libreria a 0.4.1 los ejemplos de Datatable no funcionan #1992Vicente ArdinesParticipanteMuestra este error al intentar abrir cualquiera de los ejemplos de DataTables
Adjuntos:
Debes acceder para ver los archivos adjuntos.Vicente ArdinesParticipanteGracias a vosotros por todo vuestro trabajo, los ejemplos, los comentarios en el foro tanto vuestros como de los demás integrantes de esta comunidad, gracias a ellos también, para mi ha sido clave para poder empezar a hacer cosas en la web, que antes se me hacían imposibles , con esta herramienta se vuelve muy sencillo, me queda muchísimo por aprender , y estoy satisfecho de poder aportar mi granito de arena en agradecimiento por todo lo recibido.
Para mi es todo un honor que contéis con esta pequeña aportación para incluirla en la próxima versión del samples. Gracias de corazón.
Vicente ArdinesParticipanteAl final me he puesto, y ha sido mucho mas fácil de lo que pensaba, incluso me he divertido con la facilidad y rapidez que lo he podido realizar, esta hecho a puñetazos, pero funciona todo.
ALTAS, BAJAS, MODIFICACIONES, CONSULTAS, PAGINACIÓN.
Estoy muy satisfecho de como funciona esta herramienta, 100% recomendable.
Adjuntos:
Debes acceder para ver los archivos adjuntos.Vicente ArdinesParticipanteHola , sigo con el hilo.
Logro conectarme correctamente a la base de datos , puedo ver registros , incluso borrarlos, y desde la aplicación xailer actualizar sin problema, pero desde la web no soy capaz de actualizar datos.
Uso este código como ejemplo para intentar modificar un dato manualmente, pero no consigo nada. No se si el error esta en la sentencia SQL, que este mal construida ?????, porque no me envía ningún tipo de error . (sin embargo para borrar ..... csQL := [DELETE FROM ]+cTable+[ WHERE id=]+pid ) funciona correctamente ?????
function DataEditRowClu(pid)
local cTable, csQL
local oError
local hResponse := {=>}
local lNew := .F.hResponse := {=>}
cTable := 'clubes'// 1) Actualizar los datos del Club
// csQL := [UPDATE ]+cTable+[ SET entidad = "NOMBRE ENTIDAD" WHERE id=]+pid
csQL := [UPDATE ]+cTable+[ SET entidad = 'NOMBRE ENTIDAD' WHERE id=]+nfl_ValToSql(pid)
nfl_Console("Actualizando datos del ID :"+pid) //Solo lo veras si tienes en marcha Nefele Console// 2) Añadir o actualizar registro
TRY
WITH OBJECT _DbSqlConnex()
:Execute( csQL)
:End()
END
hResponse['error'] := .F.
hResponse['message'] := "Registro "+ IF( lNew, "Insertado", "Modificado" )CATCH oError
hResponse['error'] := .T.
hResponse['message'] := oError:Description
END// 3) Devolver respuesta hash con el resultado de la operacion
hResponse['error'] := .T.
hResponse['message'] := "response"return hResponse
-
AutorEntradas