187 lines
8.0 KiB
Plaintext
187 lines
8.0 KiB
Plaintext
* test_splitter_h.prg
|
|
* sfsplitterh_panou (sfsplitter.vcx), splitter orizontal (vertical ca linie) intre Object1 (stanga) si Object2 (dreapta).
|
|
* Forma sintetica fara DB: edtStanga (Left < splitter, neatins), edt1 = Object1, spl, edt2 = Object2, edtDreapta (Left >= marginea dreapta a splitterului).
|
|
* T1 MoveSplitterToPosition(+delta): splitter, Object1.Width, Object2.Left cu marginea dreapta neschimbata, control din dreapta mutat, cel din stanga neatins.
|
|
* T2 clamp la nObject1MinSize / nObject2MinSize. T3 Save/RestorePosition prin .ini temporar (gcGeneralIniFile).
|
|
*
|
|
* Rulare: vfp9.exe -A -T "D:\ROA\ROACONT\COMUN\utile\Teste\efactura_import\test_splitter_h.prg"
|
|
* Iesire in D:\ROA\ROACONT\COMUN\utile\Teste\efactura_import\test_splitter_h_log.txt
|
|
|
|
SET SAFETY OFF
|
|
SET TALK OFF
|
|
SET DELETED ON
|
|
SET EXACT ON
|
|
CLOSE DATABASES
|
|
|
|
PUBLIC gcUILog, gnPass, gnFail, gcTempIni, gcGeneralIniFile
|
|
gcUILog = "D:\ROA\ROACONT\COMUN\utile\Teste\efactura_import\test_splitter_h_log.txt"
|
|
gcTempIni = "D:\ROA\ROACONT\COMUN\utile\Teste\efactura_import\test_splitter_h_temp.ini"
|
|
gnPass = 0
|
|
gnFail = 0
|
|
IF FILE(gcTempIni)
|
|
DELETE FILE (gcTempIni)
|
|
ENDIF
|
|
STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog)
|
|
|
|
ON ERROR DO PrErrLocal WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
|
ON SHUTDOWN QUIT
|
|
|
|
TRY
|
|
SET PROCEDURE TO 'D:\ROA\ROACONT\COMUN\programe\ini.prg' ADDITIVE
|
|
SET CLASSLIB TO 'D:\ROA\ROACONT\COMUN\clase\sfsplitter.vcx' ADDITIVE
|
|
gcGeneralIniFile = m.gcTempIni
|
|
|
|
LOCAL loF, loF2, lnLeft0, lnDreaptaMargine0, lnRight0, lnStang0, lnW10, lnPoz
|
|
|
|
*=== T1: MoveSplitterToPosition(+40) ===
|
|
loF = PrMkForm()
|
|
DO PrTest WITH 'formular instantiat, clasa sfsplitterh_panou', TYPE('loF') == 'O' AND LOWER(loF.spl.Class) == 'sfsplitterh_panou'
|
|
lnLeft0 = loF.spl.Left
|
|
lnW10 = loF.edt1.Width
|
|
lnDreaptaMargine0 = loF.edt2.Left + loF.edt2.Width
|
|
lnRight0 = loF.edtDreapta.Left
|
|
lnStang0 = loF.edtStanga.Left
|
|
loF.spl.MoveSplitterToPosition(lnLeft0 + 40)
|
|
DO PrTest WITH 'T1 splitter.Left +40', loF.spl.Left = lnLeft0 + 40, 'obtinut=' + TRANSFORM(loF.spl.Left)
|
|
DO PrTest WITH 'T1 Object1.Width +40', loF.edt1.Width = lnW10 + 40, 'obtinut=' + TRANSFORM(loF.edt1.Width)
|
|
DO PrTest WITH 'T1 Object1.Left neschimbat', loF.edt1.Left = 100, 'obtinut=' + TRANSFORM(loF.edt1.Left)
|
|
DO PrTest WITH 'T1 Object2.Left +40', loF.edt2.Left = 405 + 40, 'obtinut=' + TRANSFORM(loF.edt2.Left)
|
|
DO PrTest WITH 'T1 marginea dreapta Object2 neschimbata', loF.edt2.Left + loF.edt2.Width = lnDreaptaMargine0, 'obtinut=' + TRANSFORM(loF.edt2.Left + loF.edt2.Width)
|
|
DO PrTest WITH 'T1 control din dreapta mutat +40', loF.edtDreapta.Left = lnRight0 + 40, 'obtinut=' + TRANSFORM(loF.edtDreapta.Left)
|
|
DO PrTest WITH 'T1 control din stanga neatins', loF.edtStanga.Left = lnStang0, 'obtinut=' + TRANSFORM(loF.edtStanga.Left)
|
|
DO PrTest WITH 'T1 Anchor-urile restaurate', loF.edt2.Anchor = 13 AND loF.edtDreapta.Anchor = 13 AND loF.spl.Anchor = 13, ;
|
|
'edt2=' + TRANSFORM(loF.edt2.Anchor) + ' dreapta=' + TRANSFORM(loF.edtDreapta.Anchor) + ' spl=' + TRANSFORM(loF.spl.Anchor)
|
|
|
|
*=== T1b: mutare inapoi (-40) readuce layout-ul ===
|
|
loF.spl.MoveSplitterToPosition(lnLeft0)
|
|
DO PrTest WITH 'T1b revenire: splitter, Object1.Width, Object2.Left', loF.spl.Left = lnLeft0 AND loF.edt1.Width = lnW10 AND loF.edt2.Left = 405
|
|
|
|
*=== T2: clamp ===
|
|
loF.spl.MoveSplitterToPosition(9999)
|
|
DO PrTest WITH 'T2 clamp dreapta: Object2.Width = nObject2MinSize', loF.edt2.Width = loF.spl.nObject2MinSize, 'obtinut=' + TRANSFORM(loF.edt2.Width)
|
|
DO PrTest WITH 'T2 clamp dreapta: marginea Object2 neschimbata', loF.edt2.Left + loF.edt2.Width = lnDreaptaMargine0
|
|
loF.spl.MoveSplitterToPosition(0)
|
|
DO PrTest WITH 'T2 clamp stanga: Object1.Width = nObject1MinSize', loF.edt1.Width = loF.spl.nObject1MinSize, 'obtinut=' + TRANSFORM(loF.edt1.Width)
|
|
*=== T4: Resize pe Object1 il realiniaza la splitter
|
|
loF.spl.RestorePosition()
|
|
loF.edt1.Width = 30
|
|
DO PrTest WITH 'T4 Resize Object1 -> lipit de splitter', loF.edt1.Left + loF.edt1.Width = loF.spl.Left, 'obtinut=' + TRANSFORM(loF.edt1.Left + loF.edt1.Width) + ' spl=' + TRANSFORM(loF.spl.Left)
|
|
loF.Release()
|
|
|
|
*=== T3: persistenta ===
|
|
loF = PrMkForm()
|
|
loF.spl.cIniSectiune = 'test'
|
|
loF.spl.cIniCheie = 'poz'
|
|
loF.spl.SavePosition()
|
|
DO PrTest WITH 'T3 SavePosition inainte de RestorePosition nu scrie', !FILE(gcTempIni)
|
|
loF.spl.RestorePosition()
|
|
DO PrTest WITH 'T3 fara cheie in ini: pozitia de design neschimbata', loF.spl.Left = 400 AND loF.spl.lRestaurat, 'obtinut=' + TRANSFORM(loF.spl.Left)
|
|
loF.spl.SavePosition()
|
|
DO PrTest WITH 'T3 forma nemutata nu scrie in ini', !FILE(gcTempIni)
|
|
loF.spl.MoveSplitterToPosition(loF.spl.Left + 40)
|
|
loF.spl.SavePosition()
|
|
lnPoz = VAL(NVL(getini(gcTempIni, 'test', 'poz'), ''))
|
|
DO PrTest WITH 'T3 dupa mutare SavePosition scrie 440', lnPoz = 440, 'obtinut=' + TRANSFORM(lnPoz)
|
|
loF.Release()
|
|
|
|
loF2 = PrMkForm()
|
|
loF2.spl.cIniSectiune = 'test'
|
|
loF2.spl.cIniCheie = 'poz'
|
|
loF2.spl.RestorePosition()
|
|
DO PrTest WITH 'T3 forma noua restaureaza 440', loF2.spl.Left = 440, 'obtinut=' + TRANSFORM(loF2.spl.Left)
|
|
DO PrTest WITH 'T3 Object1.Width si Object2.Left urmeaza', loF2.edt1.Width = 340 AND loF2.edt2.Left = 445
|
|
DELETE FILE (gcTempIni)
|
|
loF2.spl.SavePosition()
|
|
DO PrTest WITH 'T3 forma restaurata si nemutata nu rescrie ini', !FILE(gcTempIni)
|
|
loF2.Release()
|
|
|
|
IF FILE(gcTempIni)
|
|
DELETE FILE (gcTempIni)
|
|
ENDIF
|
|
LOCAL loFH, lnCol0, lnSty0
|
|
loFH = CREATEOBJECT('Form')
|
|
loFH.AddObject('splH', 'sfsplitterh_panou')
|
|
lnCol0 = loFH.splH.BackColor
|
|
lnSty0 = loFH.splH.BackStyle
|
|
DO PrTest WITH 'T9 stare initiala 200,215,230 si BackStyle 1', lnCol0 = RGB(200,215,230) AND lnSty0 = 1
|
|
loFH.splH.MouseEnter()
|
|
DO PrTest WITH 'T9 MouseEnter: BackColor albastru, BackStyle 1', loFH.splH.BackColor = RGB(0,120,215) AND loFH.splH.BackStyle = 1
|
|
loFH.splH.MouseLeave()
|
|
DO PrTest WITH 'T9 MouseLeave: valorile initiale', loFH.splH.BackColor = lnCol0 AND loFH.splH.BackStyle = lnSty0
|
|
loFH.Release()
|
|
|
|
DO PrLogLocal WITH 'REZULTAT FINAL: PASS=' + TRANSFORM(gnPass) + ' FAIL=' + TRANSFORM(gnFail)
|
|
DO PrLogLocal WITH 'TOTAL: test terminat fara exceptie'
|
|
CATCH TO loEx
|
|
DO PrLogLocal WITH 'EXCEPTIE: ' + loEx.Message + ' (' + TRANSFORM(loEx.LineNo) + ') ' + loEx.Procedure
|
|
TRY
|
|
IF FILE(gcTempIni)
|
|
DELETE FILE (gcTempIni)
|
|
ENDIF
|
|
CATCH
|
|
ENDTRY
|
|
ENDTRY
|
|
|
|
QUIT
|
|
|
|
**********************************************************
|
|
* Object1 = edt1 (100..400), splitter 400..405, Object2 = edt2 (405..705), edtDreapta la 720, edtStanga la 10
|
|
FUNCTION PrMkForm
|
|
LOCAL loF
|
|
loF = CREATEOBJECT('Form')
|
|
loF.WindowType = 0
|
|
loF.Width = 800
|
|
loF.Height = 300
|
|
loF.AddObject('edtStanga', 'EditBox')
|
|
loF.AddObject('edt1', 'Container')
|
|
loF.AddObject('spl', 'sfsplitterh_panou')
|
|
loF.AddObject('edt2', 'EditBox')
|
|
loF.AddObject('edtDreapta', 'EditBox')
|
|
loF.edtStanga.Move(10, 10, 60, 100)
|
|
loF.edt1.Move(100, 10, 300, 100)
|
|
loF.spl.Move(400, 10, 5, 100)
|
|
loF.edt2.Move(405, 10, 300, 100)
|
|
loF.edtDreapta.Move(720, 10, 50, 100)
|
|
loF.edtStanga.Visible = .T.
|
|
loF.edt1.Visible = .T.
|
|
loF.spl.Visible = .T.
|
|
loF.edt2.Visible = .T.
|
|
loF.edtDreapta.Visible = .T.
|
|
loF.edtStanga.Anchor = 13
|
|
loF.edt1.Anchor = 13
|
|
loF.edt2.Anchor = 13
|
|
loF.edtDreapta.Anchor = 13
|
|
loF.spl.Anchor = 13
|
|
loF.spl.cObject1Name = 'edt1'
|
|
loF.spl.cObject2Name = 'edt2'
|
|
loF.spl.nObject1MinSize = 100
|
|
loF.spl.nObject2MinSize = 80
|
|
RETURN loF
|
|
ENDFUNC
|
|
|
|
**********************************************************
|
|
PROCEDURE PrTest
|
|
LPARAMETERS tcEticheta, tlOk, tcDetalii
|
|
IF tlOk
|
|
gnPass = gnPass + 1
|
|
ELSE
|
|
gnFail = gnFail + 1
|
|
ENDIF
|
|
DO PrLogLocal WITH ' ' + tcEticheta + ': ' + IIF(tlOk, 'OK', 'FAIL') + IIF(EMPTY(NVL(m.tcDetalii,'')), '', ' (' + m.tcDetalii + ')')
|
|
ENDPROC
|
|
|
|
**********************************************************
|
|
PROCEDURE PrLogLocal
|
|
LPARAMETERS tcMsg
|
|
LOCAL lcL
|
|
SET SAFETY OFF
|
|
lcL = IIF(FILE(gcUILog), FILETOSTR(gcUILog), '')
|
|
STRTOFILE(lcL + TRANSFORM(tcMsg) + CHR(13) + CHR(10), gcUILog)
|
|
ENDPROC
|
|
|
|
**********************************************************
|
|
PROCEDURE PrErrLocal
|
|
LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo
|
|
DO PrLogLocal WITH 'EROARE ' + TRANSFORM(tnError) + ' ' + TRANSFORM(tcMessage) + ' in ' + TRANSFORM(tcProgram) + ' linia ' + TRANSFORM(tnLineNo)
|
|
ENDPROC
|