如何设置TIdHTTP以使用IE代理配置?
它应该与XP/Vista/Win7兼容且可靠.
我需要简单的TMemo,它不会在不需要时显示滚动条(即文本不足),但是当它们存在时会显示.类似于ScrollBars = ssAuto或类似于TRichEdit HideScrollBars.
我试图将TMemo子类化并ES_DISABLENOSCROLL在CreateParams中使用,TRichEdit但它不起作用.
编辑:这应该在WordWrap启用或不启用的情况下工作.
在我的服务器上有几个文件的修改日期31/DEC/1979(不要问我原因).所以FileExists返回false.
Sysutils.FileExists 看起来像这样:
function FileAge(const FileName: string): Integer;
var
Handle: THandle;
FindData: TWin32FindData;
LocalFileTime: TFileTime;
begin
Handle := FindFirstFile(PChar(FileName), FindData);
if Handle <> INVALID_HANDLE_VALUE then
begin
Windows.FindClose(Handle);
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
begin
FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime);
if FileTimeToDosDateTime(LocalFileTime, LongRec(Result).Hi,
LongRec(Result).Lo) then Exit;
end;
end;
Result := -1;
end;
function FileExists(const FileName: string): Boolean;
begin
Result := FileAge(FileName) <> -1;
end;
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么功能首先取决于FileAge?以下行不够吗?:
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
// Yes the file exists!
Run Code Online (Sandbox Code Playgroud)
甚至基于文件属性:
function …Run Code Online (Sandbox Code Playgroud) 我在TPanel上有一个TImage,还有一个其他(空)TPanel.我想使用拖放将图像从第一个面板拖动到第二个面板.
我实际上想要看到图像从一个面板移动到另一个面板(半透明).
我想我应该使用,TDragObject.GetDragImages但我无法弄清楚如何构建整个魔法.
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image1.ControlStyle := Image1.ControlStyle + [csDisplayDragImage]; // ???
TImage(Sender).BeginDrag(False);
end;
procedure TForm1.Image1StartDrag(Sender: TObject; var DragObject: TDragObject);
begin
// ???
end;
procedure TForm1.Panel1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if (Source is TImage) then
Accept := TImage(Source).Parent <> Sender;
end;
procedure TForm1.Panel1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if (Source is TImage) then
begin
TImage(Source).Parent := TPanel(Sender);
TImage(Source).Align := alClient;
end; …Run Code Online (Sandbox Code Playgroud) 我有这两个班:
type
TMyBaseClass = class
protected
FAllowDoSomething: Boolean; // initialized to False
procedure DoSomething; virtual;
end;
TMyChildClass = class(TMyBaseClass)
protected
procedure DoSomething; override;
end;
implementation
procedure TMyBaseClass.DoSomething;
begin
if not FAllowDoSomething then Exit; // Abort;
ShowMessage('TMyBaseClass: FAllowDoSomething is False. You wont see me!');
end;
procedure TMyChildClass.DoSomething;
begin
inherited; // Must inherit
// if not FAllowDoSomething then Exit; { I don't want to check here again }
ShowMessage('TMyChildClass: FAllowDoSomething is False but still I can see this message!');
end;
procedure TForm1.Button1Click(Sender: …Run Code Online (Sandbox Code Playgroud) 是否可以知道数据库中某些表的内容何时以及是否已更改?我的SQL Server如何通知客户端应用程序数据被另一个用户更改?如何使用dbGo实现查询通知?
我的客户是否需要轮询数据库,或者是否有回调机制?
我的客户端是Delphi应用程序TADODataSet,我的服务器是SQL Server 2005/2008,为多个客户端提供服务.
我希望创建类似"TOwnedStringList"(类名是小说)的东西,我可以构造为:
sl := TOwnedStringList.Create(Self);
sl.Sorted := True;
sl.Duplicates := dupIgnore;
sl.Add(...);
// etc...
Run Code Online (Sandbox Code Playgroud)
哪里Self可以是一个Form(例如),以便所有者将自动释放StringList.我希望能够避免给sl.Free自己打电话.
这可能吗?
我的应用程序(main.exe)正在执行子进程(child.exe)使用ShellExecuteEx.
但是当我关闭或杀死(通过Process-Explorer)main.exe时,子进程仍然处于活动状态.
当main.exe终止child.exe终止时,如何优雅地处理它?
我想执行子进程并同步它(可能与Mutex),而不等待子进程终止:
家长:
program Project1;
{$APPTYPE CONSOLE}
uses
Windows, ShellApi, SysUtils, Dialogs;
procedure ShellExecEx(Wnd: HWND; const AExeFilename, AParams: string);
const
SEE_MASK_NOZONECHECKS = $00800000;
SEE_MASK_WAITFORINPUTIDLE = $02000000;
SEE_MASK_NOASYNC = $00000100;
var
Info: TShellExecuteInfo;
begin
FillChar(Info, SizeOf(Info), 0);
Info.Wnd := Wnd;
Info.cbSize := SizeOf(Info);
Info.fMask := SEE_MASK_FLAG_NO_UI or SEE_MASK_NOZONECHECKS or
SEE_MASK_NOASYNC
//or SEE_MASK_WAITFORINPUTIDLE (works only with UI app ???)
//or SEE_MASK_NO_CONSOLE
//or SEE_MASK_NOCLOSEPROCESS
;
Info.lpVerb := '';
Info.lpFile := PChar(AExeFilename);
Info.lpParameters := PChar(AParams);
Info.lpDirectory := PChar(ExtractFilePath(AExeFilename));
Info.nShow := SW_SHOWNORMAL;
if not ShellExecuteEx(@Info) then …Run Code Online (Sandbox Code Playgroud) 我真的不想在这里重新发明,所以我要求在多用户数据库应用程序中实现简单(行)锁机制的想法.
假设我有一个表Products,当然它有一个ID(PK),还有一个rowversion列(到目前为止还没有使用),我想只允许一个用户编辑一个特定的行.
当此用户正在编辑记录时(在"签入"之后),其他用户只能查看此记录(只读),但不能修改或删除它.当用户完成并保存记录("结账")时,该记录将再次可供其他用户编辑/删除.
我有一些想法(例如添加"状态"列,或者可能创建一个"锁定"表),但是如果"锁定用户"长时间保持记录(也就是说他去了周末,他的电脑在编辑模式下打开).如果程序在客户端机器上崩溃/系统断电,如何解锁记录......
我想知道是否有一个好的和相对简单的模式(可能包括SQL-Server功能)?
顺便说一句,我的客户端应用程序是Delphi/ADO(不是它非常相关).