如题

解决方案 »

  1.   

      它就是一個COMBOBOX下拉就是了啊。  你是不是要關聯路徑啊?
      

  2.   

    DriveComboBox1.TextCase:= tcUpperCase;
    只要定时执行上语句或在需要时执行上语句即可刷新drive列表
    或监控文件夹,当发现新增驱动器时执行上句
    监控文件夹方法论坛上有,就不多说了
      

  3.   

    如果你只是說U盤插入後不能更新可以在插入後重新獲取。const 
         DBT_DEVICEARRIVAL = $8000;  // system detected a new device
         DBT_DEVICEREMOVECOMPLETE = $8004;  // device is gone
         DBT_DEVTYP_VOLUME = $00000002;  // logical volume
         DBTF_MEDIA = $0001;  // media comings and goings
    PDEV_BROADCAST_HDR = ^TDEV_BROADCAST_HDR;
      TDEV_BROADCAST_HDR = packed record
        dbch_size : DWORD;
        dbch_devicetype : DWORD;
        dbch_reserved : DWORD;
      end;
      PDEV_BROADCAST_VOLUME = ^TDEV_BROADCAST_VOLUME;
      TDEV_BROADCAST_VOLUME = packed record
         dbcv_size : DWORD;
         dbcv_devicetype : DWORD;
         dbcv_reserved : DWORD;
         dbcv_unitmask : DWORD;
         dbcv_flags : WORD;
      end;
    private
        procedure WMDeviceChange(var Msg: TMessage); message WM_DEVICECHANGE;
    procedure TForm1.WMDeviceChange(var Msg: TMessage);
    var
      lpdb : PDEV_BROADCAST_HDR;
      lpdbv : PDEV_BROADCAST_VOLUME;
      unitmask:DWORD;
      i,attr:integer;
      inifile:TIniFile;
    begin
      lpdb := PDEV_BROADCAST_HDR(Msg.LParam);
      case Msg.WParam of
        DBT_DEVICEARRIVAL ://有設備安裝完畢
          if lpdb.dbch_devicetype=DBT_DEVTYP_VOLUME then
          begin
            lpdbv := PDEV_BROADCAST_VOLUME(lpdb);
            unitmask:=lpdbv.dbcv_unitmask;//取得設備的盤符
            for i:=0 to 25 do //遍歷磁盤
            begin
              if Boolean(unitmask and $1)then//看該驅動器的狀態是否發生了變化
                break;
              unitmask := unitmask shr 1;
            end;
          end;
        DBT_DEVICEREMOVECOMPLETE:
        begin
            MessageDlg('Your disk is removed!',mtWarning,[mbOK],0);
        end;
      end;
    end;