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;
  • 相关阅读:
    java Random 随机重排
    java Random 带权重的随机选择
    java 枚举
    springboot docker 部署
    docker 国内镜像加速
    BigDecimal使用
    java继承实现的基本原理
    MySQL 数据类型
    Knockout: 让ViewModel从htm中剥离出去。
    常用代码之五:RequireJS, 一个Define需要且只能有一个返回值/对象,一个JS文件里只能放一个Define.
  • 原文地址:https://www.cnblogs.com/shangdawei/p/4791215.html
Copyright © 2011-2022 走看看