小编Tri*_*ber的帖子

如何在delphi中调整父控件的大小时调整子控件的大小?

我有特定一个Delphi形式ClientHeightClientWidth和2个板在其上具有一定的宽度和高度.当我调整表单大小时,我希望在运行时自动调整面板的大小.我怎样才能做到这一点?在调整父控件的大小或者我必须对其进行编程时,delphi中是否存在任何内置功能来调整子控件的大小?

delphi autoresize delphi-xe2

3
推荐指数
1
解决办法
1972
查看次数

更改TToolBar背景颜色

我遇到了一个问题,我通常无法改变其属性的背景颜色(例如clwhite).我在Delphi方面不是很有经验,我找到了两种可能的解决方案,但我仍然想知道,如何正确地改变它或为什么它不可能.TToolBarToolBar.Color

1)将样式更改为渐变,但它也会更改按钮的基本动画.

ToolBar.DrawingStyle := dsGradient
ToolBar.GradientStartColor := clWhite
ToolBar.GradientEndColor := clWhite
Run Code Online (Sandbox Code Playgroud)

2)将TToolBarTPanel使用以下设置.

Panel.Color := clwhite
ToolBar.Parent := Panel
ToolBar.Align := alClient
ToolBar.Transparent := True
Run Code Online (Sandbox Code Playgroud)

delphi common-controls

3
推荐指数
1
解决办法
2086
查看次数

运算符不适用于此操作数类型Delphi

有人帮我解决这个错误.

[错误] Unit1.pas(39):运算符不适用于此操作数类型

代码是:

procedure TForm1.Button1Click(Sender: TObject);
var
  k: Integer;
  broj: Real;
begin
  k := StrToInt(Edit1.Text);
  if k <= 9 then
    broj := k
  else    
    broj := (k + 10) / 2;

  if k mod 2 = 0 then
    broj := broj / 10
  else
    broj := broj mod 10; // error line

  ShowMessage(FloatToStr(broj));    
end;
Run Code Online (Sandbox Code Playgroud)

delphi delphi-7

3
推荐指数
1
解决办法
274
查看次数

如何显示格式化的月份名称?

某些语言(如捷克语或斯洛伐克语)会根据其使用情况更改拼写.但是FormatDateTime没有像SimpleDateFormatJava 那样多的选项,在Java中,您可以在本月的格式化MMMM和独立形式之间切换LLLL.

我正在使用这种表示独立形式30. leden 2019而不是格式化表单的表示法30. ledna 2019.我想应该有一些Windows功能,但我找不到它,我想避免编写自己的库.

FormatDateTime('d. mmmm yyyy', Today);
Run Code Online (Sandbox Code Playgroud)

windows delphi winapi delphi-10.2-tokyo

2
推荐指数
1
解决办法
140
查看次数

case语句中未初始化的变量

每当我使用以下结构时,我仍然无法弄清楚如何摆脱有关未初始化变量的警告,即使我知道这种情况永远不会发生.

TCustomEnum = (ceValue1, ceValue2, ceValue3);

function DoSomething(LI_Enum: TCustomEnum): Integer;
var
  lNumber : Integer;
begin
  case LI_Enum of
    ceValue1 : lNumber := 1;
    ceValue2 : lNumber := 2;
    ceValue3 : lNumber := 3;
  end;
  Result := 2 * lNumber;
end;
Run Code Online (Sandbox Code Playgroud)

W1036变量'lNumber'可能尚未初始化

我找到了3种解决方案,但我不喜欢它们.特别是有更多的变量或陈述.有没有其他方法可以避免这种情况?

  1. {$WARN USE_BEFORE_DEF OFF}和包裹功能{$WARN USE_BEFORE_DEF ON}
  2. 在任何情况下语句中使用else Exit;Result := 0上开始
  3. 初始化每个变量,尽管从不使用该值

delphi delphi-xe6

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

如何确定初始化和最终确定的顺序?

我一直认为表单生命周期的正确顺序initialization -> Create -> OnCreate -> OnDestroy -> Destroy -> finalization适用于以下代码.

Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TUMain, UMain);
Application.Run;
Run Code Online (Sandbox Code Playgroud)

但是当我做一点改变时...

Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TUMain, UMain);
if 1 = 2 then
  Application.Run;
Run Code Online (Sandbox Code Playgroud)

然后TUMain订购更改initialization -> Create -> OnCreate -> finalization -> OnDestroy -> Destroy

所以我想知道,如何控制确切的订单或至少是什么导致了这种情况的变化?

delphi delphi-xe6

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

TPacker.SplitNode中的内存泄漏

我在网上找到了一个简单的二进制打包机,我根据自己的需要进行了改动.它运作良好,但我泄漏记忆.

TSprite

type
  TSprite=class
  public
    X:Integer;
    Y:Integer;
    Width:Integer;
    Height:Integer;
    Used:Boolean;
    Down:TSprite;
    Right:TSprite;
    constructor Create(X, Y,Width, Height:Integer);
end;
Run Code Online (Sandbox Code Playgroud)

TPacker

type
  TPacker=class
  public
  Root:TSprite;
  constructor Create(W,H:Integer; Image : TImage);
  destructor Destroy; override;
  function Fit(var Blocks:array of TBlock):Boolean;
  function FindNode(root:TSprite; W, H:Integer):TSprite;
  function SplitNode(Node:Tsprite; W, H:Integer):TSprite;
end;
Run Code Online (Sandbox Code Playgroud)

我这样用它

var Packer:TPacker;

  Packer:=TPacker.Create(Width  , Height, Image);

  Packer.Fit(Blocks);

  Boundary(Packer.Root, Image);

  for I := Low(Blocks) to High(Blocks) do
    begin
      if Blocks[I].Fit <> nil then
        Draw(Blocks[I].Fit.X,Blocks[I].Fit.Y,Blocks[I].Width,Blocks[I].Height, Image);
    end;



  LeftRacks:=Report(blocks, packer.Root.Width, packer.Root.Height).Racks;
  FillPercent:=Report(blocks, packer.Root.Width, packer.Root.Height).FillPercent;

  Packer.Free;
Run Code Online (Sandbox Code Playgroud)

构造函数 TPacker

constructor …
Run Code Online (Sandbox Code Playgroud)

delphi memory-leaks

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