我试图在 TFlowPanel 上使用多个 TSpeedButton 来显示用户可以选择的选项列表。这就是我创建这些按钮的方式:
procedure FillOptions(ButtonPanel: TFlowPanel; Options: TStrings; Action: TNotifyEvent);
var Option: string;
Button: TSpeedButton;
begin
for Option in Options do begin
Button:= TSpeedButton.Create(ButtonPanel);
Button.Caption := Option;
Button.Width := Canvas.TextWidth(Option) + 20;
Button.GroupIndex := 99;
Button.AllowAllUp := True;
Button.OnClick := Action;
Button.Parent := ButtonPanel;
end;
end;
Run Code Online (Sandbox Code Playgroud)
问题是我无法选择多个选项。当我单击一个按钮时,它会下降,但之前选择的按钮会上升。
我忘记设置什么以便可以同时按下多个按钮?
谢谢。
函数/过程可以知道它运行的单元/模块(并且可能将其写到文本文件中)吗?
我知道DCU/EXE文件中有很多调试信息,包括可执行代码和源代码/pas代码之间的关联。可以从例程内部访问它吗?
在Application.Initialize之前创建一个对象(我自己的类)可以吗?
我有一个MDI应用程序,我有一个MDI孩子做一些处理(需要10-20秒完成).我发现如果我关闭主应用程序,它会崩溃,因为MDI子项提前关闭(在完成处理之前).
代码是这样的(将所有代码放在这里太复杂了):
mainForm.OnButtonClick
begin
start data processing; <--- 10 seconds
create MDI child; <--- instant
create visual controls (runtime) <==
display the processed data in MDI child; <== 1 sec
end;
Run Code Online (Sandbox Code Playgroud)
该程序在第3行崩溃.FastMM说"FastMM已经检测到尝试在释放的对象上调用虚方法".显然,MDI孩子已被释放.
怎么预防这个?
我有一个空项目(它只包含一个表单).如果我将这一行添加到项目'USES GR32_Image;' 并运行应用程序,FastMM显示程序中的泄漏.FastMM设置为完全调试.我的程序中没有代码 - 除了Delphi IDE生成的代码和'使用gr32'行之外.
报告毫无意义.这是完整的日志:http://pastebin.com/Yhev3rJ2
这里是源代码:http://pastebin.com/VjRrRiS8
我以前使用过Graphics32单元而且从来没有遇到过问题.为什么我有此泄漏以及为什么FastMM无法生成正确的报告?
有关于如何安装和设置SubVersion服务器的任何文档?并通过网络与Delphi XE一起使用.
换句话说:我已经安装了Delphi XE,Subversion Client和Server.怎么办?我不明白他们是如何工作的.
我有一个包含多行的TStringGrid,其中我实现了某种"只读"行.更准确地说,我不允许用户点击倒数第二行.如果用户点击最后一行,则没有任何反应; 焦点不会移动到该行的单元格.
我有代码(在KeyDown中),一切顺利.但是,如果用户单击顶行然后使用鼠标滚轮向下滚动,最终焦点将移动到倒数第二行.知道如何防止这种情况吗?
我想从控制面板执行一个项目(例如“屏幕分辨率”)。 MS说使用 WinExec 应该很容易。
这些尝试将起作用(打开 CPanel),但紧接着 IDE 将崩溃(在 BorDbk150N.dll 中崩溃):
procedure ProjectTest1;
VAR s: AnsiString;
begin
s:= 'c:\windows\system32\control.exe Desk.cpl,Settings';
WinExec(pansichar(s), SW_NORMAL);
end;
procedure ProjectTest2;
VAR
App : String;
Params : String;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
try
App := 'c:\windows\system32\control.exe';
Params := 'desk.cpl,Settings';
FillChar(StartupInfo, SizeOf(StartupInfo), 0);
StartupInfo.cb := SizeOf(StartupInfo);
if NOT CreateProcess(NIL, PChar(App+' '+Params), nil, nil, False, 0, nil, nil, StartupInfo, ProcessInfo) then RaiseLastOSError;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end;
Run Code Online (Sandbox Code Playgroud)
如果您有更好的方法,请告诉我。
使用 Delphi XE,Win …
我需要使用C创建.log文件.但是,我无法使用通常的方法来创建它.文件已创建但无法写入.谁能解释一下?
f = fopen("file.log", "w");
fprintf(f, "print this");
Run Code Online (Sandbox Code Playgroud) 我有一个带有大型 GUI 的程序。GUI 分为几个选项卡。用于管理 GUI 的代码(例如,一个选项卡包含一个完整的 Windows 资源管理器克隆)非常大。
将如此大的 GUI 拆分为多个文件但又不将 GUI 拆分为多种形式(在运行时)的最佳方法是什么?