zoukankan      html  css  js  c++  java
  • DELPHI

    DELPHI - How to use opendialog1 for choosing a folder?

    On Vista and up you can show a more modern looking dialog using TFileOpenDialog.

    var
      OpenDialog: TFileOpenDialog;
      SelectedFolder: string;
    .....
    OpenDialog := TFileOpenDialog.Create(MainForm);
    try
      OpenDialog.Options := OpenDialog.Options + [fdoPickFolders];
      if not OpenDialog.Execute then
        Abort;
      SelectedFolder := OpenDialog.FileName;
    finally
      OpenDialog.Free;
    end;
    
    if SelectedFolder[ Length( SelectedFolder ) ] <> '' then
      SelectedFolder := SelectedFolder + '';

     

    uses FileCtrl;
    const
      SELDIRHELP = 1000;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Dir: string;
    begin
      Dir := 'C:Windows';
      if FileCtrl.SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],SELDIRHELP) then
        Label1.Caption := Dir;
    end;

    Selecting a directory with TOpenDialog

    ust found the code below that seems to work fine in XP and Vista, Win7.

    It provides a UI for a user to select a directory.

    It uses TOpenDialog, but sends it a few messages to clean up the appearance for the purposes of selecting a directory.

    After suffering from the limited capabilities provided by Windows itself,

    it's a pleasure to be able to give my users a familiar UI where they can browse and select a folder comfortably.

    I'd been looking for something like this for a long time so thought I'd post it here so others can benefit from it.

    Here's what it looks like in Win 7:

    function GimmeDir(var Dir: string): boolean;
    var
      OpenDialog: TOpenDialog;
      OpenDir: TOpenDir;
    begin
      //The standard dialog...
      OpenDialog:= TOpenDialog.Create(nil);
      //Objetc that holds the OnShow code to hide controls
      OpenDir:= TOpenDir.create;
      try
        //Conect both components...
        OpenDir.Dialog:= OpenDialog;
        OpenDialog.OnShow:= OpenDir.HideControls;
        //Configure it so only folders are shown (and file without extension!)...
        OpenDialog.FileName:= '*.';
        OpenDialog.Filter:=   '*.';
        OpenDialog.Title:=    'Chose a folder';
        //No need to check file existis!
        OpenDialog.Options:= OpenDialog.Options + [ofNoValidate];
        //Initial folder...
        OpenDialog.InitialDir:= Dir;
        //Ask user...
        if OpenDialog.Execute then begin
          Dir:= ExtractFilePath(OpenDialog.FileName);
          result:= true;
        end else begin
          result:= false;
        end;
      finally
        //Clean up...
        OpenDir.Free;
        OpenDialog.Free;
      end;
    end;
  • 相关阅读:
    算法题---最长公共前缀
    算法练习题---罗马数字转int
    算法练习题---原地删除数组元素
    获取当前服务的IP和端口号
    算法练习题---回文数
    Java数学表示式解析工具- jeval
    Redis的安装与部署
    Centos开机自启动redis
    Java 7 的 7 个新的 “酷” 特性
    java7新特性——使用ThreadLocalRandom产生并发随机数
  • 原文地址:https://www.cnblogs.com/shangdawei/p/4791215.html
Copyright © 2011-2022 走看看