#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