创建新的TImage时,它是透明的.在将对象绘制到此图像后,我想清除它们.请注意,我需要保持图像透明,因为TImage被用作另一个图像的叠加层.
TImage的某种"清晰"功能是最好的.我想我在这里缺少一些简单的东西,我在TImage菜单中找不到任何明确的功能.
我遇到了一个小问题.我正在动态生成一些控件并将它们放在一个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.当尝试滚动这样的窗口时,值会重新计算,一切都很好地显示.
所以主要的问题是,如何使滚动条"及时"显示滚动条,这样没有面板被切成一半?
我创建了一个小的多线程应用程序,我试图将其转换为使用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
什么是dclsmpedit包(Embarcadero Editor Script Enhancements)?
我需要它吗?
我不确定'编辑脚本增强功能'是做什么的.
每次等待完成"选项"时,是否正在使用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,现在有另一种方法吗?
使用 ShellExecuteEx() 启动 osk.exe 后,我想相对于数据输入字段定位键盘窗口,以便它不会覆盖它们。
在调用 osk 之前如何设置它的窗口位置?
另外,当我完成后,如何让应用程序隐藏 osk?
如何在delphi表单中添加背景图像?我添加了一个TImage,但现在标签不再可见了,我的复选框的文本是蓝色的"框"(蓝色是我选择的背景颜色).这个蓝色在背景图像上看起来不太好,隐藏的标签看起来也不好看.我该如何解决这些问题?
我目前正在使用:
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)
为所有文件添加右键单击打开功能.然后我想要检测的能力
我正在处理一个应用程序,我需要存储用户密码,所以我想我会将它存储在注册表的当前用户类中,但我也想把它哈希,原因很明显,我已经看到新闻项目表明SHA1已被破解,"标准"系统或.net中是否有更好的(未破解的)散列算法?
delphi ×7
c# ×2
append ×1
async-await ×1
background ×1
command-line ×1
delphi-2009 ×1
filenames ×1
hash ×1
inno-setup ×1
parameters ×1
text-files ×1
threadstatic ×1
timage ×1
tscrollbox ×1
wallpaper ×1