Code: Select all
#include "FiveTouch.ch"
#xcommand DEFAULT <uVar1> := <uVal1> ;
[, <uVarN> := <uValN> ] => ;
<uVar1> := If( <uVar1> == nil, <uVal1>, <uVar1> ) ;;
[ <uVarN> := If( <uVarN> == nil, <uValN>, <uVarN> ); ]
*--------------------------------------------------------------------*
* Original Code => jnavas - Juan Navas - Modificado by Mustafa Lopez
* http://forums.fivetechsupport.com/viewtopic.php?f=33&t=30502
*--------------------------------------------------------------------*
*------------------------------------*
FUNCTION Main()
*------------------------------------*
LOCAL oBtnCancelJ
LOCAL aBtnText:={ " Imcluir " , " Modificar "," Eliminar "," Home "," Salir " }
LOCAL aBtn := ARRAY(LEN(aBtnText))
PRIVATE oDlgBrw,oBrw,oBtn1,oBtn2,oBtn3,oBtn4
PRIVATE aGrid := {}
PUBLIC CUAN , hCtrl , picxel , picx , idxZ
PUBLIC idxS , nAmeT , wNum := 0
*------------------------------------*
REQUEST DBFCDX , DBFFPT , DBFDBT
RDDSETDEFAULT( "DBFCDX" )
REQUEST HB_CODEPAGE_ESWIN
SET( _SET_CODEPAGE ,"ESWIN" )
SET DELETE ON
SET CENTURY ON
SET DATE FRENCH
SET DATE FORMAT TO 'dd/mm/yyyy'
*------------------------------------*
IF ! HB_DirExists( "images")
DirMake( "images")
ENDIF
*------------------------------------*
FT_CREATE_TABLES()
USE ("FT_USER.DBF")
dbGoTop()
DEFINE DIALOG oDlgBrw TITLE SPACE(05) + "Base Telefonica" ;
SIZE 715, 570
oDlgBrw:setwindowicon( QIcon( ".\images\Eye_Six.png" ) )
@ 30,12 BROWSE oBrw OF oDlgBrw ;
SIZE 450, 438 ;
HEADERS "Id", "Nombre","Telefono","Fecha" ;
FIELDS FIELD->USR_ID,FIELD->USR_NAME,FIELD->USR_TELEF,DTOC(FIELD->USR_DATE)
@ 0, BCOL(1) BUTTON aBtn[1] PROMPT aBtnText[1] OF oDlgBrw ;
ACTION FT_EDITUSER(NIL)
@ 0, BCOL(2) BUTTON aBtn[2] PROMPT aBtnText[2] OF oDlgBrw ;
ACTION Modificare()
@ 0, BCOL(3) BUTTON aBtn[3] PROMPT aBtnText[3] OF oDlgBrw ;
ACTION DeleClick()
@ 0, BCOL(4) BUTTON aBtn[4] PROMPT aBtnText[4] OF oDlgBrw ;
ACTION MsgInfo(" Sample FiveTouch " + CRLF + CRLF +;
"Código Original jnavas - Juan Navas " + CRLF + CRLF +;
"Modificado By Mustafa López " + CRLF + CRLF +;
" Diciembre 2020" , "Sample FiveTouch ")
@ 0, BCOL(5) BUTTON aBtn[5] PROMPT aBtnText[5] OF oDlgBrw ;
ACTION oDlgBrw:End()
dbGotop()
IF (FIELD->USR_PIC) > SPACE(1)
picxel := "./images/"+ SUBSTR( ALLTRIM(FIELD->USR_PIC) ,10,8)
ELSE
picxel := "./images/0000.png"
ENDIF
@ 080, 490 IMAGE hCtrl FILE picxel SIZE 200,200 OF oDlgBrw
hCtrl:setStyleSheet( "border: 2px solid White ;" )
*------------------------------------------------------------*
@ 500, 020 BUTTON oBtn1 PROMPT "Primero" OF oDlgBrw ;
ACTION Inizio( oBrw ) SIZE 90,26
@ 500, 130 BUTTON oBtn2 PROMPT "Anterior" OF oDlgBrw ;
ACTION MenosUno( oBrw ) SIZE 90,26
@ 500, 230 BUTTON oBtn3 PROMPT "Siguiente" OF oDlgBrw ;
ACTION MasUno( oBrw) SIZE 90,26
@ 500, 330 BUTTON oBtn4 PROMPT "Ultimo" OF oDlgBrw ;
ACTION Fine( oBrw ) SIZE 90,26
@ 340, 544 BUTTON oBtn5 PROMPT "Pic View" OF oDlgBrw ;
ACTION PicPlus() SIZE 90,26
*--------------------------------------------------------------*
USE ("FT_USER.DBF")
cuan := LASTREC()
picx:= " Photo Num: " + SUBSTR( FIELD->USR_PIC ,10,8)+ SPACE(2)
@ 050, 515 SAY idxZ PROMPT picx OF oDlgBrw
idxZ:SetStyleSheet( " background: #F4F4F0; font-size: 13px; font-weight: bold; color: #ff0000;" )
nAmeT := SPACE(2) + "Id: "+ ALLTRIM( FIELD->USR_ID )+ SPACE(3) +;
"Name: " +ALLTRIM( FIELD->USR_NAME )+ SPACE(5)
@ 300, 494 SAY idxS PROMPT nAmeT OF oDlgBrw
idxS:SetStyleSheet( " background: #F4F4F0; font-size: 12px; font-weight: bold; color: #ff0000;" )
@ 400, 540 SAY idxQ PROMPT " Records: " + ALLTRIM( STR(cuan)) + SPACE(2) OF oDlgBrw
idxQ:SetStyleSheet( " background: #F4F4F0; font-size: 13px; font-weight: bold; color: #ff0000;" )
ACTIVATE DIALOG oDlgBrw CENTERED
CLOSE ALL
RETURN NIL
*--------------------------------------*
FUNCTION BCOL(nCol)
*--------------------------------------*
RETURN 81*(nCol-1)+10
*--------------------------------------*
FUNCTION FT_EDITUSER(cId_User)
*--------------------------------------*
LOCAL oDlg,I,oBtnOk,oBtnCancel
LOCAL oSay:=ARRAY(5)
PRIVATE oId,oName,oTele,oDate,cIdX , oIma, picxely
PRIVATE cId:=SPACE(03),cName:=SPACE(050),cTele:=SPACE(012),dDate:=DTOC(DATE()),cPic := SPACE(4)
PRIVATE aSay :={"Id" ,"Nombre","Telefono","Fecha","Photo"}
PRIVATE aVars:={"cId","cName" ,"cTele","dDate","cPic"}
IF !Empty(cId_User)
USE ("FT_USER.DBF")
dbGoTop()
LOCATE FOR FIELD->USR_ID=cId_User
cId :=FIELD->USR_ID
cName :=FIELD->USR_NAME
cTele :=FIELD->USR_TELEF
dDate :=CTOD(FIELD->USR_DATE)
cPic :=FIELD->USR_PIC
ENDIF
DEFINE DIALOG oDlg TITLE "Crear Nuevo Usuario" ;
SIZE 330, 220
FOR I =1 TO LEN(aSay)
@ CROW(I),15 SAY oSay[I] PROMPT aSay[I] OF oDlg
NEXT I
USE FT_USER
dbGoBottom()
cIdX := VAL(FT_USER->USR_ID) + 1
cId := ALLTRIM(STR(cIdX))
@ CROW(1),065 GET oId VAR cId OF oDlg
oId:setFixedSize(30,24)
@ CROW(2),065 GET oName VAR cName OF oDlg
oName:setFixedSize(120,24)
@ CROW(3),065 GET oTele VAR cTele OF oDlg
oTele:setFixedSize(120,24)
oTele:setInputMask("999999999999")
@ CROW(4),065 GET oDate VAR dDate OF oDlg
oDate:setFixedSize(80,24)
oDate:setInputMask("00/00/0000")
cPic := "0000"
@ CROW(5),065 GET oPic VAR cPic OF oDlg
oPic:setFixedSize(120,24)
oPic:setInputMask("9999")
picxely := "./images/" + "camara2.png"
@ CROW(1)+06,208 IMAGE oIma FILE picxely SIZE 100,086 OF oDlg
oIma:setStyleSheet( "border: 2px solid White ;" )
@ CROW(5)-07 , 220 BUTTON oBtnPho PROMPT " Photo " OF oDlg ;
ACTION SelePhoto()
@ CROW(6)+ 10 , 110 BUTTON oBtnOk PROMPT "Ok" OF oDlg ;
ACTION FT_SAVEUSR(oDlg)
@ CROW(6)+10 ,200 BUTTON oBtnCancel PROMPT "Cancel" OF oDlg ;
ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED
Return nil
*--------------------------------*
FUNCTION SelePhoto()
*--------------------------------*
LOCAL oFileDialog, cListOfFiles, cFileName
oFileDialog := QFileDialog()
oFileDialog:exec()
cListOfFiles := oFileDialog:selectedFiles()
cFileName := cListOfFiles:At( 0 )
oIma:SetPixmap( QPixmap( cFileName ) )
oIma:resize(100,086)
*------------------------------------------------------------------------*
ficherAaX := RIGHT( cFileName , LEN(cFileName) - RAT("\", cFileName ))
Nuevo0 := LEFT (ficherAaX, LEN( ficherAaX ) - 4 )
Nuevo1 := SUBSTR(Nuevo0,-4)
*------------------------------------------------------------------------*
oPic:setInputMask( Nuevo1 )
Return Nil
*------------------------------------*
FUNCTION Modificare()
*------------------------------------*
LOCAL mirux
LOCAL idx,nam,tel ,dat
oBrw:currentIndex(1):row() //<== Indica Numero de la Linea
mirux := oBrw:currentIndex(1):row()
USE ("FT_USER.DBF")
GoTo mirux + 1
cId := ALLTRIM(FT_USER->USR_ID)
cName := ALLTRIM(FT_USER->USR_NAME)
cTele := ALLTRIM(FT_USER->USR_TELEF)
dDate := DTOC(FT_USER->USR_DATE)
cPic := SUBSTR( ALLTRIM(FT_USER->USR_PIC) , 10, 4)
DEFINE DIALOG oDlg TITLE "Modificar Usuario => Id: " +SPACE(2)+ cId ;
SIZE 330, 220
@ CROW(1),15 SAY idx PROMPT "Id" OF oDlg
@ CROW(2),15 SAY nam PROMPT "Nombre" OF oDlg
@ CROW(3),15 SAY tel PROMPT "Telefono" OF oDlg
@ CROW(4),15 SAY dat PROMPT "Fecha" OF oDlg
@ CROW(5),15 SAY dat PROMPT "Photo" OF oDlg
@ CROW(1),065 GET oId VAR cId OF oDlg
oId:setFixedSize(30,24)
@ CROW(2),065 GET oName VAR cName OF oDlg
oName:setFixedSize(120,24)
@ CROW(3),065 GET oTele VAR cTele OF oDlg
oTele:setFixedSize(120,24)
oTele:setInputMask("999999999999")
@ CROW(4),065 GET oDate VAR dDate OF oDlg
oDate:setFixedSize(80,24)
oDate:setInputMask("00/00/0000")
@ CROW(5),065 GET oPic VAR cPic OF oDlg
oPic:setFixedSize(120,24)
oPic:setInputMask("9999")
picxely := "./images/" + "camara2.png"
@ CROW(1)+06,208 IMAGE oIma FILE picxely SIZE 100,086 OF oDlg
oIma:setStyleSheet( "border: 2px solid White ;" )
@ CROW(5)-07 , 220 BUTTON oBtnPho PROMPT " Photo " OF oDlg ;
ACTION SelePhotoM()
@ CROW(6)+ 10 , 110 BUTTON oBtnOk PROMPT "Ok" OF oDlg ;
ACTION FT_SAVEMO(oDlg)
@ CROW(6)+10 ,200 BUTTON oBtnCancel PROMPT "Cancel" OF oDlg ;
ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED
Return nil
*--------------------------------*
FUNCTION SelePhotoM
*--------------------------------*
LOCAL oFileDialog, cListOfFiles, cFileName
oFileDialog := QFileDialog()
oFileDialog:exec()
cListOfFiles := oFileDialog:selectedFiles()
cFileName := cListOfFiles:At( 0 )
oIma:SetPixmap( QPixmap( cFileName ) )
oIma:resize(100,086)
*------------------------------------------------------------------------*
ficherAaX := RIGHT( cFileName , LEN(cFileName) - RAT("\", cFileName ))
Nuevo0 := LEFT (ficherAaX, LEN( ficherAaX ) - 4 )
Nuevo1 := SUBSTR(Nuevo0,-4)
*------------------------------------------------------------------------*
oPic:setInputMask( Nuevo1 )
Return Nil
*--------------------------------------*
FUNCTION DeleClick()
*--------------------------------------*
LOCAL vRecno := FT_USER->USR_ID
LOCAL miru
oBrw:currentIndex(1):row() //<== Indica Numero de la Linea
miru := oBrw:currentIndex(1):row()
USE ("FT_USER.DBF")
GoTo miru +1
IF MSGYESNO( "Delete This Record?" + CRLF + CRLF +;
"Code: " + ALLTRIM(FT_USER->USR_ID)+ CRLF +;
"Name: " + ALLTRIM(FT_USER->USR_NAME) , "Confirmation" )
DELETE
PACK
SKIP -1
ENDIF
FT_CREATE_TABLES()
Fine( oBrw )
RETURN NIL
*------------------------------------*
FUNCTION CROW(nRow)
*------------------------------------*
RETURN 30*(nRow-1)+20
*------------------------------------*
/*
// Guardar Registro
*/
*------------------------------------*
FUNCTION FT_SAVEUSR(oDlg)
*------------------------------------*
LOCAL cMsg:="",i,uValue
FOR I=1 TO LEN(aVars)
IF Empty(&(aVars[I]))
cMsg:=cMsg+IF(Empty(cMsg),"",CRLF)+aSay[I]
ENDIF
NEXT I
IF !Empty(cMsg)
MsgInfo(cMsg,"Falta campo(s)")
RETURN .F.
ENDIF
USE ("FT_USER.DBF")
dbGoTop()
LOCATE FOR FIELD->USR_ID=cId
IF !FOUND()
dbAppend()
ENDIF
REPLACE FIELD->USR_ID WITH cId
REPLACE FIELD->USR_NAME WITH ALLTRIM(UPPER(cName))
REPLACE FIELD->USR_TELEF WITH ALLTRIM(cTele)
REPLACE FIELD->USR_DATE WITH CTOD(dDate)
REPLACE FIELD->USR_PIC WITH "./images/" + ALLTRIM(cPic) + ".png"
COMMIT
FT_CREATE_TABLES()
Inizio( oBrw )
Fine( oBrw )
SysRefresh()
oBrw:SetFocus()
oDlg:End()
RETURN NIL
*------------------------------------*
FUNCTION FT_SAVEMO(oDlg)
*------------------------------------*
REPLACE FIELD->USR_ID WITH cId
REPLACE FIELD->USR_NAME WITH ALLTRIM(UPPER(cName))
REPLACE FIELD->USR_TELEF WITH ALLTRIM(cTele)
REPLACE FIELD->USR_DATE WITH CTOD(dDate)
REPLACE FIELD->USR_PIC WITH "./images/" + ALLTRIM(cPic) + ".png"
COMMIT
FT_CREATE_TABLES()
Fine( oBrw )
SysRefresh()
oBrw:SetFocus()
oDlg:End()
RETURN NIL
*------------------------------------*
FUNCTION FT_CREATE_TABLES()
*------------------------------------*
LOCAL I
LOCAL aTables:={}
LOCAL aStruct:={}
LOCAL aIndex :={}
AADD(aStruct,{"USR_ID" ,"C",003,0})
AADD(aStruct,{"USR_NAME" ,"C",030,0})
AADD(aStruct,{"USR_TELEF" ,"C",012,0})
AADD(aStruct,{"USR_DATE" ,"D",008,0})
AADD(aStruct,{"USR_PIC" ,"C",017,0})
AADD(aTables,{"FT_USER.DBF",aStruct,aIndex})
FOR I=1 TO LEN(aTables)
IF !FILE(aTables[I,1])
dbcreate(aTables[I,1],aTables[I,2])
dbCloseall()
USE ("FT_USER.DBF")
dbAppend()
REPLACE FIELD->USR_ID WITH "1"
REPLACE FIELD->USR_NAME WITH ALLTRIM(UPPER("LOPEZ , MUSTAFA"))
REPLACE FIELD->USR_TELEF WITH ALLTRIM("123456789")
REPLACE FIELD->USR_DATE WITH DATE()
REPLACE FIELD->USR_PIC WITH "./images/0000.png"
ENDIF
NEXT I
RETURN NIL
* --- Posizione Top del Browse
*------------------------------------*
FUNCTION Inizio( oBrw ) // Ok
*------------------------------------*
oBrw:scrollToTop()
PicPlus()
oBrw:setFocus()
RETURN NIL
*------------------------------------*
FUNCTION MenosUno( oBrw )
*------------------------------------*
dbSkip(-1)
hCtrl:SetPixmap( QPixmap( AllTrim(FIELD->USR_PIC ) ) )
picx:= " Photo Num: " + SUBSTR( FIELD->USR_PIC ,10,8)+ SPACE(2)
idxZ:setText( picx )
nAmeT := SPACE(2) + "Id: "+ ALLTRIM( FIELD->USR_ID )+ SPACE(3) +;
"Name: " +ALLTRIM( FIELD->USR_NAME )+ SPACE(5)
idxS:setText( nAmeT )
oBrw:setFocus()
RETURN NIL
*------------------------------------*
FUNCTION MasUno( oBrw )
*------------------------------------*
dbSkip(+1)
hCtrl:SetPixmap( QPixmap( AllTrim(FIELD->USR_PIC ) ) )
picx:= " Photo Num: " + SUBSTR( FIELD->USR_PIC ,10,8)+ SPACE(2)
idxZ:setText( picx )
nAmeT := SPACE(2) + "Id: "+ ALLTRIM( FIELD->USR_ID )+ SPACE(3) +;
"Name: " +ALLTRIM( FIELD->USR_NAME )+ SPACE(5)
idxS:setText( nAmeT )
oBrw:setFocus()
RETURN NIL
* --- Posizione Bottom del Browse
*------------------------------------*
FUNCTION Fine( oBrw ) //Ok
*------------------------------------*
oBrw:scrollToBottom()
PicPlus()
oBrw:setFocus()
RETURN NIL
*---------------------------------------------------------*
FUNCTION PicPlus()
*---------------------------------------------------------*
oBrw:currentIndex(1):row()
wNum := oBrw:currentIndex(1):row()
USE ("FT_USER.DBF")
GoTo wNum + 1
picxel := ALLTRIM(FIELD->USR_PIC )
picx:= " Photo Num: " + SUBSTR( FIELD->USR_PIC ,10,8)+ SPACE(2)
hCtrl:SetPixmap( QPixmap( picxel):Scaled( 200,200 ) )
idxZ:setText( picx )
nAmeT := SPACE(2) + "Id: "+ ALLTRIM( FIELD->USR_ID )+ SPACE(3) +;
"Name: " +ALLTRIM( FIELD->USR_NAME )+ SPACE(5)
idxS:setText( nAmeT )
Return Nil
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
PD: las Fotos dentro Carpeta ./images/ son Fotos con formato png de 200 x 200 ejemplo => 0001.png