相关疑难解决方法(0)

Delphi:滑动(动画)面板

是否有Delphi的滑动(动画)面板组件?

例如,它可以在Raize Components中找到(左侧面板带有"Hot Spot"或hide/show按钮).

我不需要一个可调整大小的面板,而是一个可以从左到右水平平滑滑动的面板+有一个隐藏/显示按钮(如果没有那个按钮,这不是什么大问题).

谢谢!

delphi animation panel sliding

11
推荐指数
4
解决办法
2万
查看次数

调整大小不会执行,直到我手动调用ClientHeigh或直到我手动调整大小

我想创建一个从TPanel派生的自定义控件,其中包含一个图像和一堆其他控件.编写代码后,我的程序中有一些奇怪的行为.我意识到一些应该在TDisplay.Resize(override)中初始化的变量从未被初始化,因为从未执行过Resize.

为了"解决它",我在一个表单上放了一个按钮并调用了LoadSample函数,该函数调用ClientHeight,它第一次调用Resize!

constructor TDisplay.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 Ready         := FALSE;                                                       
 Parent        := Owner as TWinControl;
 Width         := 200;
 Height        := 86;                 
 Color         := clSilver;
 Caption       := '';
 DoubleBuffered:= TRUE;


  InternalDisplay:= TImage32.Create(Self);
  with Display DO
   begin
    Parent        := Self;
    Bitmap.Width  := 1;                                                        
    Bitmap.Height := 1;
    RepaintMode   := rmOptimizer;     
    Align         := alClient;
    SetupBitmap(TRUE, clBlack32);    
    Visible       := TRUE;
    OnMouseDown   := DMouseDown;
   end;
 ...
end;
Run Code Online (Sandbox Code Playgroud)

更新:
在我在运行时手动调整表单(控件)之前,InternalDisplay也不会与其父级大小对齐.只有这样它才会按照它应该采取的行动(与alClient保持一致).

更新2:
Resize声明如下:procedure Resize; 覆盖;

更新3:
我从我的construnctor中删除了ClientHeight行并将其移到此处:

procedure TDisplay.LoadSample(VAR Obj: TMySample; CONST bReleaseOnExit: boolean)
begin
 ClientHeight;  <--------- …
Run Code Online (Sandbox Code Playgroud)

delphi

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

标签 统计

delphi ×2

animation ×1

panel ×1

sliding ×1