在更改列表视图的SubItem文本时,我需要刷整并填充整行:
procedure TForm1.ListViewDrawItem(Sender: TCustomListView;
Item: TListItem; Rect: TRect; State: TOwnerDrawState);
begin
if Item.SubItems[2]='Done'
then
begin
Sender.Canvas.Font.Color := clBlack;
Sender.Canvas.Brush.Color := clGreen;
Sender.Canvas.Brush.Style := bsSolid;
Sender.Canvas.FillRect(Rect);
end;
end;
Run Code Online (Sandbox Code Playgroud)
但是Sender.Canvas.FillRect(Rect)将仅填充SubItem的Rect.如何填满整行?
这个问题是在Delphi的基础上提出的:如何在CustomDrawItem的List View中绘制小图标
谢谢!
我在字符串中添加了一个空格,但Trim不会删除此空格.为什么不?
str:=tstringlist.create;
str.LoadFromFile(s);
Trim(str.strings[1]);
str.Free;
Run Code Online (Sandbox Code Playgroud) 有一个程序可以创建一个日志文件.
这是它创建的日志文件的示例:

此程序将此日志文件加载到TStringGrid中.日志文件以制表符分隔.单元格可以具有空格"".
我如何使用TStringGrid或替代方案将此类日志文件加载到此程序中?
谢谢!
为什么
if SameText(ListBox1.Items[i],Edit1.Text)=true then
Run Code Online (Sandbox Code Playgroud)
不行?它区分大小写(字符串有不同的情况),但必须不是.字符串是unicode.如果字符串具有相同的情况,它可以工作.
谢谢!
有两种形式.
Form2不是自动创建的.
Form2:=TForm2.Create(Application);
Form2.Show;
Run Code Online (Sandbox Code Playgroud)
如果要Sleep(10000);在任何形式内进行,那么另一个形式将被冻结.如何防止这种行为?
我的问题:一个大文本文件(3 Mb)被连续分配(Lines.Assign)到文本编辑器中,因此表格被冻结.
我可以使用另一个未冻结的表单(不是模态)来显示进度条(样式是pbstMarquee)吗?
有一个很好的组件可以在客户区域中最大化子窗口(必须保留SHIFT键) - NLDExtraMDIProps.
或者可以使用此代码:
procedure WMSIZE(var Msg: TMessage); message WM_SIZE;
procedure TForm2.WMSIZE(var Msg: TMessage);
begin
inherited;
if Msg.WParam = SIZE_MAXIMIZED then
begin
ShowWindow(Handle, SW_RESTORE);
Left := 0;
Top := 0;
Width := Form1.ClientWidth - 4; // The BORDER
Height := Form1.ClientHeight - 4;
end;
end;
Run Code Online (Sandbox Code Playgroud)
但最大化并不是真正的最大化.子窗口仅与客户区对齐.它必须在调整父窗口大小时自动调整大小并适合客户区域,最大化/恢复系统按钮必须更改等.
我尝试完成下面描述的效果.
正如您在图片上看到的那样,子窗口最大化,并且
1)它们不占用整个父窗口(仅占用客户区域).
2)将它们移动到标题/标题栏上是不可能的,因为它们是最大化的.
3)他们有恢复按钮,而不是最大化按钮.
4)它们与客户区对齐(父窗口的大小调整导致子客户区域的大小调整).
我的问题中的代码和组件不像图片上的子窗口那样.
我们可以使窗口真正最大化(不仅仅是对齐)吗?
没有最大化(不好;我的问题中的组件和代码在这些图片上最大化):

最大化(我需要的):

德尔福XE.Windows 7的.
有一个功能(请参阅下面的代码)或I:=0导致大项目中的AV错误.在新项目中没有相同功能的错误!我删除了大项目中的所有内容,我只留下了一个按钮和该功能.它仍然会导致错误......
带错误的一行:
if ISAeroEnabled then // this line is a cause
i:=0; // or this line
Run Code Online (Sandbox Code Playgroud)
我在任何地方设置了断点(我检查了整个函数,我在EACH LINE上设置了断点- >函数中没有错误),调试器显示错误在于i:=0;
如果删除一个功能(并离开i:=0;) - > 一切都好!
错误消息: First chance exception at $747FB727. Exception class EAccessViolation with message 'Access violation at address 004AE5AF in module 'MngProject.exe'. Write of address 0017FFF8'. Process MngProject.exe (4980)
为什么它在新项目中有效但在我的项目中却没有?
这是整个项目:http://www.2shared.com/file/UP22Om4j/Bug.html
代码:
unit MainFormModule;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
StdCtrls;
type
TMainForm = …Run Code Online (Sandbox Code Playgroud)