小编Tom*_*500的帖子

绘制TEdit的主题边框

我想在Paintbox中绘制TEdit的主题边框.代码必须在Windows Vista和7下运行.我尝试了以下操作.它仅适用于Windows XP.

var
  Details: TThemedElementDetails;   //uses Themes
begin
  if ThemeServices.ThemesEnabled then
  begin
    Details := ThemeServices.GetElementDetails(teEditRoot);
    ThemeServices.DrawElement(PaintBox1.Canvas.Handle, Details, PaintBox1.ClientRect);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

在Windows XP下,一切正常.但在Windows Vista和7下,边框涂成深灰色.所有4面都是相同的颜色.但Vista下的TEdit看起来不同:顶部边框呈深灰色.右边框为中灰色.左边和右边的边框为浅灰色.我希望你能理解其中的差异.如何以正确的方式绘画?谢谢!

delphi

5
推荐指数
1
解决办法
2188
查看次数

如何检查变量是否为整数?

我正在使用 Inno Setup,并想使用 Pascal Script 检查字符串变量是否为整数(仅限 0-9,无十六进制)。我做了这个功能:

function IsInt(s: string): boolean;
var
  i, len: Integer;
begin
  len := length(s);

  if len = 0 then
    result := false
  else
  begin
    result := true;
    for i := 1 to len do
    begin
      if not (s[i] in ['0'..'9']) then  !!! ERROR HERE !!!
      begin
        result := false;
        exit;
      end;
    end;
  end;
end; 
Run Code Online (Sandbox Code Playgroud)

但编译器会抛出一个错误:

Closing square bracket (']') expected.
Run Code Online (Sandbox Code Playgroud)

如何修复它?

如果我将行更改为:

  if not (s[i] in ['0','1','2','3','4','5','6','7','8','9']) then
Run Code Online (Sandbox Code Playgroud)

它符合要求,但如果执行代码,则会出现以下错误:

Runtime Error - Invalid Type.
Run Code Online (Sandbox Code Playgroud)

该怎么办?

inno-setup pascalscript

5
推荐指数
1
解决办法
3346
查看次数

标签 统计

delphi ×1

inno-setup ×1

pascalscript ×1