易截截图软件、单文件、免安装、纯绿色、仅160KB

晕,delphi 7 有两个版本的 SelectDirectory

以前用过delphi 2007的这个函数的,参数超多,现在的公司用D7,结果网上一查这个函数,用不成了,原来我用错了函数
unit QDialogs;
{$IFDEF LINUX}
function SelectDirectory(const Caption, Root: WideString;
  var Directory: WideString; ShowHidden: Boolean = False): Boolean;
{$ENDIF}
{$IFDEF MSWINDOWS}
function SelectDirectory(const Caption: string; const Root: WideString;
  out Directory: WideString): Boolean;
{$ENDIF}
{$IFDEF LINUX}
function SelectDirectory(const Caption, Root: WideString;
  var Directory: WideString; ShowHidden: Boolean = False): Boolean;
var
  Dlg: TDirSelDlg;
  SaveDir: string;
begin
  Dlg := TDirSelDlg.Create(Application);
  try
    SaveDir := Directory;
    Result := Dlg.GetDirectory(Caption, Root, Directory, ShowHidden);
  finally
    Dlg.Free;
  end;
end;
{$ENDIF}
function SelectDirectory(const Caption: string; const Root: WideString;
  out Directory: WideString): Boolean;
var
  WindowList: Pointer;
  BrowseInfo: TBrowseInfo;
  Buffer: PChar;
  RootItemIDList, ItemIDList: PItemIDList;
  ShellMalloc: IMalloc;
  IDesktopFolder: IShellFolder;
  Eaten, Flags: LongWord;
  ActiveWindow: HWND;
begin
  Result := False;
  Directory := '';
  FillChar(BrowseInfo, SizeOf(BrowseInfo), 0);
  if (ShGetMalloc(ShellMalloc) = S_OK) and (ShellMalloc <> nil) then
  begin
    Buffer := ShellMalloc.Alloc(MAX_PATH);
    try
      RootItemIDList := nil;
      if Root <> '' then
      begin
        SHGetDesktopFolder(IDesktopFolder);
        IDesktopFolder.ParseDisplayName(0, nil,
          POleStr(Root), Eaten, RootItemIDList, Flags);
 


相关文档:

Delphi定时Showmessage事件

在Delphi中,调用Showmessage后,如何使弹出的对话框在一秒钟后自动关闭,而不用手动去点确定
1:用timer控件的函数
procedure TForm1.Timer1Timer(Sender: TObject);
var
AHandle: THandle;
begin
AHandle := FindWindow('TMessageForm',
PChar(Application.Title));
if AHandle > 0 then
SendMessage( ......

DELPHI开发中好用的快捷键(D2007版)

DELPHI用得不太多,加上脑筋不好使,就记一下最常用对开发效率很有帮助的几个:
Ctrl+鼠标左键:查找定义
Ctrl+Shift+↑:上一操作与其正好相反,由定义查找实现
Ctrl+Shift+空格:在一个函数没有输入参数的括号内按下此快捷键时会出现函数相关参数的提示信息,包括重载的所有函数的信息 ......

Delphi 7 的一个奇怪的Bug

近来发现一个Delphi莫名其妙的bug,当使用SetOptionalParam时,不能使用一连串数字的字符串,如'101',注意,是带引号的。在SaveToFile时,就会出现'Invalid field type'的异常,真是百思不得其解!连'001'这种串也不行,去掉引号,直接按数字赋值,则正常。
procedure TForm1.Button1Click(Sender: TObject);
var
  ......

DELPHI 2007中使用ADO调用ORACLE有返回游标的存储过程


ADO 使用 ORACLE provider FOR  OLE DB 驱动时
调用存储过程需要返回游标时,在连接字符串中增加
PLSQLRSet=1 参数。
存储过程中的游标不需要付初始值
 
如:
  sp1: TADOStoredProc;
 
 
 sp1.Close;
 sp1.ProcedureName := 'pkg_ScanList_By_JobNo.sp_GetScanList';& ......

delphi中关于字符串数组的一个小BUG

看如下代码:
var
   buffer:array [0..6] of char;
begin
    buffer:='delphi';
end;
编译通过
再看如下代码:
var
   buffer:array [1..7] of char;
begin
    buffer:='delphi';
end;
编译错误:
Incompatible types: 'Array' and 'String'
真不知道 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号