sync SVN r18236
This commit is contained in:
@@ -120,6 +120,18 @@ DEFINE CLASS gripper AS container
|
||||
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE MouseDown
|
||||
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
||||
*!* 30.09.2026 marius.mutu - clickul pe gripper (punctele din mijlocul benzii) porneste si el tragerea splitterului
|
||||
this.parent.MouseDown(nButton, nShift, nXCoord, nYCoord)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE MouseLeave
|
||||
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
||||
*!* 30.09.2026 marius.mutu - iesirea de pe gripper direct in afara benzii readuce culoarea splitterului
|
||||
this.parent.MouseLeave(nButton, nShift, nXCoord, nYCoord)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE MouseMove
|
||||
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
||||
|
||||
@@ -297,24 +309,48 @@ DEFINE CLASS gripperdot AS container
|
||||
this.SetAll('MousePointer', this.MousePointer, 'Shape')
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE MouseDown
|
||||
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
||||
*!* 30.09.2026 marius.mutu - clickul pe gripper (punctele din mijlocul benzii) porneste si el tragerea splitterului
|
||||
this.parent.MouseDown(nButton, nShift, nXCoord, nYCoord)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE MouseMove
|
||||
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
||||
|
||||
this.parent.MouseMove(nButton, nShift, nXCoord, nYCoord)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE ShapeDark.MouseDown
|
||||
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
||||
|
||||
this.parent.MouseDown(nButton, nShift, nXCoord, nYCoord)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE ShapeDark.MouseMove
|
||||
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
||||
|
||||
this.parent.MouseMove(nButton, nShift, nXCoord, nYCoord)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE ShapeLight.MouseDown
|
||||
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
||||
|
||||
this.parent.MouseDown(nButton, nShift, nXCoord, nYCoord)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE ShapeLight.MouseMove
|
||||
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
||||
|
||||
this.parent.MouseMove(nButton, nShift, nXCoord, nYCoord)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE ShapeMiddle.MouseDown
|
||||
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
||||
|
||||
this.parent.MouseDown(nButton, nShift, nXCoord, nYCoord)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE ShapeMiddle.MouseMove
|
||||
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
||||
|
||||
@@ -481,6 +517,30 @@ DEFINE CLASS sfsplitter AS control
|
||||
|
||||
|
||||
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE MouseDown
|
||||
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
||||
*!* 30.09.2026 marius.mutu - tragerea urmareste cursorul cat timp e apasat butonul: splitterul (control fara fereastra) nu mai primeste MouseMove cand cursorul iese din banda
|
||||
Local lcPt, lnPozVeche, lnPoz
|
||||
If m.nButton = 1 And This.Enabled
|
||||
Declare Integer GetCursorPos In user32 String @
|
||||
Declare Integer ScreenToClient In user32 Integer, String @
|
||||
Declare Short GetAsyncKeyState In user32 Integer
|
||||
Declare Integer GetSystemMetrics In user32 Integer
|
||||
lnPozVeche = -1
|
||||
Do While GetAsyncKeyState(Iif(GetSystemMetrics(23) = 0, 1, 2)) < 0
|
||||
lcPt = Replicate(Chr(0), 8)
|
||||
GetCursorPos(@lcPt)
|
||||
ScreenToClient(Thisform.HWnd, @lcPt)
|
||||
lnPoz = This.GetPosition(Ctobin(Left(m.lcPt, 4), "4RS"), Ctobin(Substr(m.lcPt, 5, 4), "4RS"))
|
||||
If m.lnPoz # m.lnPozVeche
|
||||
lnPozVeche = m.lnPoz
|
||||
This.MoveSplitterToPosition(m.lnPoz)
|
||||
Endif
|
||||
DoEvents
|
||||
Enddo
|
||||
Endif
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE MouseMove
|
||||
@@ -693,7 +753,7 @@ DEFINE CLASS sfsplitterh_panou AS sfsplitterh OF "sfsplitter.vcx"
|
||||
*</DefinedPropArrayMethod>
|
||||
|
||||
*<PropValue>
|
||||
BackColor = 200,215,230
|
||||
BackColor = 160,185,210
|
||||
BackStyle = 1
|
||||
cinicheie =
|
||||
cinisectiune =
|
||||
@@ -764,11 +824,11 @@ DEFINE CLASS sfsplitterh_panou AS sfsplitterh OF "sfsplitter.vcx"
|
||||
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
||||
Local loObj
|
||||
DoDefault(m.nButton, m.nShift, m.nXCoord, m.nYCoord)
|
||||
* mouse-ul a intrat pe gripper (copil al splitterului): ramane colorat
|
||||
*!* 30.09.2026 marius.mutu - mouse-ul e inca pe splitter sau pe gripper (si la apelul din gripper.MouseLeave): ramane colorat
|
||||
loObj = Sys(1270)
|
||||
Try
|
||||
Do While Vartype(m.loObj) = 'O'
|
||||
If Compobj(m.loObj.Parent, This)
|
||||
If Compobj(m.loObj, This)
|
||||
Return
|
||||
Endif
|
||||
loObj = m.loObj.Parent
|
||||
@@ -935,7 +995,7 @@ DEFINE CLASS sfsplitterv_panou AS sfsplitterv OF "sfsplitter.vcx"
|
||||
*</DefinedPropArrayMethod>
|
||||
|
||||
*<PropValue>
|
||||
BackColor = 200,215,230
|
||||
BackColor = 160,185,210
|
||||
BackStyle = 1
|
||||
cinicheie =
|
||||
cinisectiune =
|
||||
@@ -1006,11 +1066,11 @@ DEFINE CLASS sfsplitterv_panou AS sfsplitterv OF "sfsplitter.vcx"
|
||||
LPARAMETERS nButton, nShift, nXCoord, nYCoord
|
||||
Local loObj
|
||||
DoDefault(m.nButton, m.nShift, m.nXCoord, m.nYCoord)
|
||||
* mouse-ul a intrat pe gripper (copil al splitterului): ramane colorat
|
||||
*!* 30.09.2026 marius.mutu - mouse-ul e inca pe splitter sau pe gripper (si la apelul din gripper.MouseLeave): ramane colorat
|
||||
loObj = Sys(1270)
|
||||
Try
|
||||
Do While Vartype(m.loObj) = 'O'
|
||||
If Compobj(m.loObj.Parent, This)
|
||||
If Compobj(m.loObj, This)
|
||||
Return
|
||||
Endif
|
||||
loObj = m.loObj.Parent
|
||||
|
||||
58
utile/Teste/efactura_import/drv_splitter_mouse.ps1
Normal file
58
utile/Teste/efactura_import/drv_splitter_mouse.ps1
Normal file
@@ -0,0 +1,58 @@
|
||||
# drv_splitter_mouse.ps1 [-Poz <n>|-] [-Desch <k>] - tragere REALA cu mouse-ul pe splitterul din frm_import_efactura (modal, ca in aplicatie).
|
||||
# Porneste test_splitter_mouse.prg in mod E; VFP scrie coordN.txt, driverul misca mouse-ul (SetCursorPos + mouse_event).
|
||||
# -Desch k: formularul se deschide de k ori in aceeasi sesiune VFP (semnalele fiecarei deschideri in sync_mouse\d<i>).
|
||||
param([string]$Poz = '0', [int]$Desch = 1, [int]$Dx = 0)
|
||||
$dir = 'D:\ROA\ROACONT\COMUN\utile\Teste\efactura_import'
|
||||
$syncBaza = Join-Path $dir 'sync_mouse'
|
||||
$prg = Join-Path $dir 'test_splitter_mouse.prg'
|
||||
$log = Join-Path $dir 'test_splitter_mouse_log.txt'
|
||||
New-Item -ItemType Directory -Force $syncBaza | Out-Null
|
||||
Get-ChildItem $syncBaza -Recurse -File | Remove-Item -Force
|
||||
foreach ($f in @('test_splitter_mouse.FXP','test_splitter_mouse.ERR','test_splitter_mouse_temp.ini')) { $p = Join-Path $dir $f; if (Test-Path $p) { Remove-Item $p -Force } }
|
||||
Start-Process powershell -ArgumentList @('-ExecutionPolicy','Bypass','-File','D:\ROA\ROACONT\COMUN\utile\Teste\_precompile.ps1','-Prg',$prg) -Wait -WindowStyle Hidden
|
||||
if (Test-Path (Join-Path $dir 'test_splitter_mouse.ERR')) { Get-Content (Join-Path $dir 'test_splitter_mouse.ERR'); exit 2 }
|
||||
Add-Type @"
|
||||
using System; using System.Runtime.InteropServices;
|
||||
public class MDrv {
|
||||
[DllImport("user32.dll")] public static extern bool SetCursorPos(int x,int y);
|
||||
[DllImport("user32.dll")] public static extern void mouse_event(int f,int x,int y,int d,int e);
|
||||
[DllImport("user32.dll")] public static extern short GetAsyncKeyState(int v);
|
||||
[DllImport("user32.dll")] public static extern IntPtr WindowFromPoint(POINT p);
|
||||
[DllImport("user32.dll")] public static extern IntPtr GetAncestor(IntPtr h,int f);
|
||||
[StructLayout(LayoutKind.Sequential)] public struct POINT { public int X; public int Y; }
|
||||
}
|
||||
"@
|
||||
function Asteapta([string]$f, [int]$ms = 20000) { $t = 0; while (-not (Test-Path (Join-Path $sync $f))) { Start-Sleep -Milliseconds 100; $t += 100; if ($t -ge $ms) { return $false } }; return $true }
|
||||
function Semnal([string]$f) { Set-Content -Path (Join-Path $sync $f) -Value 'ok' }
|
||||
function Trage([int]$x, [int]$y, [int]$dy) {
|
||||
[MDrv]::SetCursorPos($x, $y) | Out-Null; [MDrv]::mouse_event(2,0,0,0,0); Start-Sleep -Milliseconds 150
|
||||
for ($i = 1; $i -le 12; $i++) { [MDrv]::SetCursorPos($x, $y + [int]($dy * $i / 12)) | Out-Null; Start-Sleep -Milliseconds 40 }
|
||||
Start-Sleep -Milliseconds 100; [MDrv]::mouse_event(4,0,0,0,0); Start-Sleep -Milliseconds 300
|
||||
}
|
||||
$p = Start-Process 'C:\Program Files (x86)\Microsoft Visual FoxPro 9\vfp9.exe' -ArgumentList @('-A','-T',"`"$prg`"",$Poz,'E',"$Desch") -WorkingDirectory 'D:\ROA\ROACONT' -PassThru
|
||||
try {
|
||||
:deschideri foreach ($d in 1..$Desch) {
|
||||
$sync = Join-Path $syncBaza "d$d"
|
||||
New-Item -ItemType Directory -Force $sync | Out-Null
|
||||
foreach ($n in 1..3) {
|
||||
if (-not (Asteapta "coord$n.txt" 90000)) { "d$d fara coord$n"; break deschideri }
|
||||
$c = (Get-Content (Join-Path $sync "coord$n.txt")).Split(','); $x = [int]$c[0] + $Dx; $y = [int]$c[1]; $root = [int64]$c[2]
|
||||
$pt = New-Object MDrv+POINT; $pt.X = $x; $pt.Y = $y
|
||||
$sub = [MDrv]::GetAncestor([MDrv]::WindowFromPoint($pt), 2).ToInt64()
|
||||
if ($sub -ne $root) { "ABANDON: sub punctul $x/$y e fereastra $sub, nu forma $root"; break deschideri }
|
||||
[MDrv]::SetCursorPos($x, $y + 200) | Out-Null; Start-Sleep -Milliseconds 500
|
||||
if ($n -eq 1) { Add-Type -AssemblyName System.Drawing; $bmp = New-Object System.Drawing.Bitmap 920, 60; $g = [System.Drawing.Graphics]::FromImage($bmp); $g.CopyFromScreen($x - 35, $y - 30, 0, 0, $bmp.Size); $bmp.Save((Join-Path $dir "splitter_repaus_Poz${Poz}_d$d.png")); $g.Dispose(); $bmp.Dispose() }
|
||||
Semnal "repaus$n.txt"; if (-not (Asteapta "repausok$n.txt")) { "d$d fara repausok$n"; break deschideri }
|
||||
if ($n -eq 3) { break }
|
||||
[MDrv]::SetCursorPos($x, $y) | Out-Null; Start-Sleep -Milliseconds 500
|
||||
Semnal "hover$n.txt"; if (-not (Asteapta "hoverok$n.txt")) { "d$d fara hoverok$n"; break deschideri }
|
||||
Trage $x $y $(if ($n -eq 1) { -60 } else { 60 })
|
||||
Semnal "done$n.txt"
|
||||
}
|
||||
}
|
||||
if (-not $p.WaitForExit(60000)) { $p.Kill(); 'TIMEOUT - proces omorat' }
|
||||
} finally {
|
||||
if ([MDrv]::GetAsyncKeyState(1) -lt 0) { [MDrv]::mouse_event(4,0,0,0,0); 'buton stang eliberat' }
|
||||
if (-not $p.HasExited) { $p.Kill(); 'proces omorat' }
|
||||
}
|
||||
Get-Content $log
|
||||
@@ -225,7 +225,7 @@ distribuie N(1), id_tip N(10) null, id_articol N(20) null, id_gestiune N(20) nul
|
||||
loFH.NewObject('splH', 'sfsplitterv_panou', 'D:\ROA\ROACONT\COMUN\clase\sfsplitter.vcx')
|
||||
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
|
||||
DO PrTest WITH 'T9 stare initiala 160,185,210 si BackStyle 1', lnCol0 = RGB(160,185,210) 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()
|
||||
|
||||
448
utile/Teste/efactura_import/test_splitter_mouse.prg
Normal file
448
utile/Teste/efactura_import/test_splitter_mouse.prg
Normal file
@@ -0,0 +1,448 @@
|
||||
* test_splitter_mouse.prg - tragere REALA cu mouse-ul (SetCursorPos/mouse_event) pe Sfsplitterv1 din frm_import_efactura
|
||||
* param tcPoz: pozitia pusa in ini-ul temporar inainte de deschidere (gol = fara cheie)
|
||||
* param tcDesch (mod E): de cate ori se deschide formularul in aceeasi sesiune (implicit 1)
|
||||
PARAMETERS tcPoz, tcMod, tcDesch
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
SET DELETED ON
|
||||
SET EXACT ON
|
||||
SET CENTURY ON
|
||||
SET DATE DMY
|
||||
SET NULLDISPLAY TO ''
|
||||
CLOSE DATABASES
|
||||
|
||||
PUBLIC gcUILog, gnPass, gnFail, gcTempIni, gnRepaus, gnDesch
|
||||
gnRepaus = RGB(160,185,210)
|
||||
gcUILog = "D:\ROA\ROACONT\COMUN\utile\Teste\efactura_import\test_splitter_mouse_log.txt"
|
||||
gcTempIni = "D:\ROA\ROACONT\COMUN\utile\Teste\efactura_import\test_splitter_mouse_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\utile\Teste\mock_amessagebox.prg' ADDITIVE
|
||||
DO "D:\ROA\ROACONT\COMUN\utile\Teste\test_init_env_auto.prg" WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT'
|
||||
IF gnHandle <= 0
|
||||
DO PrLogLocal WITH 'FAIL: conectare Oracle esuata (gnHandle=' + TRANSFORM(gnHandle) + ')'
|
||||
QUIT
|
||||
ENDIF
|
||||
SET PROCEDURE TO import_efactura.prg ADDITIVE
|
||||
SET PROCEDURE TO recunoastere_articol_ef.prg ADDITIVE
|
||||
SET PROCEDURE TO coada_contabilizare_ef.prg ADDITIVE
|
||||
gcGeneralIniFile = m.gcTempIni
|
||||
DO PrLogLocal WITH 'mediu initializat, gnHandle=' + TRANSFORM(gnHandle) + ' gcGeneralIniFile=' + m.gcGeneralIniFile
|
||||
|
||||
*-- crsFacturi/crsDetaliiFacturi si cursoarele ajutatoare cerute de Init, copie din test_pozitie_lista_ef.prg
|
||||
TEXT TO lcSchemaFacturi NOSHOW
|
||||
ales N(1), id N(20), id_fact N(20), data_act D, data_scad D, numar_act C(30), xfurnizor C(200), xclient C(200), partener C(200), id_incarcare C(36), id_descarcare c(36) null, tip_mesaj_raspuns C(50) null,mesaj_raspuns C(250) null, data_raspuns D null, trimis N(1) null, data_trimis T null, cod_fiscal C(30) null, cod_fiscal_emitent C(30) null, cod_fiscal_beneficiar C(30) null, detalii M null, total_fara_tva N(16,4), total_tva N(16,4), total_tva_ron N(16,4), total_cu_tva N(16,4), discount_fara_tva N(16,4), taxe_fara_tva N(16,4), valoare_fara_tva N(16,4), total_de_plata N(16,4), nume_valuta C(5), test N(1) null, jtotctva N(16,4) null, descriere M null, detalii_plata M null, diferenta N(16,4) null, procesat N(1), SerieActRoa V(10) Null, NrActRoa N(14) Null, IdPartRoa N(10) Null, PartenerRoa V(100) null, codFiscalROA V(20), idValutaROA N(5) null,numeValutaROA V(5) null, cursROA N(16,6) null,Cont c(4) Null,ACont c(4) Null,TVAIncasare N(1),Fdoc V(20) null,Id_Fdoc N(5) Null,Nrord V(100) null,Id_Lucrare I Null,Contract V(100) Null,Id_Ctr I Null,Sectie V(100) null,Id_Sectie I Null,dst_chlt V(100) null, Id_venchelt I NUll, nresp V(100) null, Id_responsabil I NUll , completat N(1), completatdet N(1), creditnote N(1), explicatiaROA V(100) null, explicatia4ROA V(100) null, explicatia5ROA V(100) null, eligibil_lot N(1), motiv_lot V(120), eroare_lot N(1), de_completat V(80), gest c(1), part_inactiv N(1)
|
||||
ENDTEXT
|
||||
|
||||
IF USED('crsFacturi')
|
||||
USE IN crsFacturi
|
||||
ENDIF
|
||||
CREATE CURSOR crsFacturi (&lcSchemaFacturi)
|
||||
INSERT INTO crsFacturi (ales, id, id_fact, data_act, numar_act, xfurnizor, partener, cod_fiscal, ;
|
||||
total_cu_tva, nume_valuta, procesat, completat, completatdet, creditnote, detalii, ;
|
||||
eligibil_lot, motiv_lot, eroare_lot, de_completat, gest) ;
|
||||
VALUES (0, 1, 0, DATE(), 'TEST-SPL-1', 'FIXTURA SPLITTER 1', 'FIXTURA SPLITTER 1', 'RO99970001', ;
|
||||
100, 'RON', 0, 0, 0, 0, 'x', 1, '', 0, '1 cont', '')
|
||||
|
||||
TEXT TO lcSchemaDetalii NOSHOW
|
||||
distribuie N(1), id_tip N(10) null, id_articol N(20) null, id_gestiune N(20) null, cont C(4) null, acont C(4) null, sursa_cont V(10) null, id N(20), id_efactura N(20), nr N(5), articol V(250), descriere V(250), detalii M, cantitate N(18,6), um V(20), um_iso V(50), um_roa V(50), pret N(20,6), proctva N(7,2), tiptva V(2), valoarefaratva N(20,6), discountfaratva N(20,6), in_stoc N(1), articol_roa V(250), codmat_roa V(50), codbare V(50), codclient V(100), codfurnizor V(100), codcpv V(50), codnc8 V(50), nume_gestiune V(50), cgest V(20), tva N(20,6), pretv N(20,6), tvav N(20,6), pretvtva N(20,6), explicatia V(100), explicatia4 V(100), explicatia5 V(100)
|
||||
ENDTEXT
|
||||
IF USED('crsDetaliiFacturi')
|
||||
USE IN crsDetaliiFacturi
|
||||
ENDIF
|
||||
CREATE CURSOR crsDetaliiFacturi (&lcSchemaDetalii)
|
||||
* rand mut pe id_efactura=1, ca actualizeaza_grid2 sa gaseasca detaliile deja in cursor (fara poFacturiDetalii/Oracle)
|
||||
INSERT INTO crsDetaliiFacturi (id, id_efactura, nr, articol) VALUES (100, 1, 1, 'FIXTURA')
|
||||
|
||||
CREATE CURSOR cTipArticoleP (id I, in_stoc N(1), tip V(50), cont V(4), ordine I)
|
||||
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (0, 'Nedefinit','', 0, 0)
|
||||
SELECT cTipArticoleP
|
||||
GO TOP IN cTipArticoleP
|
||||
INDEX ON ordine TAG ordine
|
||||
|
||||
CREATE CURSOR cTipArticoleE (id I, in_stoc N(1), tip V(50), cont V(4), ordine I)
|
||||
INSERT INTO cTipArticoleE (id, tip, cont, in_stoc, ordine) VALUES (0, 'Nedefinit','', 0, 0)
|
||||
SELECT cTipArticoleE
|
||||
GO TOP IN cTipArticoleE
|
||||
INDEX ON ordine TAG ordine
|
||||
|
||||
SELECT id, tip, cont, in_stoc, ordine FROM cTipArticoleP ORDER BY ordine INTO CURSOR cTip
|
||||
SELECT cTip
|
||||
INDEX ON id TAG id
|
||||
|
||||
goExecutor.oExecuta([select distinct nume_gestiune,cgest,id_gestiune,nr_pag,cont from vgest_gestiuni_util where inactiv = 0 and id_util = ] + ALLTRIM(STR(m.gnIdUtil)), 'cGestiuni')
|
||||
SELECT cGestiuni
|
||||
APPEND BLANK
|
||||
INDEX ON id_gestiune TAG id_gest
|
||||
SELECT CAST(ALLTRIM(nume_gestiune) + '-' + ALLTRIM(NVL(cgest, '')) AS V(50)) AS nume_gestiune, id_gestiune FROM cGestiuni ORDER BY nume_gestiune INTO CURSOR cGestiuni2
|
||||
|
||||
goExecutor.oExecuta("select cod_um_iso, um_iso from syn_vnom_um_iso", 'cUMISO')
|
||||
SELECT cUMISO
|
||||
INDEX ON cod_um_iso TAG cod_um_iso
|
||||
|
||||
goExecutor.oExecuta("select id, um, cod_um_iso, um_iso from vnom_um", 'cUM')
|
||||
SELECT cUM
|
||||
INDEX ON id TAG id
|
||||
|
||||
IF VARTYPE(m.tcPoz) = "C" AND !EMPTY(m.tcPoz) AND m.tcPoz # "-" AND m.tcPoz # "0"
|
||||
setini(m.gcTempIni, 'efactura', 'import_splitter_top', m.tcPoz)
|
||||
DO PrLogLocal WITH 'ini temporar: import_splitter_top=' + m.tcPoz
|
||||
ENDIF
|
||||
DECLARE INTEGER SetCursorPos IN user32 INTEGER, INTEGER
|
||||
DECLARE mouse_event IN user32 INTEGER, INTEGER, INTEGER, INTEGER, INTEGER
|
||||
DECLARE INTEGER ClientToScreen IN user32 INTEGER, STRING @
|
||||
DECLARE INTEGER WindowFromPoint IN user32 INTEGER, INTEGER
|
||||
DECLARE INTEGER GetAncestor IN user32 INTEGER, INTEGER
|
||||
DECLARE INTEGER GetDC IN user32 INTEGER
|
||||
DECLARE INTEGER ReleaseDC IN user32 INTEGER, INTEGER
|
||||
DECLARE INTEGER GetPixel IN gdi32 INTEGER, INTEGER, INTEGER
|
||||
DECLARE INTEGER SetWindowPos IN user32 INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER
|
||||
DECLARE INTEGER SetForegroundWindow IN user32 INTEGER
|
||||
DECLARE Sleep IN kernel32 INTEGER
|
||||
DECLARE INTEGER GetSystemMetrics IN user32 INTEGER
|
||||
DECLARE INTEGER GetCursorPos IN user32 STRING @
|
||||
DECLARE INTEGER GetForegroundWindow IN user32
|
||||
|
||||
PUBLIC goSpy, goFrmT
|
||||
LOCAL loForm, loS, lnX, lnY, lnTop0, lnTop1, lnI, lnStep, lcPt, lnPix, lnRoot, lnGrdH0, lnY0
|
||||
_SCREEN.Visible = .T.
|
||||
_SCREEN.WindowState = 2
|
||||
SetWindowPos(_SCREEN.HWnd, -1, 0, 0, 0, 0, 3)
|
||||
SetForegroundWindow(_SCREEN.HWnd)
|
||||
PUBLIC gcSyncDir
|
||||
LOCAL lnNrDesch
|
||||
lnNrDesch = IIF(VARTYPE(m.tcDesch) = "C" AND VAL(m.tcDesch) > 1, VAL(m.tcDesch), 1)
|
||||
FOR gnDesch = 1 TO m.lnNrDesch
|
||||
DO PrLogLocal WITH '=== deschiderea ' + TRANSFORM(gnDesch) + ' ini: import_splitter_top=' + TRANSFORM(getini(m.gcTempIni, 'efactura', 'import_splitter_top'))
|
||||
SELECT crsFacturi
|
||||
GO TOP
|
||||
loForm = CREATEOBJECT('frm_import_efactura', .T.)
|
||||
goFrmT = loForm
|
||||
IF VARTYPE(m.tcMod) # "C" OR m.tcMod # "M"
|
||||
loForm.WindowType = 0
|
||||
ENDIF
|
||||
loS = loForm.Sfsplitterv1
|
||||
DO PrLogLocal WITH 'ClassLibrary=' + loS.ClassLibrary + ' Class=' + loS.Class
|
||||
DO PrLogLocal WITH 'dupa Init: BackColor=' + RgbTxt(loS.BackColor) + ' BackStyle=' + TRANSFORM(loS.BackStyle) + ' Enabled=' + TRANSFORM(loS.Enabled) + ' Visible=' + TRANSFORM(loS.Visible) + ' H=' + TRANSFORM(loS.Height)
|
||||
goSpy = CREATEOBJECT('spionMouse')
|
||||
BINDEVENT(loS, 'MouseDown', goSpy, 'splDown')
|
||||
BINDEVENT(loS, 'MouseMove', goSpy, 'splMove')
|
||||
BINDEVENT(loS, 'MouseUp', goSpy, 'splUp')
|
||||
DO PrLogLocal WITH 'ControlCount=' + TRANSFORM(loS.ControlCount) + ' PEM gripper=' + TRANSFORM(PEMSTATUS(loS, 'gripper', 5))
|
||||
BINDEVENT(loForm, 'MouseDown', goSpy, 'frmDown')
|
||||
BINDEVENT(loForm, 'MouseMove', goSpy, 'frmMove')
|
||||
BINDEVENT(loForm.grdFacturi, 'MouseDown', goSpy, 'grdDown')
|
||||
PUBLIC gnTopFinal, goTmr
|
||||
gnTopFinal = -1
|
||||
IF VARTYPE(m.tcMod) = "C" AND m.tcMod = "E"
|
||||
gcSyncDir = "D:\ROA\ROACONT\COMUN\utile\Teste\efactura_import\sync_mouse\d" + TRANSFORM(gnDesch) + "\"
|
||||
IF !DIRECTORY(m.gcSyncDir)
|
||||
MD (m.gcSyncDir)
|
||||
ENDIF
|
||||
goTmr = CREATEOBJECT("tmrExtern")
|
||||
goTmr.Enabled = .T.
|
||||
loS = .NULL.
|
||||
loForm.Show(1)
|
||||
ELSE
|
||||
IF VARTYPE(m.tcMod) = "C" AND m.tcMod = "M"
|
||||
goTmr = CREATEOBJECT("tmrSecventa")
|
||||
goTmr.Enabled = .T.
|
||||
loS = .NULL.
|
||||
loForm.Show(1)
|
||||
ELSE
|
||||
loForm.Show()
|
||||
DO SecventaMouse
|
||||
loS = .NULL.
|
||||
goFrmT = .NULL.
|
||||
loForm.Release()
|
||||
ENDIF
|
||||
ENDIF
|
||||
lnTop1 = gnTopFinal
|
||||
goFrmT = .NULL.
|
||||
loForm = .NULL.
|
||||
goTmr = .NULL.
|
||||
DO PrLogLocal WITH 'ini dupa inchidere: import_splitter_top=' + TRANSFORM(getini(m.gcTempIni, 'efactura', 'import_splitter_top')) + ' (Top la inchidere=' + TRANSFORM(lnTop1) + ')'
|
||||
ENDFOR
|
||||
CATCH TO loEx
|
||||
DO PrLogLocal WITH 'EXCEPTIE ' + TRANSFORM(loEx.ErrorNo) + ' ' + loEx.Message + ' linia ' + TRANSFORM(loEx.LineNo) + ' ' + TRANSFORM(loEx.LineContents)
|
||||
ENDTRY
|
||||
DO PrLogLocal WITH 'PASS=' + TRANSFORM(gnPass) + ' FAIL=' + TRANSFORM(gnFail)
|
||||
DO PrLogLocal WITH 'END'
|
||||
ON SHUTDOWN
|
||||
QUIT
|
||||
|
||||
PROCEDURE SecventaMouse
|
||||
LOCAL loForm, loS, lnX, lnY, lnTop0, lnTop1, lnI, lnStep, lcPt, lnPix, lnRoot, lnGrdH0, lnY0
|
||||
loForm = goFrmT
|
||||
loS = loForm.Sfsplitterv1
|
||||
DO PrLogLocal WITH 'WindowState=' + TRANSFORM(loForm.WindowState) + ' WindowType=' + TRANSFORM(loForm.WindowType) + ' lRestaurat=' + TRANSFORM(loS.lRestaurat)
|
||||
Pump(25)
|
||||
DO PrLogLocal WITH 'dupa Show: BackColor=' + RgbTxt(loS.BackColor) + ' BackStyle=' + TRANSFORM(loS.BackStyle) + ' Top=' + TRANSFORM(loS.Top) + ' grdF.H=' + TRANSFORM(loForm.grdFacturi.Height)
|
||||
lcPt = BINTOC(loS.Left + 30, '4RS') + BINTOC(loS.Top + 2, '4RS')
|
||||
ClientToScreen(loForm.HWnd, @lcPt)
|
||||
lnX = CTOBIN(LEFT(lcPt, 4), '4RS')
|
||||
lnY = CTOBIN(SUBSTR(lcPt, 5, 4), '4RS')
|
||||
lnY0 = lnY
|
||||
lnRoot = GetAncestor(WindowFromPoint(lnX, lnY), 2)
|
||||
DO PrLogLocal WITH 'ecran X/Y=' + TRANSFORM(lnX) + '/' + TRANSFORM(lnY) + ' root sub punct=' + TRANSFORM(lnRoot) + ' _screen=' + TRANSFORM(_SCREEN.HWnd) + ' form=' + TRANSFORM(loForm.HWnd) + ' rootform=' + TRANSFORM(GetAncestor(loForm.HWnd, 2))
|
||||
IF lnRoot # _SCREEN.HWnd AND lnRoot # GetAncestor(loForm.HWnd, 2)
|
||||
DO PrTest WITH 'fereastra VFP sub punctul de tragere', .F., 'abandon, nu trimit click pe alta fereastra'
|
||||
ELSE
|
||||
SetCursorPos(lnX, lnY + 150)
|
||||
Pump(10)
|
||||
lnPix = PixelEcran(lnX, lnY)
|
||||
DO PrLogLocal WITH 'repaus: pixel ecran=' + RgbTxt(lnPix) + ' BackColor=' + RgbTxt(loS.BackColor) + ' BackStyle=' + TRANSFORM(loS.BackStyle) + ' lHover=' + TRANSFORM(loS.lHover)
|
||||
DO PrTest WITH 'repaus: pixel = 160,185,210', lnPix = gnRepaus, RgbTxt(lnPix)
|
||||
lnI = SetCursorPos(lnX, lnY)
|
||||
lcPt = REPLICATE(CHR(0), 8)
|
||||
GetCursorPos(@lcPt)
|
||||
DO PrLogLocal WITH 'SetCursorPos=' + TRANSFORM(lnI) + ' imediat=' + TRANSFORM(CTOBIN(LEFT(lcPt, 4), '4RS')) + '/' + TRANSFORM(CTOBIN(SUBSTR(lcPt, 5, 4), '4RS'))
|
||||
Pump(10)
|
||||
lcPt = REPLICATE(CHR(0), 8)
|
||||
GetCursorPos(@lcPt)
|
||||
DO PrLogLocal WITH 'cursor real=' + TRANSFORM(CTOBIN(LEFT(lcPt, 4), '4RS')) + '/' + TRANSFORM(CTOBIN(SUBSTR(lcPt, 5, 4), '4RS')) + ' foreground=' + TRANSFORM(GetForegroundWindow())
|
||||
lnPix = PixelEcran(lnX, lnY - 1)
|
||||
DO PrLogLocal WITH 'hover: pixel ecran=' + RgbTxt(lnPix) + ' BackColor=' + RgbTxt(loS.BackColor) + ' lHover=' + TRANSFORM(loS.lHover)
|
||||
DO PrTest WITH 'hover: BackColor = 0,120,215', loS.BackColor = RGB(0,120,215), RgbTxt(loS.BackColor)
|
||||
lnTop0 = loS.Top
|
||||
lnGrdH0 = loForm.grdFacturi.Height
|
||||
SetCursorPos(lnX, lnY)
|
||||
mouse_event(2, 0, 0, 0, 0)
|
||||
Pump(5)
|
||||
FOR lnStep = 1 TO 12
|
||||
SetCursorPos(lnX, lnY - 5 * lnStep)
|
||||
Pump(3)
|
||||
ENDFOR
|
||||
SetCursorPos(lnX, lnY - 60)
|
||||
mouse_event(4, 0, 0, 0, 0)
|
||||
Pump(10)
|
||||
lnTop1 = loS.Top
|
||||
DO PrLogLocal WITH 'tragere sus 60: Top ' + TRANSFORM(lnTop0) + ' -> ' + TRANSFORM(lnTop1) + ' grdF.H ' + TRANSFORM(lnGrdH0) + ' -> ' + TRANSFORM(loForm.grdFacturi.Height) + ' | ' + goSpy.cRez
|
||||
DO PrTest WITH 'tragere sus 60 muta splitterul (+-5, pozitia = cursorul)', lnTop1 = lnTop0 - 60, 'Top ' + TRANSFORM(lnTop0) + '->' + TRANSFORM(lnTop1)
|
||||
DO PrTest WITH 'tragere sus: grila urmeaza splitterul', loForm.grdFacturi.Height = lnGrdH0 - 60, 'grdF.H ' + TRANSFORM(lnGrdH0) + '->' + TRANSFORM(loForm.grdFacturi.Height)
|
||||
goSpy.cRez = ''
|
||||
lcPt = BINTOC(loS.Left + 30, '4RS') + BINTOC(loS.Top + 2, '4RS')
|
||||
ClientToScreen(loForm.HWnd, @lcPt)
|
||||
lnY = CTOBIN(SUBSTR(lcPt, 5, 4), '4RS')
|
||||
SetCursorPos(lnX, lnY)
|
||||
Pump(5)
|
||||
lnTop0 = loS.Top
|
||||
SetCursorPos(lnX, lnY)
|
||||
mouse_event(2, 0, 0, 0, 0)
|
||||
Pump(5)
|
||||
FOR lnStep = 1 TO 12
|
||||
SetCursorPos(lnX, lnY + 5 * lnStep)
|
||||
Pump(3)
|
||||
ENDFOR
|
||||
SetCursorPos(lnX, lnY + 60)
|
||||
mouse_event(4, 0, 0, 0, 0)
|
||||
Pump(10)
|
||||
DO PrLogLocal WITH 'tragere jos 60: Top ' + TRANSFORM(lnTop0) + ' -> ' + TRANSFORM(loS.Top) + ' | ' + goSpy.cRez
|
||||
DO PrTest WITH 'tragere jos 60 muta splitterul (+-5, pozitia = cursorul)', loS.Top = lnTop0 + 60, 'Top ' + TRANSFORM(lnTop0) + '->' + TRANSFORM(loS.Top)
|
||||
SetCursorPos(lnX, lnY + 250)
|
||||
Pump(10)
|
||||
lnPix = PixelEcran(lnX, lnY + 60)
|
||||
DO PrLogLocal WITH 'repaus dupa tragere: pixel=' + RgbTxt(lnPix) + ' BackColor=' + RgbTxt(loS.BackColor) + ' lHover=' + TRANSFORM(loS.lHover)
|
||||
DO PrTest WITH 'repaus dupa tragere: BackColor = 160,185,210', loS.BackColor = gnRepaus, RgbTxt(loS.BackColor)
|
||||
ENDIF
|
||||
gnTopFinal = loS.Top
|
||||
ENDPROC
|
||||
|
||||
DEFINE CLASS tmrSecventa AS Timer
|
||||
Interval = 1500
|
||||
Enabled = .F.
|
||||
PROCEDURE Timer
|
||||
This.Enabled = .F.
|
||||
DO SecventaMouse
|
||||
goFrmT.Release()
|
||||
ENDPROC
|
||||
ENDDEFINE
|
||||
|
||||
**********************************************************
|
||||
PROCEDURE Pump
|
||||
LPARAMETERS tnN
|
||||
LOCAL lnK
|
||||
FOR lnK = 1 TO tnN
|
||||
DOEVENTS FORCE
|
||||
Sleep(20)
|
||||
ENDFOR
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE PixelEcran
|
||||
LPARAMETERS tnX, tnY
|
||||
LOCAL lnDC, lnP
|
||||
lnDC = GetDC(0)
|
||||
lnP = GetPixel(lnDC, tnX, tnY)
|
||||
ReleaseDC(0, lnDC)
|
||||
RETURN lnP
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE RgbTxt
|
||||
LPARAMETERS tnC
|
||||
RETURN TRANSFORM(BITAND(tnC, 255)) + ',' + TRANSFORM(BITAND(BITRSHIFT(tnC, 8), 255)) + ',' + TRANSFORM(BITAND(BITRSHIFT(tnC, 16), 255))
|
||||
ENDPROC
|
||||
|
||||
DEFINE CLASS spionMouse AS Custom
|
||||
cRez = ''
|
||||
PROCEDURE Adauga
|
||||
LPARAMETERS tcS
|
||||
IF LEN(This.cRez) < 1500
|
||||
This.cRez = This.cRez + tcS + '; '
|
||||
ENDIF
|
||||
ENDPROC
|
||||
PROCEDURE splDown
|
||||
LPARAMETERS nB, nS, nX, nY
|
||||
This.Adauga('splDown b=' + TRANSFORM(nB) + ' y=' + TRANSFORM(nY))
|
||||
ENDPROC
|
||||
PROCEDURE splMove
|
||||
LPARAMETERS nB, nS, nX, nY
|
||||
IF nB # 0
|
||||
This.Adauga('splMove b=' + TRANSFORM(nB) + ' y=' + TRANSFORM(nY) + ' top=' + TRANSFORM(goFrmT.Sfsplitterv1.Top))
|
||||
ENDIF
|
||||
ENDPROC
|
||||
PROCEDURE splUp
|
||||
LPARAMETERS nB, nS, nX, nY
|
||||
This.Adauga('splUp y=' + TRANSFORM(nY))
|
||||
ENDPROC
|
||||
PROCEDURE gripDown
|
||||
LPARAMETERS nB, nS, nX, nY
|
||||
This.Adauga('gripDown')
|
||||
ENDPROC
|
||||
PROCEDURE frmDown
|
||||
LPARAMETERS nB, nS, nX, nY
|
||||
This.Adauga('frmDown y=' + TRANSFORM(nY))
|
||||
ENDPROC
|
||||
PROCEDURE frmMove
|
||||
LPARAMETERS nB, nS, nX, nY
|
||||
IF nB = 1
|
||||
This.Adauga('frmMove b=1 y=' + TRANSFORM(nY))
|
||||
ENDIF
|
||||
ENDPROC
|
||||
PROCEDURE grdDown
|
||||
LPARAMETERS nB, nS, nX, nY
|
||||
This.Adauga('grdDown y=' + TRANSFORM(nY))
|
||||
ENDPROC
|
||||
ENDDEFINE
|
||||
**********************************************************
|
||||
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
|
||||
|
||||
**********************************************************
|
||||
* mock_amessagebox.prg cere HarnessLog (definit normal in ui_harness.prg, neincarcat aici)
|
||||
PROCEDURE HarnessLog
|
||||
LPARAMETERS tcMsg
|
||||
DO PrLogLocal WITH tcMsg
|
||||
ENDPROC
|
||||
|
||||
**********************************************************
|
||||
PROCEDURE PrErrLocal
|
||||
LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo
|
||||
DO PrLogLocal WITH 'EROARE ' + TRANSFORM(tnError) + ' ' + TRANSFORM(tcMessage) + ' in ' + TRANSFORM(tcProgram) + ' linia ' + TRANSFORM(tnLineNo)
|
||||
ENDPROC
|
||||
**********************************************************
|
||||
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 MouseReal
|
||||
LPARAMETERS tnFlags, tnX, tnY
|
||||
* eveniment mouse real, cu pozitia absoluta in eveniment (nu depinde de cursorul curent)
|
||||
mouse_event(tnFlags, INT(tnX * 65535 / (GetSystemMetrics(0) - 1)), INT(tnY * 65535 / (GetSystemMetrics(1) - 1)), 0, 0)
|
||||
ENDPROC
|
||||
|
||||
**********************************************************
|
||||
* mod E: forma modala Show(1) ca in import_efactura.prg; mouse-ul real il trimite driverul PowerShell
|
||||
* (drv_splitter_mouse.ps1). Schimb de semnale prin fisiere in gcSyncDir: coordN.txt (VFP->PS), doneN.txt (PS->VFP).
|
||||
DEFINE CLASS tmrExtern AS Timer
|
||||
Interval = 300
|
||||
Enabled = .F.
|
||||
nPas = 0
|
||||
nTop0 = 0
|
||||
nGrdH0 = 0
|
||||
nTic = 0
|
||||
PROCEDURE Timer
|
||||
LOCAL loF, loS, lcPt, lnX, lnY, lnPix
|
||||
This.nTic = This.nTic + 1
|
||||
loF = goFrmT
|
||||
loS = loF.Sfsplitterv1
|
||||
DO CASE
|
||||
CASE This.nPas = 0 AND This.nTic >= 5
|
||||
DO PrLogLocal WITH 'Enabled=' + TRANSFORM(loS.Enabled) + ' Tag=' + TRANSFORM(loS.Tag) + ' HWnd=' + TRANSFORM(loF.HWnd) + ' lHover=' + TRANSFORM(loS.lHover)
|
||||
DO PrLogLocal WITH 'WindowState=' + TRANSFORM(loF.WindowState) + ' lRestaurat=' + TRANSFORM(loS.lRestaurat) + ' Top=' + TRANSFORM(loS.Top) + ' grdF.H=' + TRANSFORM(loF.grdFacturi.Height) + ' det.Top/H=' + TRANSFORM(loF.grdDetaliiFacturi.Top) + '/' + TRANSFORM(loF.grdDetaliiFacturi.Height) + ' SM=' + TRANSFORM(GetSystemMetrics(0)) + 'x' + TRANSFORM(GetSystemMetrics(1))
|
||||
This.ScrieCoord(1)
|
||||
This.nPas = 1
|
||||
CASE INLIST(This.nPas, 1, 2, 3) AND FILE(gcSyncDir + 'repaus' + TRANSFORM(This.nPas) + '.txt')
|
||||
* PS a mutat cursorul departe: culoarea de repaus
|
||||
DELETE FILE (gcSyncDir + 'repaus' + TRANSFORM(This.nPas) + '.txt')
|
||||
lnPix = PixelEcran(This.Tag_X(), This.Tag_Y())
|
||||
DO PrLogLocal WITH 'repaus' + TRANSFORM(This.nPas) + ': pixel=' + RgbTxt(lnPix) + ' BackColor=' + RgbTxt(loS.BackColor) + ' BackStyle=' + TRANSFORM(loS.BackStyle) + ' lHover=' + TRANSFORM(loS.lHover)
|
||||
DO PrTest WITH 'repaus' + TRANSFORM(This.nPas) + ': pixel pe banda = 160,185,210', lnPix = gnRepaus, RgbTxt(lnPix)
|
||||
STRTOFILE('ok', gcSyncDir + 'repausok' + TRANSFORM(This.nPas) + '.txt')
|
||||
CASE INLIST(This.nPas, 1, 2) AND FILE(gcSyncDir + 'hover' + TRANSFORM(This.nPas) + '.txt')
|
||||
DELETE FILE (gcSyncDir + 'hover' + TRANSFORM(This.nPas) + '.txt')
|
||||
DO PrLogLocal WITH 'hover' + TRANSFORM(This.nPas) + ': pixel=' + RgbTxt(PixelEcran(This.Tag_X(), This.Tag_Y())) + ' BackColor=' + RgbTxt(loS.BackColor) + ' lHover=' + TRANSFORM(loS.lHover)
|
||||
IF This.nPas = 1
|
||||
DO PrTest WITH 'hover: BackColor = 0,120,215', loS.BackColor = RGB(0,120,215), RgbTxt(loS.BackColor)
|
||||
ENDIF
|
||||
This.nTop0 = loS.Top
|
||||
This.nGrdH0 = loF.grdFacturi.Height
|
||||
goSpy.cRez = ''
|
||||
STRTOFILE('ok', gcSyncDir + 'hoverok' + TRANSFORM(This.nPas) + '.txt')
|
||||
CASE This.nPas = 1 AND FILE(gcSyncDir + 'done1.txt')
|
||||
DO PrLogLocal WITH 'tragere sus 60: Top ' + TRANSFORM(This.nTop0) + ' -> ' + TRANSFORM(loS.Top) + ' grdF.H ' + TRANSFORM(This.nGrdH0) + ' -> ' + TRANSFORM(loF.grdFacturi.Height) + ' | ' + goSpy.cRez
|
||||
DO PrTest WITH 'tragere sus 60 muta splitterul (+-5, pozitia = cursorul)', ABS(loS.Top - (This.nTop0 - 60)) <= 5, 'Top ' + TRANSFORM(This.nTop0) + '->' + TRANSFORM(loS.Top)
|
||||
DO PrTest WITH 'tragere sus: grila urmeaza splitterul', loF.grdFacturi.Height - This.nGrdH0 = loS.Top - This.nTop0, 'grdF.H ' + TRANSFORM(This.nGrdH0) + '->' + TRANSFORM(loF.grdFacturi.Height)
|
||||
This.ScrieCoord(2)
|
||||
This.nPas = 2
|
||||
CASE This.nPas = 2 AND FILE(gcSyncDir + 'done2.txt')
|
||||
DO PrLogLocal WITH 'tragere jos 60: Top ' + TRANSFORM(This.nTop0) + ' -> ' + TRANSFORM(loS.Top) + ' | ' + goSpy.cRez
|
||||
DO PrTest WITH 'tragere jos 60 muta splitterul (+-5, pozitia = cursorul)', ABS(loS.Top - (This.nTop0 + 60)) <= 5, 'Top ' + TRANSFORM(This.nTop0) + '->' + TRANSFORM(loS.Top)
|
||||
This.ScrieCoord(3)
|
||||
This.nPas = 3
|
||||
CASE This.nPas = 3 AND FILE(gcSyncDir + 'repausok3.txt')
|
||||
gnTopFinal = loS.Top
|
||||
This.Enabled = .F.
|
||||
loS = .NULL.
|
||||
loF = .NULL.
|
||||
goFrmT.Release()
|
||||
ENDCASE
|
||||
ENDPROC
|
||||
PROCEDURE ScrieCoord
|
||||
LPARAMETERS tnN
|
||||
LOCAL lcPt, loS
|
||||
loS = goFrmT.Sfsplitterv1
|
||||
lcPt = BINTOC(loS.Left + 30, '4RS') + BINTOC(loS.Top + 2, '4RS')
|
||||
ClientToScreen(goFrmT.HWnd, @lcPt)
|
||||
This.Tag = TRANSFORM(CTOBIN(LEFT(lcPt, 4), '4RS')) + ',' + TRANSFORM(CTOBIN(SUBSTR(lcPt, 5, 4), '4RS'))
|
||||
DO PrLogLocal WITH 'coord' + TRANSFORM(tnN) + '=' + This.Tag + ' root sub punct=' + TRANSFORM(GetAncestor(WindowFromPoint(VAL(GETWORDNUM(This.Tag, 1, ',')), VAL(GETWORDNUM(This.Tag, 2, ','))), 2)) + ' rootform=' + TRANSFORM(GetAncestor(goFrmT.HWnd, 2))
|
||||
STRTOFILE(This.Tag + ',' + TRANSFORM(GetAncestor(goFrmT.HWnd, 2)), gcSyncDir + 'coord' + TRANSFORM(tnN) + '.txt')
|
||||
ENDPROC
|
||||
PROCEDURE Tag_X
|
||||
RETURN VAL(GETWORDNUM(This.Tag, 1, ','))
|
||||
ENDPROC
|
||||
PROCEDURE Tag_Y
|
||||
RETURN VAL(GETWORDNUM(This.Tag, 2, ','))
|
||||
ENDPROC
|
||||
ENDDEFINE
|
||||
Reference in New Issue
Block a user