In this topic we will look at some examples of using GetFormValue function.
Getting Value of Object from PANTHEON Window
In the first example we will write down the expression that returns the warehouse on the invoices issued that can be found in Pantheon in menu in Goods | Invoices Issued Report | Invoices Issued Report/Profit Margin. The name of the window is 'PrometObracunIzdRac', the name of check box in which we select the warehouse is 'fWarehouse'.
[GetFormValue('PrometObracunIzdRac.fWarehouse')]
Getting Value from Window with Document
The names of some document windows are composed of a base and a suffix representing the type of document. If we want to print the referent on the issue, we write down the term
[GetFormValue('PrometIzdDob3000.fReferentZap')]
It will returns value only in the case of document type 3000. In order to return value for all document types, we have to rewrite this code to
[GetFormValue('PrometIzdDob'+<tbLookPoslDog."acDocType">+'.fReferentZap')]
Where dataset "tbLookPoslDog" is not available, we can get the name of the window from the document number. On sale orders report we write:
[IIF(Copy(<qReportIzpisD."acKeyView">,Pos('-',
<qReportIzpisD."acKeyView">)+4,1) ='-',
GetFormValue('Naroc'+Copy(<qReportIzpisD."acKeyView">,Pos('-',
<qReportIzpisD."acKeyView">)+1,3)+'0.fReferentZap'),
GetFormValue('Naroc'+Copy(<qReportIzpisD."acKeyView">,Pos('-',
<qReportIzpisD."acKeyView">)+1,4)+'.fReferentZap'))]
Example with Date
The GetFormValue function returns the date in the yyyy/mm/dd format, but usually in Slovenia want date in the dd.mm.yyyy or d.m.yyyy format.
The best example is when there are no data that you need in the dataset, there are notifications of outstanding commitments that are in the program in the Financials | Reports | Outstanding items.
The following expression returns the date of the state in the yyyy/mm/dd format:
[GetFormValue('GLOutstandingItems.edtDate')]
The term also has a disadvantage that if the date is not entered, it returns "1900/01/01" (what is not possible in this case).
We must check whether the date is entered before printing with the IIF function:
[IIF(GetFormValue('GLOutstandingItems.edtDate')= '1900/01/01','',
GetFormValue(''GLOutstandingItems.edtDate'))]
If we want to print the date in the format dd.mm.yyyy, we need to change the order of the numbers on the report:
[IIF(GetFormValue('GLOutstandingItems.edtDate') ='1900/01/01','',
Copy(GetFormValue('GLOutstandingItems.edtDate'),9,2)+'.'+
Copy(GetFormValue('GLOutstandingItems.edtDate'),6,2)+'.'+
Copy(GetFormValue('GLOutstandingItems.edtDate'),1,4))]
The date in the d.m.yyyy format is obtained by turning the day of the month and month into a number and then back to text:
[IIF(GetFormValue('GLOutstandingItems.edtDate') ='1900/01/01','',
IntToStr(StrToInt(Copy(GetFormValue('GLOutstandingItems.edtDate'),9,2)))
+'.'+IntToStr(StrToInt(Copy(GetFormValue('GLOutstandingItems.edtDate'),6,2)))
+'.'+Copy(GetFormValue('GLOutstandingItems.edtDate'),1,4))]
Example with non-text Oobject
The GetFormValue function can also be used for objects that do not represent a text. In this case, the most important feature of this facility is returned. Returned value is usually not suitable for direct printing, but we can use it on the report itself. For example, text is displayed in the window at this value.
As an example, we take a group of radio buttons called grpGroupBy on a new account card report for example '32D- Account Card' which can be found in Pantheon in menu Financials | Reports | Account Card. The name of the window is 'GLAccountCard'. For this object type function returns the 'ItemIndex' property that determines which button is selected. In our example, this property determines how data is to be aggregated and the bands on the report are hidden. The value returned by the function is written to the 'nGroupBy' variable and then, depending on its value, we hide the bands on the report, In the "SubjektFooterOnBeforePrint" procedure.
var nGroupBy: Integer;
...
procedure SubjektFooterOnBeforePrint(Sender: TfrxComponent);
begin
if nGroupBy <= 1 then
SubjektFooter.Visible := False;
end;
...
nGroupBy := GetFormValue('GLAccountCard.grpGroupBy');