该Ctrl+Backspace键盘快捷键正常删除的话,从插入符左侧.但它不工作在任何标准的德尔福控制你所期望的(TEdit,TMemo,TComboBox等.).有趣的是,Ctrl+Delete工作得很好.
有人知道如何轻松纠正这种行为吗?
我知道重写KeyDown程序会做到这一点,但这是一个相当复杂的事情,因为KeyDown必须为每个组件重写.
我想用Delphi XE2/XE3标准System.Zip单元替换zip存档中的文件(=删除旧文件并添加新文件).但是没有替换/删除方法.有没有人知道如何在不需要提取所有文件并将其添加到新存档的情况下实现它?
我有这个代码,但如果它已经存在,它会再次添加"document.txt":
var
ZipFile: TZipFile;
SS: TStringStream;
const
ZipDocument = 'E:\document.zip';
begin
ZipFile := TZipFile.Create; //Zipfile: TZipFile
SS := TStringStream.Create('hello');
try
if FileExists(ZipDocument) then
ZipFile.Open(ZipDocument, zmReadWrite)
else
ZipFile.Open(ZipDocument, zmWrite);
ZipFile.Add(SS, 'document.txt');
ZipFile.Close;
finally
SS.Free;
ZipFile.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
注意:我之前使用过TPAbbrevia(完成了这项工作),但我现在想使用Delphi的Zip单元.所以请不要回答"使用其他图书馆"之类的内容.谢谢.
我创建了一个窗口,它应该突出显示窗体上的控件.这个窗口应该不是当父窗体的背后是另一个窗口(试行的Alt + Tab)停留在其他应用程序窗口顶部.除非从模态表单创建红色框架,否则此工作正常.
我想要实现的是,当从模式对话框创建并切换到另一个应用程序时,红框不会停留在其他窗口的顶部.
我想省略PopupParent和PopupMode,因为代码应该在Delphi 7 - XE2中工作(老实说,我尝试使用PopupParent而没有任何成功).
框架未关闭的事实不是问题.
请检查下面的完整源代码(创建一个新的VCL应用程序并替换整个单元文本,不要在表单上放置任何组件).
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
private
procedure HighlightButton(Sender: TObject);
procedure CreateModalDialog(Sender: TObject);
protected
procedure DoCreate; override;
end;
TOHighlightForm = class(TForm)
private
fxPopupParent: TCustomForm;
procedure SetFormLook;
procedure WMMouseActivate(var Message: TWMMouseActivate); message WM_MOUSEACTIVATE;
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
protected
procedure Paint; override;
procedure DoCreate; override;
procedure Resize; override;
procedure CreateParams(var Params: TCreateParams); override;
public
procedure ShowAt(const …Run Code Online (Sandbox Code Playgroud)