Page 1 of 1
xBrowse full input
Posted: Wed Sep 25, 2024 10:50 pm
by JoseAlvarez
saludos estimados amigos.
necesito hacer un xBrowse de entrada de datos.
En primer lugar, quiero poder presionar un botón dentro de la primera celda y que se llame a una función que me mostrara un LISTBOX de donde seleccionare al cliente.
desde ese listbox debo traerme el nombre del cliente y asignarlo a la celda. Por favor fijarse en el numero 1 en rojo de la imagen
luego en la siguiente celda que marco con el numero dos, quiero que aparezca un boton que al presionarlo tenga un calendario con la fecha de hoy por defecto y que el usuario seleccione.
ver numero 2 en rojo de la imagen
En la siguiente, poder seleccionar con un combobox, los dias de credito que tendra la factura, y al hacerlo, que en la celda siguiente aparezca fecha de la primera celda + días que se asignaron.
Luego las demás celdas tendrán unas campos char, otras numeros, y una ultima un campo memo.
¿en que PRGs de la carpeta samples de fivewin puedo conseguir ejemplos para que me sirvan de guias?
espero haberme explicado bien.
gracias!
Re: xBrowse full input
Posted: Wed Sep 25, 2024 11:44 pm
by cmsoft
Una idea:
Code: Select all | Expand
#include "FiveWin.ch"
#include "xBrowse.ch"
REQUEST HB_LANG_ESWIN
REQUEST HB_CODEPAGE_ESMWIN
STATIC oBrw, aData
function Main()
LOCAL aClientes := {"Cliente 1","Cliente 2","Cliente 3","Cliente 4"},;
oForm
SET DATE FORMAT "DD/MM/YYYY"
SET 3DLOOK ON
HB_LANGSELECT( 'ESWIN' )
aData := {{"",CTOD(' / / '),0,CTOD(' / / ')}}
DEFINE DIALOG oForm TITLE "Jose" FROM 05,10 TO 42,100
@ 05,05 XBROWSE oBrw ARRAY aData;
COLUMNS 1,2,3,4;
HEADERS "Cliente","Fecha","Dias","Vencimiento";
SIZES 300,100,100,100;
OF oForm 340,215 PIXEL
WITH OBJECT oBrw
:aCols[1]:nEditType := EDIT_LISTBOX
:aCols[1]:aEditListTxt := aClientes
:aCols[2]:nEditType := EDIT_DATE
:aCols[3]:nEditType := EDIT_LISTBOX
:aCols[3]:aEditListTxt := {"10","20","30","40"}
:aCols[3]:aEditListBound := {10,20,30,40}
:aCols[3]:bOnPostEdit := { |o,x,n| Llenar(o,x) }
:bPastEof := {|| aadd(aData, {"",CTOD(' / / '),0,CTOD(' / / ')})}
END
oBrw:CreateFromCode()
ACTIVATE DIALOG oForm CENTER
RETURN nil
STATIC FUNCTION Llenar(o,x)
o:value := x
aData[oBrw:nArrayAt,4] := aData[oBrw:nArrayAt,2]+ x
RETURN nil
Re: xBrowse full input
Posted: Wed Sep 25, 2024 11:54 pm
by JoseAlvarez
cmsoft wrote:Una idea:
Code: Select all | Expand
#include "FiveWin.ch"
#include "xBrowse.ch"
REQUEST HB_LANG_ESWIN
REQUEST HB_CODEPAGE_ESMWIN
STATIC oBrw, aData
function Main()
LOCAL aClientes := {"Cliente 1","Cliente 2","Cliente 3","Cliente 4"},;
oForm
SET DATE FORMAT "DD/MM/YYYY"
SET 3DLOOK ON
HB_LANGSELECT( 'ESWIN' )
aData := {{"",CTOD(' / / '),0,CTOD(' / / ')}}
DEFINE DIALOG oForm TITLE "Jose" FROM 05,10 TO 42,100
@ 05,05 XBROWSE oBrw ARRAY aData;
COLUMNS 1,2,3,4;
HEADERS "Cliente","Fecha","Dias","Vencimiento";
SIZES 300,100,100,100;
OF oForm 340,215 PIXEL
WITH OBJECT oBrw
:aCols[1]:nEditType := EDIT_LISTBOX
:aCols[1]:aEditListTxt := aClientes
:aCols[2]:nEditType := EDIT_DATE
:aCols[3]:nEditType := EDIT_LISTBOX
:aCols[3]:aEditListTxt := {"10","20","30","40"}
:aCols[3]:aEditListBound := {10,20,30,40}
:aCols[3]:bOnPostEdit := { |o,x,n| Llenar(o,x) }
:bPastEof := {|| aadd(aData, {"",CTOD(' / / '),0,CTOD(' / / ')})}
END
oBrw:CreateFromCode()
ACTIVATE DIALOG oForm CENTER
RETURN nil
STATIC FUNCTION Llenar(o,x)
o:value := x
aData[oBrw:nArrayAt,4] := aData[oBrw:nArrayAt,2]+ x
RETURN nil
Gracias césar! increible que sea tan sencillo... voy a implementar y luego comentare que tal me fue.
Agradecido !!
Re: xBrowse full input
Posted: Thu Sep 26, 2024 12:24 am
by cmsoft
Si quieres llamar a una funcion que busque en tu base de datos, puedes hacer:
Code: Select all | Expand
:aCols[1]:bEditBlock := {|r,c,o,k| (c := MiBusqueda(), o:value := c) }
:aCols[1]:nEditType := EDIT_BUTTON
Re: xBrowse full input
Posted: Sat Sep 28, 2024 3:48 pm
by Armando
César:
Excelente ejemplo, tengo dos preguntas:
1.- En tú ejemplo, el browse agrega dos columnas a la derecha, sin título y con los valores 340 y 215 respectivamente
2.- Podrías poner un ejemplo con recordset?, por favor.
Saludos
Re: xBrowse full input
Posted: Sat Sep 28, 2024 9:28 pm
by cmsoft
Armando wrote:César:
1.- En tú ejemplo, el browse agrega dos columnas a la derecha, sin título y con los valores 340 y 215 respectivamente
Es verdad, me falto la clausula SIZE
OF oForm SIZE 340,215 PIXEL
Armando wrote:2.- Podrías poner un ejemplo con recordset?, por favor.
Uso dolphin pero es adaptable a cualquier recorset
Code: Select all | Expand
#include "FiveWin.ch"
#include "xBrowse.ch"
#include "tdolphin.ch"
REQUEST HB_LANG_ESWIN
REQUEST HB_CODEPAGE_ESMWIN
STATIC oBrw, oQryTem
function Main()
LOCAL oForm, oServer, oQryCli
CONNECT oServer HOST 'localhost' ;
USER 'user' ;
PASSWORD 'mipassword' ;
PORT 3306 ;
FLAGS 0;
DATABASE 'test'
oQryCli := oServer:Query("SELECT code,first,last FROM clients ORDER BY last")
oQryTem := oServer:Query("SELECT * FROM tempor")
SET DATE FORMAT "DD/MM/YYYY"
SET 3DLOOK ON
HB_LANGSELECT( 'ESWIN' )
DEFINE DIALOG oForm TITLE "Armando" FROM 05,10 TO 42,100
@ 05,05 XBROWSE oBrw DATASOURCE oQryTem;
COLUMNS "code","nombre","cantidad";
HEADERS "Codigo","Apellido y Nombre","Cantidad";
SIZES 100,300,100;
OF oForm SIZE 340,215 PIXEL
WITH OBJECT oBrw
:aCols[1]:bEditBlock := {|r,c,o,k| (c := MiBusqueda(oQryCli), o:value := c) }
:aCols[1]:nEditType := EDIT_BUTTON
:aCols[3]:nEditType := EDIT_GET
:bRecSelHeader := { || " "}
:RecSelShowKeyNo()
:bPastEof := {|| oQryTem:GetBlankRow(),oQryTem:Save(),oBrw:Refresh()}
END
oBrw:CreateFromCode()
ACTIVATE DIALOG oForm CENTER
RETURN nil
STATIC function MiBusqueda(oQry)
xbrowse(oQry) //Aca muestras una busqueda personalizada tuya
oQryTem:nombre := alltrim(oQry:last)+", "+alltrim(oQry:first)
oQryTem:Save()
RETURN oQry:code
Saludos
Re: xBrowse full input
Posted: Sun Sep 29, 2024 1:13 am
by Armando
César:
Muchas gracias, le voy a tirar un ojo.
Saludos