如何使用 vb.net 动态更改 Crystal 报告字体
How to change Crystal Report font Dynamically using vb.net
我正在使用 Visual Studio 2013 和 crystal 报告 13.0.12.1494。在我的项目中,我有一个 Crystal 报告,其中包含来自数据库的字段(SQL 服务器作为数据库)。我在项目设置中存储对字体的引用,并希望根据项目设置中的用户偏好替换字体
例如crystal 使用 arial 字体构建的报告,10pt,用户在运行时选择 times new roman,12pt,然后报告应以 times new roman,12pt 显示。
我试过关注没有成功
Dim myparam As New ParameterField
Dim myDiscreteValue As New ParameterDiscreteValue
myparam.ParameterFieldName = "My Parameter"
myDiscreteValue.Value = My.Settings.MyFont.Name
提前致谢
这是我用来动态更改对象字体的 C#。
文本对象可以是TextObject
(简单文本)或FieldObject
(来自数据库)
public static void ApplyFontAllText(ReportDocument rapport, Font style)
{
foreach (ReportObject obj in rapport.ReportDefinition.ReportObjects)
{
if (obj.GetType().Name.Equals("TextObject"))
{
((TextObject)obj).ApplyFont(style);
}
else if (obj.GetType().Name.Equals("FieldObject"))
{
((FieldObject)obj).ApplyFont(style);
}
}
}
两个 class 都有一个 ApplyFont
方法。
您可以解析您的字体,然后使用 ApplyFont
.
VB版本:
Dim templatefont As Font
'scan all report objects in the crystal report _reportDoc
For Each x As ReportObject In _reportDoc.ReportDefinition.ReportObjects
'just change the font family. Keep styling (e.g. bold) same
If x.GetType.Name.Equals("TextObject") Then
templatefont = DirectCast(x, TextObject).Font
DirectCast(x, TextObject).ApplyFont(New Font("Arial Unicode MS", templatefont.Size, templatefont.Style, templatefont.Unit))
End If
If x.GetType.Name.Equals("FieldObject") Then
templatefont = DirectCast(x, FieldObject).Font
DirectCast(x, FieldObject).ApplyFont(New Font("Arial Unicode MS", templatefont.Size, templatefont.Style, templatefont.Unit))
End If
Next
我正在使用 Visual Studio 2013 和 crystal 报告 13.0.12.1494。在我的项目中,我有一个 Crystal 报告,其中包含来自数据库的字段(SQL 服务器作为数据库)。我在项目设置中存储对字体的引用,并希望根据项目设置中的用户偏好替换字体 例如crystal 使用 arial 字体构建的报告,10pt,用户在运行时选择 times new roman,12pt,然后报告应以 times new roman,12pt 显示。
我试过关注没有成功
Dim myparam As New ParameterField
Dim myDiscreteValue As New ParameterDiscreteValue
myparam.ParameterFieldName = "My Parameter"
myDiscreteValue.Value = My.Settings.MyFont.Name
提前致谢
这是我用来动态更改对象字体的 C#。
文本对象可以是TextObject
(简单文本)或FieldObject
(来自数据库)
public static void ApplyFontAllText(ReportDocument rapport, Font style)
{
foreach (ReportObject obj in rapport.ReportDefinition.ReportObjects)
{
if (obj.GetType().Name.Equals("TextObject"))
{
((TextObject)obj).ApplyFont(style);
}
else if (obj.GetType().Name.Equals("FieldObject"))
{
((FieldObject)obj).ApplyFont(style);
}
}
}
两个 class 都有一个 ApplyFont
方法。
您可以解析您的字体,然后使用 ApplyFont
.
VB版本:
Dim templatefont As Font
'scan all report objects in the crystal report _reportDoc
For Each x As ReportObject In _reportDoc.ReportDefinition.ReportObjects
'just change the font family. Keep styling (e.g. bold) same
If x.GetType.Name.Equals("TextObject") Then
templatefont = DirectCast(x, TextObject).Font
DirectCast(x, TextObject).ApplyFont(New Font("Arial Unicode MS", templatefont.Size, templatefont.Style, templatefont.Unit))
End If
If x.GetType.Name.Equals("FieldObject") Then
templatefont = DirectCast(x, FieldObject).Font
DirectCast(x, FieldObject).ApplyFont(New Font("Arial Unicode MS", templatefont.Size, templatefont.Style, templatefont.Unit))
End If
Next