PDM.fll library

Tato knihovna obsahuje několik funkcí které využívá PDM. Defince potřebných je v souboru pdm.prg.

GetDirEx Function
Tato funkce vyvolá dialog pro výběr složky.
GetDirEx(
loDirObjectObjekt s informacema pro zobrazení dialogu
)
Returns
Vrací
.T.
 pokud uživatel potvrdil výběr složky a
.F.
 pokud byl výběr zrušen.
Parameters
loDir
[In/Out] Objekt, instance třídy _GetDirEx, s vlastnostmi ovliňující vzhled dialogu .
Example
Example 1
LOCAL loDir,lcDir
loDir=CREATEOBJECT("_GetDirEx")
loDir.DefaultDir="c:\" && Default folder
loDir.btnOK="Select" && New caption of button "OK"
IF GetDirEx(loDir)
   This.Parent.txtDefaultPath.Value = loDir.OutPutDir && Get selected folder
ENDIF

ResolveTAG2 Function
Načte informace o tiskárně z řětězce získaného z položky TAG2 a zapíše je do vlastností objektu jenž je instancí třídy _DeviceMode
ResolveTAG2(
lcTag2StringBinární informace API struktury DEVMODE
@loDMObjectObjekt pro uložení informací
)
Returns
Return always
.T.
.
Parameters
lcTag2
[In] Binární informace o nastavení tiskárny uložené v položce TAG2 sestav a štíků.
loDM
[Out] Objekt, instance třídy _DeviceMode.
Example
Example 1
LOCAL loo,lcPom
lcPom=TAG2
loo=CREATEOBJECT("_DeviceMode")
=ResolveTAG2(lcPom,loo) && Read structure from string

?loo.dmDeviceName
?loo.dmSpecVersion
?loo.dmDriverVersion
?loo.dmSize
?loo.dmDriverExtra
?loo.dmFields

SetPOrient Function
Nastaví orientaci papíru na tiskárně a vrátí původní stav.
Poznámkatato fukce nemusí nastavit požadovanou orientaci papíru, pokud nemáte administrátorá práva.
SetPOrient(
lcPrinterNameStringNázev tiskárny
liDMOrientationNumberOrientace papíru
)
Returns
Vrací původní hodnotu členu dmOrientation.
Parameters
lcPrinterName
[In] Název tiskárny u níž se má změnit orientace papíru.
liDMOrientation
[In] Orientace papíru, 1 - navýšku, 2 - našířku .
Example
Example 1
LOCAL liOldPO
liOldPO=SetPOrient(SET("PRINTER",2),2) && Set New Paper Orientation -> icrement for API
* Print
=SetPOrient(SET("PRINTER",2),liOldPO) && Set old Paper Orientation

GetPStatus Function
Vrátí chybový status tiskárny a probíhajícího jobu.
GetPStatus(
lcPrinterNameStringNázev tiskárny
@liPStatusNumberStatus tiskárny
@liJStatusNumberStatus jobu
)
Returns
Vrací hodnoty v intervalu {0,2}.
0
Nebyl zjištěn jakýkoliv aktivní status.
1
Byl zjištěn status tiskárny nebo jobu.
-1, -2
Nějaká interní chyba při volání API funkcí (mrkněte se do zdrojáků jaká).
Parameters
lcPrinterName
[In] Název tiskárny u níž se má změnit orientace papíru.
liPStatus
[Out] Status tiskárny (kód)
liJStatus
[Out] Status probíhajícího jobu (kód)
Example
Example 1
LOCAL lcPName,liPStatus,liJStatus,liErr
lcPName=SET("PRINTER",2)
STORE 0 TO liPStatus,liJStatus
liErr=GetPStatus(lcPName,@liPStatus,@liJStatus)
IF liErr=1
   ?liPStatus
   ?liJStatus
ENDIF

ShellExecuteExEx Function
Vyvolání hostitelské aplikace pro daný soubor. Interně se volá funkce ShellExecuteEx() Shellu.
ShellExecuteExEx(
loSEObjectObjekt s informacema pro otevření souboru
)
Returns
Vrací hodnotu z API funkce ShelExecuteEx.
Parameters
loSE
[In/Out] Instance třídy _ShellExecuteEx jenž odpovídá API struktuře SHELLEXECUTEINFO.
Example
Example 1
LOCAL lcFile,liWFS,lcPom,loSE
lcFile="c:\temp\test.txt"
DECLARE INTEGER WaitForSingleObject IN kernel32.DLL INTEGER hHandle, INTEGER dwMilliseconds
DECLARE INTEGER CloseHandle IN kernel32.DLL INTEGER hObject

* Return code from WaitForSingleObject() if it timed out.
#DEFINE WAIT_TIMEOUT 0x00000102


loSE=CREATEOBJECT("_ShellExecuteEx")
loSE.fMask=SEE_MASK_NOCLOSEPROCESS
loSE.nShow=1
loSE.Verb="open"
loSE.File='"'+lcFile+'"'

IF ShellExecuteExEx(loSEI) && Open txt file
   liWFS=WAIT_TIMEOUT
   DO WHILE liWFS= WAIT_TIMEOUT && Wait to proccess is running
      liWFS=WaitForSingleObject(loSE.hProcess, 250 )
   ENDDO
   =CloseHandle(loSE.hProcess) && Close handle
ENDIF

GetFileEx Function
Zavolá dialog Windows pro výběr souboru nebo seznamu souborů. Interně se volá funkce GetOpenFileName() Shellu.
GetFileEx(
loGFObjectObjekt s informacema pro zobrazení dialogu
)
Returns
Vrací
.T.
 pokud uživatel potvrdil výběr souboru a
.F.
 pokud byl výběr zrušen.
Parameters
loGF
[In/Out] Instance třídy _GetFileEx jenž odpovídá API struktuře OPENFILENAME.
Example
Example 1
LOCAL lcFile,loo
loo=CREATEOBJECT("_GetFileEx")
loo.AllowMultiSelect=.F.
loo.Explorer=.T.
loo.EnableSizing=.T.
loo.InitialDir="c:\temp\"
loo.File="Test.txt"
loo.Title="Select text file"
loo.Filter="TXT file"+CHR(0)+"*.txt"+CHR(0)
loo.aFName="paFiles" && Name of Output Array

IF GetFileEx(loo) AND loo.Err=0
   lcFile = loo.SelectedFolder+paFiles(1)
ENDIF
RELE (loo.aFName) && Release Output Array

PutFileEx Function
Zavolá dialog Windows pro uložení souboru. Interně se volá funkce GetSaveFileName() Shellu.
PutFileEx(
loPFObjectObjekt s informacema pro zobrazení dialogu
)
Returns
Vrací
.T.
 pokud uživatel potvrdil výběr souboru a
.F.
 pokud byl výběr zrušen.
Parameters
loPF
[In/Out] Instance třídy _GetFileEx jenž odpovídá API struktuře OPENFILENAME.
Example
Example 1
LOCAL lcFile,loo
loo=CREATEOBJECT("_GetFileEx")
loo.AllowMultiSelect=.F.
loo.Filter="TXT file"+CHR(0)+"*.txt"+CHR(0)
loo.Explorer=.T.
loo.EnableSizing=.T.
loo.Title="Save as TXT file"
loo.aFName="paFiles" && Name of Output Array
loo.File="test.txt"
loo.InitialDir="c:\temp\"

IF PutFileEx(loo) AND loo.Err=0
   lcFile=loo.SelectedFolder+paFiles(1)
ENDIF
RELE (loo.aFName) && Release Output Array