Forms Editor (Reference) provides a comprehensive design environment for creating reports with dynamic content, tables, symbols, and trends. The Forms Editor enables:
Access via Reports → Forms Editor
Main editing canvas with:
Insert real-time tag values:
Method 1: Direct typing
{Tag.TagName}
{Tag.TankFarm/Tank1/Level}
{Tag.Production/Production_Count}
Method 2: Tag Browser
{Info.Date} // Current date
{Info.Time} // Current time
{Client.UserName} // Logged user
{Page.Number} // Page number
{Page.Total} // Total pages
Fixed structure with manual content:
Example:
| Parameter | Value | Status |
|-----------|-------|--------|
| Level | {Tag.Tank1_Level} | {Tag.Level_Status} |
| Temp | {Tag.Tank1_Temp} | Normal |
Query-driven content:
Example:
| Product Name | Quantity | Price |
| ProductName | Qty | UnitPrice |
{Dataset.Query.ProductList}
The table auto-populates from query results.
Set dictionary before generation:
csharp
@Client.Localization = "Spanish"; // Use Spanish dictionary
@Client.Localization = ""; // Use default
For dynamic translation:
csharp
public void OnReportCustomTableCell(string reportName,
string columnName, DataRow row, TableCell tableCell)
{
if (row["ItemName"].ToString() == "{object}")
{
string translated = @Client.Locale(row[columnName].ToString());
Run cellText = (tableCell.Blocks.FirstBlock as Paragraph)
.Inlines.FirstInline as Run;
cellText.Text = translated;
}
}
========================================
Company Name
{Info.Date} - {Info.Time}
Production Report
========================================
Page {Page.Number} of {Page.Total}
Generated by: {Client.UserName}
Add alarm history to reports:
{Alarm.Group.AuditTrail}
With custom messages:
csharp
@Alarm.AuditTrail.AddCustomMessage(
"User: {" + @Client.UserName + "} logged",
null, null, null, "{object}", null, null
);
Accumulate data in existing file:
1
Apply conditional formatting via callback:
csharp
public void OnReportCustomTableCell(string reportName,
string columnName, DataRow row, TableCell tableCell)
{
double value = Convert.ToDouble(row[columnName]);
if (value > 90)
tableCell.Background = Brushes.Red;
else if (value > 80)
tableCell.Background = Brushes.Yellow;
}
Format | Extension | Features | Use Case |
---|---|---|---|
Full formatting, images | Professional reports | ||
XPS | .xps | Windows native, exact layout | Internal distribution |
HTML | .html | Web-ready, hyperlinks | Online viewing |
ASCII | .txt | Plain text, no formatting | Data export |
Unicode | .txt | International characters | Multi-language |
Missing data:
Formatting issues:
Translation problems:
Performance: