Inno setup 如何在inno设置中为TNewStaticText中的文本添加不同的颜色
我有一个变量TNewStaticText数据类型,我想为文本设置不同的颜色,例如 如果变量包含“祝您愉快”之类的文本 “Have”应显示为红色 “a尼斯”应以蓝色显示Inno setup 如何在inno设置中为TNewStaticText中的文本添加不同的颜色,inno-setup,Inno Setup,我有一个变量TNewStaticText数据类型,我想为文本设置不同的颜色,例如 如果变量包含“祝您愉快”之类的文本 “Have”应显示为红色 “a尼斯”应以蓝色显示 “day”应显示为黑色您可能需要尝试以下方法: procedure FormButtonOnClick(Sender: TObject); var Form: TSetupForm; OKButton, CancelButton: TNewButton; begin Form := CreateCustomF
“day”应显示为黑色您可能需要尝试以下方法:
procedure FormButtonOnClick(Sender: TObject);
var
Form: TSetupForm;
OKButton, CancelButton: TNewButton;
begin
Form := CreateCustomForm();
try
Form.ClientWidth := ScaleX(256);
Form.ClientHeight := ScaleY(256);
Form.Caption := 'TSetupForm';
Form.CenterInsideControl(WizardForm, False);
OKButton := TNewButton.Create(Form);
OKButton.Parent := Form;
OKButton.Width := ScaleX(75);
OKButton.Height := ScaleY(23);
OKButton.Left := Form.ClientWidth - ScaleX(75 + 6 + 75 + 10);
OKButton.Top := Form.ClientHeight - ScaleY(23 + 10);
OKButton.Caption := 'OK';
OKButton.ModalResult := mrOk;
CancelButton := TNewButton.Create(Form);
CancelButton.Parent := Form;
CancelButton.Width := ScaleX(75);
CancelButton.Height := ScaleY(23);
CancelButton.Left := Form.ClientWidth - ScaleX(75 + 10);
CancelButton.Top := Form.ClientHeight - ScaleY(23 + 10);
CancelButton.Caption := 'Cancel';
CancelButton.ModalResult := mrCancel;
CancelButton.Cancel := True;
Form.ActiveControl := OKButton;
if Form.ShowModal() = mrOk then
MsgBox('You clicked OK.', mbInformation, MB_OK);
finally
Form.Free();
end;
end;
此示例是从.htm“>http://read.pudn.com/downloads115/sourcecode/windows/system/488914/Examples/CodeClasses.iss_.htmFont-color您可以使用
Font.color
属性进行更改,但它适用于整个控件的文本。为了达到此目的,您需要创建三个控件。以下是一个示例:
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
[Code]
procedure InitializeWizard;
var
TopPos: Integer;
LeftPos: Integer;
StaticText: TNewStaticText;
begin
TopPos := WizardForm.NextButton.Top;
LeftPos := 8;
StaticText := TNewStaticText.Create(WizardForm);
StaticText.Parent := WizardForm;
StaticText.Left := LeftPos;
StaticText.Top := TopPos;
StaticText.Font.Color := clRed;
StaticText.Caption := 'Have ';
LeftPos := StaticText.Left + StaticText.Width;
StaticText := TNewStaticText.Create(WizardForm);
StaticText.Parent := WizardForm;
StaticText.Left := LeftPos;
StaticText.Top := TopPos;
StaticText.Font.Color := clBlue;
StaticText.Caption := 'a nice ';
LeftPos := StaticText.Left + StaticText.Width;
StaticText := TNewStaticText.Create(WizardForm);
StaticText.Parent := WizardForm;
StaticText.Left := LeftPos;
StaticText.Top := TopPos;
StaticText.Font.Color := clBlack;
StaticText.Caption := 'day!';
end;
或者,为了使代码更加灵活,可以将此过程包装为如下函数:
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
[Code]
type
TColorArray = array of TColor;
procedure CreateColoredText(const ATexts: TArrayOfString; const AColors: TColorArray;
AParent: TWinControl; ALeft, ATop: Integer);
var
I: Integer;
LeftPos: Integer;
begin
if GetArrayLength(ATexts) <> GetArrayLength(AColors) then
RaiseException('Inconsistent array parameters.');
LeftPos := ALeft;
for I := 0 to GetArrayLength(ATexts) - 1 do
begin
with TNewStaticText.Create(AParent) do
begin
Parent := AParent;
Left := LeftPos;
Top := ATop;
Font.Color := AColors[I];
Caption := ATexts[I];
LeftPos := Left + Width;
end;
end;
end;
procedure InitializeWizard;
begin
CreateColoredText(['Have ', 'a nice ', 'day!'], [clRed, clBlue, clBlack],
WizardForm, 8, WizardForm.NextButton.Top);
end;
[设置]
AppName=我的程序
AppVersion=1.5
DefaultDirName={pf}\My程序
[守则]
类型
tcolorray=TColor的数组;
过程CreateColoredText(const-ATexts:TArrayOfString;const-AColors:tcolorray;
AParent:TWinControl;ALeft,Top:Integer);
变量
I:整数;
LeftPos:整数;
开始
如果GetArrayLength(ATexts)为GetArrayLength(AColors),则
RaiseException('数组参数不一致');
LeftPos:=ALeft;
对于I:=0到GetArrayLength(ATexts)-1 do
开始
使用TNewStaticText.Create(AParent)do
开始
父母:=公寓;
左:=左位置;
顶部:=顶部;
字体.颜色:=A颜色[I];
标题:=ATexts[I];
LeftPos:=左+宽;
结束;
结束;
结束;
程序初始化;
开始
CreateColoredText(['Have','Ance','day!'],[clRed,clBlue,clBlack],
WizardForm,8,WizardForm.NextButton.Top);
结束;
据我所知,单个字符串是不可能的。在这种情况下,您应该创建两个TNewStaticText字符串,并且可以为每个字符串设置不同的颜色(例如,您的TNewStaticText.Font.color:=clRed;
)。不久前,TLama为IS创建了HTML版本的文本输入-但在此版本的IS中存在许可证文本问题,我不知道它是否最终得到了修复。我的答案是您可以找到答案的方向。否决投票并不好that@real_yggdrasil,我不是一个悲观的选民,但你的回答与这个问题完全无关。它展示了如何创建一个带有两个按钮的自定义表单。如果答案是你发布的链接,这也是一种错误的方式。你应该始终将链接内容的重要部分放入帖子本身。我认为这不是这个问题的正确答案。请检查。将我的标志视为“不是答案”“是有争议的,这实际上并没有回答如何改变控制颜色或有多种颜色的问题。