小编mgh*_*hie的帖子

TImage的透明度

创建新的TImage时,它是透明的.在将对象绘制到此图像后,我想清除它们.请注意,我需要保持图像透明,因为TImage被用作另一个图像的叠加层.

TImage的某种"清晰"功能是最好的.我想我在这里缺少一些简单的东西,我在TImage菜单中找不到任何明确的功能.

delphi timage

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

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

如何在TScrollBox再次显示后显示滚动条?

我遇到了一个小问题.我正在动态生成一些控件并将它们放在一个TScrollbox组件上.但我注意到,如果滚动条可见,用户可以清楚地看到正在创建和放置的每个控件.所以看起来很多工作正在进行而且很慢.

我隐藏了滚动条并在其上生成了所有控件,这花费的时间更少,没有闪烁和相似.但这是问题所在.当我再次显示滚动条时,直到我实际调整表单大小时才会显示其滚动条.(滚动条的对齐方式是alClient)

有想法该怎么解决这个吗?

尝试重新粉刷,但它没有奏效.刷新也不起作用.

谢谢

编辑:

TScrollBox(Form1.FindComponent('termai')).Visible:= false;
for I := 0 to mazgas.GrafasPagalVarda(sActiveGrafas).Termai.Count - 1 do
begin
    fNaujasTermas(i,oHook);
end;
TScrollBox(Form1.FindComponent('termai')).Visible := true;
Run Code Online (Sandbox Code Playgroud)

上面的代码显示了我如何隐藏和显示滚动框.
fNaujasTermas生成一个包含多个轨迹栏,图像和编辑的面板.

我不确定可能会有一步一步的解释.只需创建一个过程,它将生成一些带有许多控件的面板,并将ScrollBox设置为父级.在生成任何内容之前隐藏滚动框,并在完成后取消隐藏它.
哦顺便说一句,面板是对齐的alTop.因此,每次创建新面板并将其放入滚动框时,它将显示在顶部,而所有其他面板将向下移动.

这就是我创建滚动条本身的方式

pTermai := TScrollBox.Create(Self);
pTermai.Parent := pLeft;
pTermai.Align := alClient;
pTermai.Name := 'termai';
pTermai.BorderStyle := bsNone;
pTermai.VertScrollBar.Increment := 40;
Run Code Online (Sandbox Code Playgroud)

EDIT2:我想我知道如何重现这一点.
看起来,当向滚动框添加新面板时,它不会将其计入已存在于该滚动框中的所有控件的总高度.

所以举个例子.让我们说1面板的高度为200px.
ScrollBox高度为300px.

因此,在创建2个高度为400px的面板后,即使第二个面板的一半不可见,滚动框也不会显示滚动条.如果我再添加一个面板= 600px,滚动条将显示滚动条,看起来它只会滚动每2个面板,而不是3.当尝试滚动这样的窗口时,值会重新计算,一切都很好地显示.

所以主要的问题是,如何使滚动条"及时"显示滚动条,这样没有面板被切成一半?

delphi delphi-2009 tscrollbox

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

使用VirtualTreeview和OTL进行内存泄漏

我创建了一个小的多线程应用程序,我试图将其转换为使用OmniThreadLibrary.我正在使用Virtualtreeview显示日志和状态/结果.Vst Log只有两列,记录只包含两个字符串字段(非常简单,记录中没有对象).

使用OTL附带的DEMO项目(线程池#11)我将项目更改为使用VirtualTreeview而不是列表框.当我从演示中"运行任务"时没有内存泄漏,但是如果我不止一次运行"运行任务",就会发生内存泄漏.如果我多次运行任何任务,将发生内存泄漏.如果我根本不使用VirtualTreeView,则任何时候都不会发生内存泄漏.就在我使用VST和任务运行多次时.

我确实使用FreeNode事件并清除字符串,甚至尝试使用Finalize ...

例:

procedure TFormMain.vstLogFreeNode(Sender: TBaseVirtualTree;
  Node: PVirtualNode);
var
  LogData: PTreeLogData;
begin
  LogData:=Sender.GetNodeData(Node);

  if Assigned(LogData) then begin
    LogData^.Msgtype := '';
    LogData^.Msg := '';
  end; 
  //Finalize(LogData^);

end;
Run Code Online (Sandbox Code Playgroud)

当一个任务多次运行时,为什么会出现内存泄漏?Delphi 2010采用FastMM4最新的Virtualtreeview和OTL

delphi virtualtreeview omnithreadlibrary

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

什么是dclsmpedit?

什么是dclsmpedit包(Embarcadero Editor Script Enhancements)?
我需要它吗?

我不确定'编辑脚本增强功能'是做什么的.

delphi

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

如何在C#中跨异步等待模型维护线程上下文?

每次等待完成"选项"时,是否正在使用ThreadStatic并设置上下文?还有另外一种方法吗?

public async void Test()
{
    // This is in Thread 1
    Foo foo = new Foo();
    Context.context = "context1"; // This is ThreadStatic
    string result = await foo.CallAsynx();

    // This is most likely Thread 2
    Context.context = "context1";   // This might be a different thread and so resetting context    
}
Run Code Online (Sandbox Code Playgroud)

如果我不想使用ThreadStatic,现在有另一种方法吗?

c# threadstatic async-await

3
推荐指数
2
解决办法
5505
查看次数

如何定位屏幕键盘窗口?

使用 ShellExecuteEx() 启动 osk.exe 后,我想相对于数据输入字段定位键盘窗口,以便它不会覆盖它们。

在调用 osk 之前如何设置它的窗口位置?

另外,当我完成后,如何让应用程序隐藏 osk?

delphi on-screen-keyboard

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

如何将背景图像添加到Delphi表单

如何在delphi表单中添加背景图像?我添加了一个TImage,但现在标签不再可见了,我的复选框的文本是蓝色的"框"(蓝色是我选择的背景颜色).这个蓝色在背景图像上看起来不太好,隐藏的标签看起来也不好看.我该如何解决这些问题?

delphi background wallpaper

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

如何通过shell打开调用Delphi程序打开多个文件

我目前正在使用:

if ParamStr(1)<>'%1' then
begin
  address.Text:=ParamStr(1);
  autoconfigfile;
end;
Run Code Online (Sandbox Code Playgroud)

获取用于通过文件关联打开文件的文件的名称.

我现在想要开发对多个文件进行操作的能力.即如果我选择5个文件并右键单击并选择打开"EncryptionSystem".我有注册表项:

  reg.OpenKey('*\shell\Encrypt\command', true);
  reg.WriteString('','C:\Program Files\EncryptionSystem\EncryptionSystem.exe "%1"');
  reg.CloseKey;
Run Code Online (Sandbox Code Playgroud)

为所有文件添加右键单击打开功能.然后我想要检测的能力

  1. 多少个文件
  2. 每个文件的路径名

delphi parameters filenames command-line

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

比SHA1更好的散列

我正在处理一个应用程序,我需要存储用户密码,所以我想我会将它存储在注册表的当前用户类中,但我也想把它哈希,原因很明显,我已经看到新闻项目表明SHA1已被破解,"标准"系统或.net中是否有更好的(未破解的)散列算法?

c# hash

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