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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tntdialogs.pas

?? Delphi知道現在也沒有提供Unicode支持
?? PAS
?? 第 1 頁 / 共 3 頁
字號:

{*****************************************************************************}
{                                                                             }
{    Tnt Delphi Unicode Controls                                              }
{      http://www.tntware.com/delphicontrols/unicode/                         }
{        Version: 2.3.0                                                       }
{                                                                             }
{    Copyright (c) 2002-2007, Troy Wolbrink (troy.wolbrink@tntware.com)       }
{                                                                             }
{*****************************************************************************}

unit TntDialogs;

{$INCLUDE TntCompilers.inc}

interface

{ TODO: TFindDialog and TReplaceDialog. }
{ TODO: Property editor for TTntOpenDialog.Filter }

uses
  Classes, Messages, CommDlg, Windows, Dialogs,
  TntClasses, TntForms, TntSysUtils;

type
{TNT-WARN TIncludeItemEvent}
  TIncludeItemEventW = procedure (const OFN: TOFNotifyExW; var Include: Boolean) of object;

{TNT-WARN TOpenDialog}
  TTntOpenDialog = class(TOpenDialog{TNT-ALLOW TOpenDialog})
  private
    FDefaultExt: WideString;
    FFileName: TWideFileName;
    FFilter: WideString;
    FInitialDir: WideString;
    FTitle: WideString;
    FFiles: TTntStrings;
    FOnIncludeItem: TIncludeItemEventW;
    function GetDefaultExt: WideString;
    procedure SetInheritedDefaultExt(const Value: AnsiString);
    procedure SetDefaultExt(const Value: WideString);
    function GetFileName: TWideFileName;
    procedure SetFileName(const Value: TWideFileName);
    function GetFilter: WideString;
    procedure SetInheritedFilter(const Value: AnsiString);
    procedure SetFilter(const Value: WideString);
    function GetInitialDir: WideString;
    procedure SetInheritedInitialDir(const Value: AnsiString);
    procedure SetInitialDir(const Value: WideString);
    function GetTitle: WideString;
    procedure SetInheritedTitle(const Value: AnsiString);
    procedure SetTitle(const Value: WideString);
    function GetFiles: TTntStrings;
  private
    FProxiedOpenFilenameA: TOpenFilenameA;
  protected
    FAllowDoCanClose: Boolean;
    procedure DefineProperties(Filer: TFiler); override;
    function CanCloseW(var OpenFileName: TOpenFileNameW): Boolean;
    function DoCanClose: Boolean; override;
    procedure GetFileNamesW(var OpenFileName: TOpenFileNameW);
    procedure DoIncludeItem(const OFN: TOFNotifyEx; var Include: Boolean); override;
    procedure WndProc(var Message: TMessage); override;
    function DoExecuteW(Func: Pointer; ParentWnd: HWND): Bool; overload;
    function DoExecuteW(Func: Pointer): Bool; overload;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    function Execute: Boolean; override;
    {$IFDEF COMPILER_9_UP}
    function Execute(ParentWnd: HWND): Boolean; override;
    {$ENDIF}
    property Files: TTntStrings read GetFiles;
  published
    property DefaultExt: WideString read GetDefaultExt write SetDefaultExt;
    property FileName: TWideFileName read GetFileName write SetFileName;
    property Filter: WideString read GetFilter write SetFilter;
    property InitialDir: WideString read GetInitialDir write SetInitialDir;
    property Title: WideString read GetTitle write SetTitle;
    property OnIncludeItem: TIncludeItemEventW read FOnIncludeItem write FOnIncludeItem;
  end;

{TNT-WARN TSaveDialog}
  TTntSaveDialog = class(TTntOpenDialog)
  public
    function Execute: Boolean; override;
    {$IFDEF COMPILER_9_UP}
    function Execute(ParentWnd: HWND): Boolean; override;
    {$ENDIF}
  end;

{ Message dialog }

{TNT-WARN CreateMessageDialog}
function WideCreateMessageDialog(const Msg: WideString; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons): TTntForm;overload;
function WideCreateMessageDialog(const Msg: WideString; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; DefaultButton: TMsgDlgBtn): TTntForm; overload;

{TNT-WARN MessageDlg}
function WideMessageDlg(const Msg: WideString; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer; overload;
function WideMessageDlg(const Msg: WideString; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; DefaultButton: TMsgDlgBtn): Integer; overload;

{TNT-WARN MessageDlgPos}
function WideMessageDlgPos(const Msg: WideString; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer): Integer; overload;
function WideMessageDlgPos(const Msg: WideString; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer; DefaultButton: TMsgDlgBtn): Integer; overload;

{TNT-WARN MessageDlgPosHelp}
function WideMessageDlgPosHelp(const Msg: WideString; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer;
  const HelpFileName: WideString): Integer; overload;
function WideMessageDlgPosHelp(const Msg: WideString; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer;
  const HelpFileName: WideString; DefaultButton: TMsgDlgBtn): Integer; overload;

{TNT-WARN ShowMessage}
procedure WideShowMessage(const Msg: WideString);
{TNT-WARN ShowMessageFmt}
procedure WideShowMessageFmt(const Msg: WideString; Params: array of const);
{TNT-WARN ShowMessagePos}
procedure WideShowMessagePos(const Msg: WideString; X, Y: Integer);

{ Input dialog }

{TNT-WARN InputQuery}
function WideInputQuery(const ACaption, APrompt: WideString;
   var Value: WideString): Boolean;
{TNT-WARN InputBox}
function WideInputBox(const ACaption, APrompt, ADefault: WideString): WideString;

{TNT-WARN PromptForFileName}
function WidePromptForFileName(var AFileName: WideString; const AFilter: WideString = '';
  const ADefaultExt: WideString = ''; const ATitle: WideString = '';
  const AInitialDir: WideString = ''; SaveDialog: Boolean = False): Boolean;

function GetModalParentWnd: HWND;

implementation

uses
  Controls, Forms, Types, SysUtils, Graphics, Consts, Math,
  TntWindows, TntStdCtrls, TntClipBrd, TntExtCtrls,
  {$IFDEF COMPILER_9_UP} WideStrUtils, {$ENDIF} TntWideStrUtils;

function GetModalParentWnd: HWND;
begin
  {$IFDEF COMPILER_9}
  Result := Application.ActiveFormHandle;
  {$ELSE}
  Result := 0;
  {$ENDIF}
  {$IFDEF COMPILER_10_UP}
  if Application.ModalPopupMode <> pmNone then
  begin
    Result := Application.ActiveFormHandle;
  end;
  {$ENDIF}
  if Result = 0 then begin
    Result := Application.Handle;
  end;
end;

var
  ProxyExecuteDialog: TTntOpenDialog;

function ProxyGetOpenFileNameA(var OpenFile: TOpenFilename): Bool; stdcall;
begin
  ProxyExecuteDialog.FProxiedOpenFilenameA := OpenFile;
  Result := False; { as if user hit "Cancel". }
end;

{ TTntOpenDialog }

constructor TTntOpenDialog.Create(AOwner: TComponent);
begin
  inherited;
  FFiles := TTntStringList.Create;
end;

destructor TTntOpenDialog.Destroy;
begin
  FreeAndNil(FFiles);
  inherited;
end;

procedure TTntOpenDialog.DefineProperties(Filer: TFiler);
begin
  inherited;
  TntPersistent_AfterInherited_DefineProperties(Filer, Self);
end;

function TTntOpenDialog.GetDefaultExt: WideString;
begin
  Result := GetSyncedWideString(FDefaultExt, inherited DefaultExt);
end;

procedure TTntOpenDialog.SetInheritedDefaultExt(const Value: AnsiString);
begin
  inherited DefaultExt := Value;
end;

procedure TTntOpenDialog.SetDefaultExt(const Value: WideString);
begin
  SetSyncedWideString(Value, FDefaultExt, inherited DefaultExt, SetInheritedDefaultExt);
end;

function TTntOpenDialog.GetFileName: TWideFileName;
var
  Path: array[0..MAX_PATH] of WideChar;
begin
  if Win32PlatformIsUnicode and NewStyleControls and (Handle <> 0) then begin
    // get filename from handle
    SendMessageW(GetParent(Handle), CDM_GETFILEPATH, SizeOf(Path), Integer(@Path));
    Result := Path;
  end else
    Result := GetSyncedWideString(WideString(FFileName), inherited FileName);
end;

procedure TTntOpenDialog.SetFileName(const Value: TWideFileName);
begin
  FFileName := Value;
  inherited FileName := Value;
end;

function TTntOpenDialog.GetFilter: WideString;
begin
  Result := GetSyncedWideString(FFilter, inherited Filter);
end;

procedure TTntOpenDialog.SetInheritedFilter(const Value: AnsiString);
begin
  inherited Filter := Value;
end;

procedure TTntOpenDialog.SetFilter(const Value: WideString);
begin
  SetSyncedWideString(Value, FFilter, inherited Filter, SetInheritedFilter);
end;

function TTntOpenDialog.GetInitialDir: WideString;
begin
  Result := GetSyncedWideString(FInitialDir, inherited InitialDir);
end;

procedure TTntOpenDialog.SetInheritedInitialDir(const Value: AnsiString);
begin
  inherited InitialDir := Value;
end;

procedure TTntOpenDialog.SetInitialDir(const Value: WideString);

  function RemoveTrailingPathDelimiter(const Value: WideString): WideString;
  var
    L: Integer;
  begin
    // remove trailing path delimiter (except 'C:\')
    L := Length(Value);
    if (L > 1) and WideIsPathDelimiter(Value, L) and not WideIsDelimiter(':', Value, L - 1) then
      Dec(L);
    Result := Copy(Value, 1, L);
  end;

begin
  SetSyncedWideString(RemoveTrailingPathDelimiter(Value), FInitialDir,
    inherited InitialDir, SetInheritedInitialDir);
end;

function TTntOpenDialog.GetTitle: WideString;
begin
  Result := GetSyncedWideString(FTitle, inherited Title)
end;

procedure TTntOpenDialog.SetInheritedTitle(const Value: AnsiString);
begin
  inherited Title := Value;
end;

procedure TTntOpenDialog.SetTitle(const Value: WideString);
begin
  SetSyncedWideString(Value, FTitle, inherited Title, SetInheritedTitle);
end;

function TTntOpenDialog.GetFiles: TTntStrings;
begin
  if (not Win32PlatformIsUnicode) then
    FFiles.Assign(inherited Files);
  Result := FFiles;
end;

function TTntOpenDialog.DoCanClose: Boolean;
begin
  if FAllowDoCanClose then
    Result := inherited DoCanClose
  else
    Result := True;
end;

function TTntOpenDialog.CanCloseW(var OpenFileName: TOpenFileNameW): Boolean;
begin
  GetFileNamesW(OpenFileName);
  FAllowDoCanClose := True;
  try
    Result := DoCanClose;
  finally
    FAllowDoCanClose := False;
  end;
  FFiles.Clear;
  inherited Files.Clear;
end;

procedure TTntOpenDialog.DoIncludeItem(const OFN: TOFNotifyEx; var Include: Boolean);
begin
  // CDN_INCLUDEITEM -> DoIncludeItem() is only be available on Windows 2000 +
  // Therefore, just cast OFN as a TOFNotifyExW, since that's what it really is.
  if Win32PlatformIsUnicode and Assigned(FOnIncludeItem) then
    FOnIncludeItem(TOFNotifyExW(OFN), Include)
end;

procedure TTntOpenDialog.WndProc(var Message: TMessage);
begin
  Message.Result := 0;
  if (Message.Msg = WM_INITDIALOG) and not (ofOldStyleDialog in Options) then begin
    { If not ofOldStyleDialog then DoShow on CDN_INITDONE, not WM_INITDIALOG }
    Exit;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人动漫在线一区| 亚洲国产综合在线| 亚洲卡通欧美制服中文| 亚洲国产精品一区二区久久恐怖片| 久久久精品tv| 国产精品成人一区二区艾草| 国产精品午夜在线观看| 亚洲欧美日韩在线| 日产精品久久久久久久性色| 91亚洲国产成人精品一区二三| 日韩欧美久久久| 日韩高清不卡一区二区三区| 久99久精品视频免费观看| 不卡av在线网| 久久综合久久久久88| 亚洲午夜成aⅴ人片| www.欧美.com| 久久免费视频一区| 日韩成人av影视| 欧美三级午夜理伦三级中视频| 国产欧美一区二区精品性色| 七七婷婷婷婷精品国产| 欧美日韩视频在线第一区 | 天堂蜜桃一区二区三区| 91视视频在线直接观看在线看网页在线看| 欧美久久久久免费| 亚洲电影在线免费观看| 色婷婷狠狠综合| 亚洲一区在线免费观看| 在线观看日韩毛片| 亚洲欧洲制服丝袜| 色婷婷精品久久二区二区蜜臀av| 中文字幕va一区二区三区| 国产成人综合精品三级| 日本一区二区三区高清不卡 | 精品国产乱码久久久久久久 | 欧美日韩一区视频| 亚洲大片精品永久免费| 免费观看久久久4p| 7777精品伊人久久久大香线蕉超级流畅| 国产精品久久久一本精品| 国产剧情在线观看一区二区| 精品国产污污免费网站入口| 亚洲欧洲国产日本综合| 99精品国产91久久久久久| 中文字幕一区二区不卡| av男人天堂一区| 亚洲一区免费在线观看| 色噜噜夜夜夜综合网| 一区二区三区中文字幕在线观看| 精品视频在线视频| 免费精品99久久国产综合精品| 欧美精品日韩一区| 国产精品自拍av| 亚洲男人的天堂在线观看| 欧美午夜影院一区| 国内成人自拍视频| 国产精品毛片高清在线完整版 | 在线视频一区二区三区| 日韩精品一级二级 | 日本欧美一区二区| 国产日产亚洲精品系列| 在线观看国产精品网站| 麻豆视频一区二区| 国产精品国产三级国产aⅴ中文| 欧美三级在线播放| 99久久国产综合色|国产精品| 视频在线在亚洲| 成人欧美一区二区三区黑人麻豆 | 国产suv一区二区三区88区| 亚洲欧洲精品一区二区精品久久久| 亚洲精品一区二区三区精华液 | 欧美日韩精品一区二区天天拍小说| 国产不卡视频在线播放| 欧美aaaaa成人免费观看视频| 亚洲日本丝袜连裤袜办公室| 欧美激情一区二区三区全黄 | 精品久久国产字幕高潮| 在线观看欧美精品| 91污在线观看| www.在线欧美| 91在线porny国产在线看| 国产一区二区三区四区五区美女 | 奇米四色…亚洲| 午夜精品福利一区二区三区蜜桃| 久久日韩精品一区二区五区| 日韩美女主播在线视频一区二区三区 | 91麻豆精品国产91久久久| 欧美日韩成人综合天天影院| 在线免费不卡电影| 91久久精品国产91性色tv| 成人毛片在线观看| 日本精品一区二区三区高清| 欧美日韩一区精品| 91国内精品野花午夜精品| 欧美日韩卡一卡二| 精品日韩成人av| 国产欧美一区二区精品婷婷| 国产欧美日本一区二区三区| 国产精品久久毛片av大全日韩| 亚洲欧美区自拍先锋| 免费成人在线影院| 成人综合在线网站| 欧美日韩国产成人在线免费| 中文字幕一区二区三区不卡在线 | 亚洲婷婷在线视频| 久久国产精品露脸对白| 99久久精品一区| 欧美视频完全免费看| 美国欧美日韩国产在线播放| 成人免费视频国产在线观看| 欧美视频你懂的| 国产精品毛片久久久久久| 一区二区三区四区国产精品| 欧美三区在线观看| 久久亚洲综合av| 天堂va蜜桃一区二区三区漫画版| 九九精品一区二区| 欧美日韩国产大片| 亚洲最色的网站| 日本不卡123| 56国语精品自产拍在线观看| 中文字幕成人av| 国产99一区视频免费| 久久免费视频色| 亚洲黄色片在线观看| 成人午夜看片网址| 看电视剧不卡顿的网站| 精品美女一区二区| 男男成人高潮片免费网站| 欧美高清视频不卡网| 亚洲综合久久av| 欧美撒尿777hd撒尿| 亚洲另类中文字| 91天堂素人约啪| 亚洲高清三级视频| 韩国欧美国产1区| 国产精品理论在线观看| 欧美日韩免费观看一区三区| 麻豆国产精品官网| 日韩美女精品在线| 欧美国产一区在线| 这里只有精品免费| 亚洲精品日产精品乱码不卡| 精品视频999| 国产一区二区三区久久久| 中文字幕日本不卡| 久久人人爽人人爽| 色av成人天堂桃色av| 极品美女销魂一区二区三区| 最新欧美精品一区二区三区| 精品久久久久99| 欧美性色黄大片| 色婷婷av一区二区三区大白胸| 韩日av一区二区| 免费观看一级欧美片| 一区二区不卡在线视频 午夜欧美不卡在| 91精品综合久久久久久| 在线观看成人免费视频| 播五月开心婷婷综合| 一区二区三区产品免费精品久久75| 日本少妇一区二区| 一区二区三区四区蜜桃| 久久久精品免费观看| 精品久久五月天| 91麻豆精品国产91久久久更新时间| 欧洲在线/亚洲| 欧美日韩视频在线一区二区| 欧美日韩在线播放三区四区| 欧美亚洲一区三区| 欧美三级视频在线| 7777精品伊人久久久大香线蕉经典版下载 | 午夜精品一区二区三区电影天堂| 亚洲精品视频在线观看免费| 亚洲男人的天堂网| 亚洲大片在线观看| 久久精品国产亚洲一区二区三区| 久草这里只有精品视频| 成人激情综合网站| 欧美在线免费观看亚洲| 日韩一二三区不卡| 精品国产乱码久久久久久1区2区 | 久久久久国产精品麻豆ai换脸| 国产精品护士白丝一区av| 日本在线不卡一区| www.欧美亚洲| wwwwww.欧美系列| 亚洲成人激情自拍| 大陆成人av片| 欧美精品一区二区三区在线| 亚洲精品高清视频在线观看| 久久精品99国产精品| 日本道色综合久久| 国产精品初高中害羞小美女文| 亚洲精品少妇30p| 色婷婷av久久久久久久| 国产精品人妖ts系列视频| 国产精品2024| 日本一区二区视频在线| 国产精品一区二区久久精品爱涩|