亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? bsfilectrl.pas

?? BusinessSkinForm Ver3.95 full source_漢化版_最新
?? PAS
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
{*******************************************************************}
{                                                                   }
{       Almediadev Visual Component Library                         }
{       BusinessSkinForm                                            }
{       Version 3.95                                                }
{                                                                   }
{       Copyright (c) 2000-2004 Almediadev                          }
{       ALL RIGHTS RESERVED                                         }
{                                                                   }
{       Home:  http://www.almdev.com                                }
{       Support: support@almdev.com                                 }
{                                                                   }
{*******************************************************************}

unit bsfilectrl;

{$R-,T-,H+,X+}

interface

uses Windows, Messages, SysUtils, Classes, Controls, Graphics, Forms,
  Menus, StdCtrls, Buttons, bsSkinBoxCtrls, bsSkinCtrls;

type
  TFileAttr = (ftReadOnly, ftHidden, ftSystem, ftVolumeID, ftDirectory,
    ftArchive, ftNormal);
  TFileType = set of TFileAttr;

  TDriveType = (dtUnknown, dtNoDrive, dtFloppy, dtFixed, dtNetwork, dtCDROM,
    dtRAM);

  TbsSkinDirectoryListBox = class;
  TbsSkinFilterComboBox = class;
  TbsSkinDriveComboBox = class;

{ TbsSkinFileListBox }

  TbsSkinFileListBox = class(TbsSkinListBox)
  private
    function GetDrive: char;
    function GetFileName: string;
    function IsMaskStored: Boolean;
    procedure SetDrive(Value: char);
    procedure SetFileEdit(Value: TEdit);
    procedure SetDirectory(const NewDirectory: string);
    procedure SetFileType(NewFileType: TFileType);
    procedure SetMask(const NewMask: string);
    procedure SetFileName(const NewFile: string);
  protected
    FDirectory: string;
    FMask: string;
    FFileType: TFileType;
    FFileEdit: TEdit;
    FDirList: TbsSkinDirectoryListBox;
    FFilterCombo: TbsSkinFilterComboBox;
    FOnChange: TNotifyEvent;
    FLastSel: Integer;
    procedure CreateWnd; override;
    procedure ListBoxClick; override;
    procedure Change; virtual;
    procedure ReadFileNames; virtual;
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
    function GetFilePath: string; virtual;
    procedure Loaded; override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure Update; reintroduce;
    procedure ApplyFilePath (const EditText: string); virtual;
    property Drive: char read GetDrive write SetDrive;
    property Directory: string read FDirectory write ApplyFilePath;
    property FileName: string read GetFilePath write ApplyFilePath;
  published
    property Align;
    property Anchors;
    property DragCursor;
    property DragMode;
    property Enabled;
    property FileEdit: TEdit read FFileEdit write SetFileEdit;
    property FileType: TFileType read FFileType write SetFileType default [ftNormal];
    property Font;
    property ImeMode;
    property ImeName;
    property Mask: string read FMask write SetMask stored IsMaskStored;
    property MultiSelect;
    property PopupMenu;
    property ShowHint;
    property TabOrder;
    property TabStop;
    property Visible;
    property OnChange: TNotifyEvent read FOnChange write FOnChange;
  end;

{ TbsDirectoryListBox }

  TbsSkinDirectoryListBox = class(TbsSkinListBox)
  private
    FFileList: TbsSkinFileListBox;
    FDriveCombo: TbsSkinDriveComboBox;
    FDirLabel: TbsSkinStdLabel;
    FInSetDir: Boolean;
    FPreserveCase: Boolean;
    FCaseSensitive: Boolean;
    function GetDrive: char;
    procedure SeTbsSkinFileListBox(Value: TbsSkinFileListBox);
    procedure SetDirLabel(Value: TbsSkinStdLabel);
    procedure SetDirLabelCaption;
    procedure SetDrive(Value: char);
    procedure DriveChange(NewDrive: Char);
    procedure SetDir(const NewDirectory: string);
    procedure SetDirectory(const NewDirectory: string); virtual;
  protected
    ClosedBMP, OpenedBMP, CurrentBMP: TBitmap;
    FDirectory: string;
    FOnChange: TNotifyEvent;
    procedure Change; virtual;
    procedure ListBoxDblClick; override;
    procedure ReadBitmaps; virtual;
    procedure CreateWnd; override;
    procedure DrawItem(Cnvs: TCanvas; Index: Integer;
       ItemWidth, ItemHeight: Integer; TextRect: TRect; State: TOwnerDrawState);
    function  ReadDirectoryNames(const ParentDirectory: string;
      DirectoryList: TStringList): Integer;
    procedure BuildList; virtual;
    procedure ListBoxKeyPress(var Key: Char); override;
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
    procedure Loaded; override;
    function GetFullItemWidth(Index: Integer; ACnvs: TCanvas): Integer; override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    function  DisplayCase(const S: String): String;
    function  FileCompareText(const A, B: String): Integer;
    function GetItemPath(Index: Integer): string;
    procedure OpenCurrent;
    procedure Update; reintroduce;
    property Drive: Char read GetDrive write SetDrive;
    property Directory: string read FDirectory write SetDirectory;
    property PreserveCase: Boolean read FPreserveCase;
    property CaseSensitive: Boolean read FCaseSensitive;
  published
    property Align;
    property Anchors;
    property Color;
    property Columns;
    property Constraints;
    property Ctl3D;
    property DirLabel: TbsSkinStdLabel read FDirLabel write SetDirLabel;
    property DragCursor;
    property DragMode;
    property Enabled;
    property FileList: TbsSkinFileListBox read FFileList write SeTbsSkinFileListBox;
    property Font;
    property ImeMode;
    property ImeName;
    property PopupMenu;
    property ShowHint;
    property TabOrder;
    property TabStop;
    property Visible;
    property OnChange: TNotifyEvent read FOnChange write FOnChange;
  end;

{ TbsSkinDriveComboBox }

  TTextCase = (tcLowerCase, tcUpperCase);

  TbsSkinDriveComboBox = class(TbsSkinComboBox)
  private
    FDirList: TbsSkinDirectoryListBox;
    FDrive: Char;
    FTextCase: TTextCase;
    procedure SetDirListBox (Value: TbsSkinDirectoryListBox);
    procedure SetDrive(NewDrive: Char);
    procedure SetTextCase(NewTextCase: TTextCase);
    procedure ReadBitmaps;
  protected
    FloppyBMP, FixedBMP, NetworkBMP, CDROMBMP, RAMBMP: TBitmap;
    procedure CreateWnd; override;
    procedure DrawItem(Cnvs: TCanvas; Index: Integer;
       ItemWidth, ItemHeight: Integer; TextRect: TRect; State: TOwnerDrawState);
    procedure NewChange(Sender: TObject);
    procedure BuildList; virtual;
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
    procedure Loaded; override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    property Text;
    property Drive: Char read FDrive write SetDrive;
  published
    property Anchors;
    property Color;
    property Constraints;
    property Ctl3D;
    property DirList: TbsSkinDirectoryListBox read FDirList write SetDirListBox;
    property DragMode;
    property DragCursor;
    property Enabled;
    property Font;
    property ImeMode;
    property ImeName;
    property ParentColor;
    property ParentCtl3D;
    property ParentFont;
    property ParentShowHint;
    property PopupMenu;
    property ShowHint;
    property TabOrder;
    property TabStop;
    property TextCase: TTextCase read FTextCase write SetTextCase default tcLowerCase;
    property Visible;
    property OnChange;
  end;

{ TFilterComboBox }

  TbsSkinFilterComboBox = class(TbsSkinComboBox)
  private
    FFilter: string;
    FFileList: TbsSkinFileListBox;
    MaskList: TStringList;
    function IsFilterStored: Boolean;
    function GetMask: string;
    procedure SetFilter(const NewFilter: string);
    procedure SeTbsSkinFileListBox (Value: TbsSkinFileListBox);
  protected
    procedure Change; override;
    procedure CreateWnd; override;
    procedure Click; override;
    procedure BuildList;
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    property Mask: string read GetMask;
    property Text;
  published
    property Anchors;
    property Color;
    property Constraints;
    property Ctl3D;
    property DragMode;
    property DragCursor;
    property Enabled;
    property FileList: TbsSkinFileListBox read FFileList write SeTbsSkinFileListBox;
    property Filter: string read FFilter write SetFilter stored IsFilterStored;
    property Font;
    property ImeName;
    property ImeMode;
    property ParentColor;
    property ParentCtl3D;
    property ParentFont;
    property ParentShowHint;
    property PopupMenu;
    property ShowHint;
    property TabOrder;
    property TabStop;
    property Visible;
    property OnChange;
    property OnClick;
  end;

procedure ProcessPath (const EditText: string; var Drive: Char;
  var DirPart: string; var FilePart: string);

function MinimizeName(const Filename: TFileName; Canvas: TCanvas;
  MaxLen: Integer): TFileName;

const
  WNTYPE_DRIVE = 1;

type
  TSelectDirOpt = (sdAllowCreate, sdPerformCreate, sdPrompt);
  TSelectDirOpts = set of TSelectDirOpt;

function DirectoryExists(const Name: string): Boolean;
function ForceDirectories(Dir: string): Boolean;

implementation

uses Consts, Dialogs, bsUtils;

{$R bsfilectrl}

function DirectoryExists(const Name: string): Boolean;
var
  Code: Integer;
begin
  Code := GetFileAttributes(PChar(Name));
  Result := (Code <> -1) and (FILE_ATTRIBUTE_DIRECTORY and Code <> 0);
end;

function ForceDirectories(Dir: string): Boolean;
begin
  Result := True;
  Dir := ExcludeTrailingBackslash(Dir);
  if (Length(Dir) < 3) or DirectoryExists(Dir)
    or (ExtractFilePath(Dir) = Dir) then Exit;
  Result := ForceDirectories(ExtractFilePath(Dir)) and CreateDir(Dir);
end;

function SlashSep(const Path, S: String): String;
begin
  if AnsiLastChar(Path)^ <> '\' then
    Result := Path + '\' + S
  else
    Result := Path + S;
end;

{ TbsSkinDriveComboBox }

procedure CutFirstDirectory(var S: TFileName);
var
  Root: Boolean;
  P: Integer;
begin
  if S = '\' then
    S := ''
  else
  begin
    if S[1] = '\' then
    begin
      Root := True;
      Delete(S, 1, 1);
    end
    else
      Root := False;
    if S[1] = '.' then
      Delete(S, 1, 4);
    P := AnsiPos('\',S);
    if P <> 0 then
    begin
      Delete(S, 1, P);
      S := '...\' + S;
    end
    else
      S := '';
    if Root then
      S := '\' + S;
  end;
end;

function MinimizeName(const Filename: TFileName; Canvas: TCanvas;
  MaxLen: Integer): TFileName;
var
  Drive: TFileName;
  Dir: TFileName;
  Name: TFileName;
begin
  Result := FileName;
  Dir := ExtractFilePath(Result);
  Name := ExtractFileName(Result);

  if (Length(Dir) >= 2) and (Dir[2] = ':') then
  begin
    Drive := Copy(Dir, 1, 2);
    Delete(Dir, 1, 2);
  end
  else
    Drive := '';
  while ((Dir <> '') or (Drive <> '')) and (Canvas.TextWidth(Result) > MaxLen) do
  begin
    if Dir = '\...\' then
    begin
      Drive := '';
      Dir := '...\';
    end
    else if Dir = '' then
      Drive := ''
    else
      CutFirstDirectory(Dir);
    Result := Drive + Dir + Name;
  end;
end;

function VolumeID(DriveChar: Char): string;
var
  OldErrorMode: Integer;
  NotUsed, VolFlags: DWORD;
  Buf: array [0..MAX_PATH] of Char;
begin
  OldErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS);
  try
    Buf[0] := #$00;
    if GetVolumeInformation(PChar(DriveChar + ':\'), Buf, DWORD(sizeof(Buf)),
      nil, NotUsed, VolFlags, nil, 0) then
      SetString(Result, Buf, StrLen(Buf))
    else Result := '';  
    if DriveChar < 'a' then
      Result := AnsiUpperCaseFileName(Result)
    else
      Result := AnsiLowerCaseFileName(Result);
    Result := Format('[%s]',[Result]);
  finally
    SetErrorMode(OldErrorMode);
  end;
end;

function NetworkVolume(DriveChar: Char): string;
var
  Buf: Array [0..MAX_PATH] of Char;
  DriveStr: array [0..3] of Char;
  BufferSize: DWORD;
begin
  BufferSize := sizeof(Buf);
  DriveStr[0] := UpCase(DriveChar);
  DriveStr[1] := ':';
  DriveStr[2] := #0;
  if WNetGetConnection(DriveStr, Buf, BufferSize) = WN_SUCCESS then
  begin
    SetString(Result, Buf, BufferSize);
    if DriveChar < 'a' then
      Result := AnsiUpperCaseFileName(Result)
    else
      Result := AnsiLowerCaseFileName(Result);
  end
  else
    Result := VolumeID(DriveChar);
end;

procedure ProcessPath (const EditText: string; var Drive: Char;
  var DirPart: string; var FilePart: string);
var
  SaveDir, Root: string;
begin
  GetDir(0, SaveDir);
  Drive := SaveDir[1];
  DirPart := EditText;
  if (DirPart[1] = '[') and (AnsiLastChar(DirPart)^ = ']') then
    DirPart := Copy(DirPart, 2, Length(DirPart) - 2)
  else
  begin
    Root := ExtractFileDrive(DirPart);
    if Length(Root) = 0 then
      Root := ExtractFileDrive(SaveDir)
    else
      Delete(DirPart, 1, Length(Root));
    if (Length(Root) >= 2) and (Root[2] = ':') then
      Drive := Root[1]
    else
      Drive := #0;
  end;

  try
    if DirectoryExists(Root) then
      ChDir(Root);
    FilePart := ExtractFileName (DirPart);
    if Length(DirPart) = (Length(FilePart) + 1) then
      DirPart := '\'
    else if Length(DirPart) > Length(FilePart) then
      SetLength(DirPart, Length(DirPart) - Length(FilePart) - 1)
    else
    begin
      GetDir(0, DirPart);
      Delete(DirPart, 1, Length(ExtractFileDrive(DirPart)));
      if Length(DirPart) = 0 then
        DirPart := '\';
    end;
    if Length(DirPart) > 0 then
      ChDir (DirPart);  {first go to our new directory}
    if (Length(FilePart) > 0) and not
       (((Pos('*', FilePart) > 0) or (Pos('?', FilePart) > 0)) or
       FileExists(FilePart)) then
    begin
      ChDir(FilePart);
      if Length(DirPart) = 1 then
        DirPart := '\' + FilePart
      else
        DirPart := DirPart + '\' + FilePart;
      FilePart := '';
    end;
    if Drive = #0 then
      DirPart := Root + DirPart;
  finally
    if DirectoryExists(SaveDir) then
      ChDir(SaveDir);  { restore original directory }
  end;
end;

{ TbsSkinDriveComboBox }

constructor TbsSkinDriveComboBox.Create(AOwner: TComponent);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品在线一区二区| 日本视频免费一区| 中文字幕精品一区二区精品绿巨人 | 午夜久久久久久电影| 亚洲一区在线视频观看| 亚洲风情在线资源站| 首页欧美精品中文字幕| 青青草国产成人av片免费| 麻豆91免费观看| 久久99精品国产91久久来源| 久久99国产精品尤物| 国产精品白丝jk黑袜喷水| 不卡高清视频专区| 91免费国产视频网站| 在线观看国产日韩| 欧美一级在线观看| 欧美精品一区二区三区蜜桃| 中文一区在线播放 | 国产一区在线视频| 国产a精品视频| 91亚洲精华国产精华精华液| 99国产精品久久| 欧美久久久久免费| 久久蜜桃av一区二区天堂| 国产精品久久久久久久久久免费看| 国产精品久久久久久久久免费桃花 | 久久久久国产成人精品亚洲午夜| 国产片一区二区三区| 亚洲精品国产a| 蜜桃传媒麻豆第一区在线观看| 国产成人亚洲综合a∨婷婷图片| 97se亚洲国产综合自在线不卡| 欧美日韩国产高清一区| 欧美大肚乱孕交hd孕妇| 国产精品久久毛片a| 五月激情综合婷婷| 国产成人在线视频网址| 91精品福利视频| 日韩精品一区国产麻豆| 亚洲天堂久久久久久久| 青青草伊人久久| 99久久久国产精品| 日韩精品一区国产麻豆| 亚洲品质自拍视频| 久久99精品久久久久久国产越南| 成人黄色软件下载| 一本久道久久综合中文字幕| 欧美不卡在线视频| 亚洲人xxxx| 狠狠久久亚洲欧美| 欧洲一区二区三区免费视频| 久久婷婷一区二区三区| 亚欧色一区w666天堂| 成人精品免费网站| 欧美v亚洲v综合ⅴ国产v| 一区二区在线观看视频| 国产精品系列在线播放| 91精品国产一区二区三区香蕉| 国产精品卡一卡二卡三| 久久99热99| 欧美日韩中文字幕一区| 国产精品美女久久福利网站| 九色|91porny| 欧美亚洲综合久久| 国产精品伦理在线| 激情成人午夜视频| 欧美精品v日韩精品v韩国精品v| 日韩一区有码在线| 国产精品99久久久久久久vr| 91精品国产综合久久久蜜臀粉嫩| 亚洲丝袜制服诱惑| 国产99一区视频免费| 日韩午夜在线播放| 午夜久久久久久久久| 91精品91久久久中77777| 中文字幕亚洲一区二区va在线| 激情丁香综合五月| 日韩欧美国产电影| 日韩中文字幕不卡| 欧美日韩一区在线观看| 亚洲欧美福利一区二区| 99久久婷婷国产综合精品| 国产日产亚洲精品系列| 国产黑丝在线一区二区三区| 久久综合九色综合欧美亚洲| 美女脱光内衣内裤视频久久影院| 欧美日韩亚洲综合在线| 亚洲资源在线观看| 色综合婷婷久久| 亚洲色图.com| 一本色道久久综合精品竹菊| 亚洲欧洲三级电影| 99久久国产综合精品色伊| 中文字幕在线不卡视频| fc2成人免费人成在线观看播放 | 蜜臀久久99精品久久久久宅男| 日本韩国一区二区| 一区二区三区四区精品在线视频| 一本色道久久综合亚洲91| 亚洲免费av在线| 一本到不卡精品视频在线观看| 亚洲欧美另类久久久精品2019| 99精品欧美一区二区蜜桃免费| 中文字幕一区二区三| 一本大道久久a久久精品综合| 亚洲婷婷综合色高清在线| 色哟哟亚洲精品| 亚洲自拍欧美精品| 欧美肥妇free| 久久精品国产亚洲一区二区三区| 日韩免费看网站| 国产黄人亚洲片| 国产精品网曝门| 色一区在线观看| 亚洲成人av资源| 欧美电视剧免费全集观看| 国产精品亚洲а∨天堂免在线| 国产欧美va欧美不卡在线| gogo大胆日本视频一区| 夜夜爽夜夜爽精品视频| 911精品国产一区二区在线| 久久成人免费电影| 国产欧美一区二区精品久导航| 99久久免费精品| 亚洲一区视频在线观看视频| 欧美一级生活片| 国产一区 二区| 亚洲色图欧美偷拍| 91精品国产色综合久久ai换脸| 久久av老司机精品网站导航| 中文字幕不卡在线观看| 在线国产电影不卡| 蜜臀久久99精品久久久久久9| 国产欧美1区2区3区| 91福利视频网站| 激情另类小说区图片区视频区| 中文字幕日本不卡| 欧美日韩成人一区二区| 国产激情一区二区三区桃花岛亚洲| 亚洲欧美影音先锋| 日韩欧美国产综合| 91视视频在线直接观看在线看网页在线看 | 日韩一区欧美一区| 91精品国产综合久久精品性色| 国产一区二区三区蝌蚪| 一级中文字幕一区二区| 精品日韩av一区二区| jlzzjlzz亚洲女人18| 美国av一区二区| 亚洲人成精品久久久久| 精品999久久久| 欧美性大战xxxxx久久久| 国产美女一区二区| 亚洲午夜电影在线| 国产欧美一区二区精品性| 51精品视频一区二区三区| 99在线热播精品免费| 麻豆成人综合网| 一区二区三区免费观看| 欧美韩国日本一区| 日韩一区二区三区电影| 日本精品一区二区三区四区的功能| 国内一区二区在线| 亚洲国产一区二区三区| 国产精品国产自产拍高清av| 日韩美女视频在线| 精品视频1区2区| 91片在线免费观看| 国产成人午夜精品5599| 免费成人在线观看视频| 亚洲国产三级在线| 国产精品久久久久婷婷二区次| 日韩午夜电影在线观看| 欧美日韩一区不卡| 一本到不卡精品视频在线观看 | 欧美大片在线观看一区| 欧美日韩精品三区| 91丨porny丨蝌蚪视频| 国产成人免费网站| 久久精品国产在热久久| 日韩黄色在线观看| 亚洲国产sm捆绑调教视频| 亚洲欧美另类图片小说| 国产精品福利在线播放| 国产欧美日韩不卡免费| 精品国产一区二区三区不卡| 欧美区在线观看| 欧美午夜精品久久久久久孕妇 | 最好看的中文字幕久久| 欧美激情资源网| 久久久久久久久久看片| 亚洲午夜国产一区99re久久| 亚洲精品免费看| 最新国产の精品合集bt伙计| 欧美美女视频在线观看| 日韩精品乱码av一区二区| 狠狠色丁香婷婷综合| 天天综合网天天综合色| 亚洲成a人片在线不卡一二三区| 亚洲欧美日韩国产手机在线|