AlainTech |
Ventilo a écrit a écrit :
On peut voir le style de code que ca donne?? (je suis curieux :D)
|
Avec plaisir :love: Voici un extrait de code qui affiche une liste vide qui va se remplir pendant l'encodage.
Chaque élément de la liste (intersection ligne/colonne) est un objet auquel je peux appliquer des méthodes ou récupérer/modifier les propriétés.
Désolé pour les smileys dans le texte, il y a beaucoup de : dans le code (Faites un edit, ils disparaissent)
Function ligent(nNumEnt,aTabLEnt)
local aOldLEnt
local cEcran
local cMode
local cRech
local cTaille
local lEncore
local lModif
local lOldExit
local mTabVal
local nColNum
local nKey
local nLigArt
local nSortie
local nTotArt
local oGet
local oTbr
local bTotArt := {|x| nTotArt := nTotArt + x[3]}
local lLigEnt := .f.
local nL := 1
set(_SET_CONFIRM, .t.)
if empty(aTabLEnt)
aTabLEnt := {{1,"* ",0,""}}
endif
oTbr := TBrowseNew(6,1,18,78)
oTbr:goTopBlock := {|| nL := 1}
oTbr:goBottomBlock := {|| nL := len(aTablEnt)}
oTbr:skipBlock := {|n, nSaveNl| nSaveNl := nL, ;
nL := if(n > 0, min(len(aTabLEnt), nL + n), ;
max(1, nL + n)), nL - nSaveNl}
oTbr:addcolumn(TBColumnNew(" ", {|| str(aTabLEnt[nL,1],3)}))
oTbr:addcolumn(TBColumnNew("Article", {|| aTabLEnt[nL,2]}))
oTbr:addcolumn(TBColumnNew(" Nombre", {|| aTabLEnt[nL,3]}))
oTbr:getcolumn(3):picture := "9999"
lEncore := .t.
oTbr:colpos := 2
while lEncore
while ! oTbr:stabilize()
if (nKey := inkey()) != 0
exit
endif
enddo
if oTbr:stable
nColNum := oTbr:colpos
aOldLEnt := aclone(aTabLEnt)
mTabVal := aTabLEnt[nL,nColNum]
lOldExit := readexit(.t.)
oGet := getNew(row(), col(), {|x| if(x == NIL, mTabVal, mTabVal := x)}, "mTabVal" )
do case
case nColNum == 2
oGet:picture := "@!"
case nColNum == 3
oGet:picture := "@K 9999"
end
readmodal({oGet})
nSortie := oGet:exitState
lModif := updated()
aTabLEnt[nL,nColNum] := mTabVal
readexit(lOldExit)
nKey := lastkey()
do case
case oTbr:colpos == 2 // code
if nKey == K_ENTER .or. nKey == K_TAB .or. nSortie == GE_ENTER
if ! empty(mTabVal)
if alltrim(mTabVal) == "*" .or. lModif
nTitre := 7
cRech := recherche(mTabVal)
if cAction != cc
cMode := ci
push(GetList)
cEcran := savescreen()
cRech := gestfich(cMode,cRech)
restscreen(,,,,cEcran)
GetList := pop()
endif
if cAction == ca
loop
else
aTabLEnt[nL,2] := ARTICLE->CODE
endif
nTitre := 12
endif
oTbr:colpos := 3
nKey := 0
else
lEncore := .f.
endif
endif
case oTbr:colpos == 3 // quantit?
if mTabVal != 0
nTotArt := 0
aeval(aTabLEnt,bTotArt)
if nSortie == GE_ENTER
nKey := K_DOWN
oTbr:colpos := 2
endif
else
nKey := 0
endif
end
oTbr:refreshCurrent()
oGet := {}
endif
@ 19, 46 say nTotArt picture "@E 9999"
do case
case nKey == K_DOWN
if nL = len(aTabLEnt) .and. alltrim(aTabLEnt[nL,2]) != "*"
aadd(aTabLEnt, {nL+1,"* ",0,""})
oTbr:colpos := 2
endif
oTbr:down()
if alltrim(aTabLEnt[nL,2]) != "*"
oTbr:colpos := 2
endif
case nKey == K_UP
oTbr:up()
case nKey == K_PGDN; oTbr:pagedown()
case nKey == K_PGUP; oTbr:pageup()
case nKey == K_CTRL_PGDN; oTbr:gobottom()
case nKey == K_CTRL_PGUP; oTbr:gotop()
case nKey == K_TAB .or. nKey == K_ENTER
if oTbr:colpos = 2
oTbr:colpos := 3
else
oTbr:down()
oTbr:colpos := 2
endif
case nKey == K_SH_TAB
if oTbr:colpos = 3
oTbr:colpos := 2
else
oTbr:up()
if nL != 1
oTbr:colpos := 3
endif
endif
case nKey == K_HOME
oTbr:home()
oTbr:colpos := 2
case nKey == K_END; oTbr:end()
case nKey == K_ESC; lEncore := .f.
endcase
enddo
if empty(atail(aTabLEnt)[3])
asize(aTabLEnt,len(aTabLEnt) - 1)
endif
if len(aTabLEnt) > 0
lLigEnt := .t.
endif
return lLigEnt
* Fin ligent
Toutes les variables préfixées o sont des objets.
Des fonctions telles que push et pop n'existent pas dans le langage, je les ai créées.
:jap: [jfdsdjhfuetppo]--Message édité par AlainTech--[/jfdsdjhfuetppo] |