我需要为特定控件(而不是整个应用程序)创建一个自定义提示窗口(具有它自己的颜色和布局)
提示文本本身不会连接到该特定Hint
属性控件.
正如我所建议的那样,我写了一个处理程序CM_HINTSHOW
(如果控件具有这个功能ShowHint=True
):
procedure TMyControl.CMHintShow(var Message: TMessage);
begin
Form1.caption := 'x';
// Here I will display my own Hint window
// inherited;
end;
Run Code Online (Sandbox Code Playgroud)
但现在,当提示超时时,我怎么知道何时/何处隐藏它?既没有CM_HINTSHOW
或CM_HINTSHOWPAUSE
给我这个信息.
我已经查看了D2009的来源,但我仍然不确定如何在Delphi 5中正确实现VarIsNumeric
(Variants)函数(没有TVarType).
我现在正在使用它:
function VarIsNumeric(const V: Variant): Boolean;
begin
Result := VarType(V) in [varSmallInt, varInteger, varBoolean,
varByte,
varSingle,
varDouble];
end;
Run Code Online (Sandbox Code Playgroud)
它是否正确?
我有这个功能:
var
_WordApplicationExistsCache: Integer = -1; // Cache result
function WordApplicationExists: Boolean;
var
WordObj: OleVariant;
begin
if (_WordApplicationExistsCache = -1) then
begin
Result := False;
try
try
WordObj := CreateOleObject('Word.Application');
WordObj.Visible := False;
WordObj.Quit;
WordObj := Unassigned;
Result := True;
except
// error
end;
finally
_WordApplicationExistsCache := Ord(Result); // 0;1
end;
end
else
begin
Result := Boolean(_WordApplicationExistsCache);
end;
end;
Run Code Online (Sandbox Code Playgroud)
我试图在应用程序生命周期中只调用一次此函数.我可能根本不会调用这个函数.
这是正确的模式吗?这可以做得更好吗?
编辑:我能想到的另一种方式,在这种情况下是使用2个变量:
var
_WordApplicationExistsInitialized: Boolean = False; // Cache result
_WordApplicationExistsCacheResult: Boolean; // Undefined ?
function WordApplicationExists: Boolean;
var
WordObj: …
Run Code Online (Sandbox Code Playgroud) 我有这个输入字符串:
Hello <foo> context61 Hi: context:file/ hello context715: context666:file/ foo
Run Code Online (Sandbox Code Playgroud)
我的目标是将每次出现的替换(清理)替换context[anything]:
为空字符串.这anything
部分可能是空的.
输出应如下所示:
Hello <foo> context61 Hi: file/ hello file/ foo
Run Code Online (Sandbox Code Playgroud)
我尝试过无尽的尝试,但在正则表达方面我只是一个菜鸟.有人可以帮忙吗?
我正在使用ExtractIconEx
提取图标句柄(以后再使用它们):
ExtractIconEx("c:\\progra~1\\winzip\\winzip32.exe", 0, &hIconLarge, &hIconSmall, 1);
Run Code Online (Sandbox Code Playgroud)
我将句柄存储在一个对象中,然后使用图标句柄DrawIcon
.当对象被释放时,我通过破坏两个句柄DestroyIcon
.
我的问题:是否保证我的应用程序可以使用并拥有这两个句柄(因为它的整个生命周期),或者我应该CopyIcon
用于此目的?
我有一个SP,它有一个非常复杂的SQL语句,我需要能够将某些列与NULL进行比较,例如
...
FROM Categories
WHERE PID = @parentID
Run Code Online (Sandbox Code Playgroud)
@parentID
是一个SP参数,可以是有效的NULL.
PID
(父ID)uniqueidentifier
也可以是有效的NULL(顶级类别).我可以使用,SET ANSI_NULLS OFF
但文档说:
在SQL Server的未来版本中,ANSI_NULLS将始终为ON,并且将选项明确设置为OFF的任何应用程序都将生成错误.避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序.
什么可以是一个优雅的方式,而不是与重复相同的查询(S)IS NULL
的情况下@parentID=NULL
(也不能使用动态SQL):
IF @parentID IS NULL
SELECT...WHERE PID IS NULL
ELSE
SELECT...WHERE PID = @parentID
Run Code Online (Sandbox Code Playgroud)
编辑:我想避免一个IF
因为我讨厌重复(巨大)代码.
delphi ×3
delphi-7 ×2
delphi-5 ×1
icons ×1
optimization ×1
regex ×1
sql ×1
sql-server ×1
vbscript ×1
winapi ×1