亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩和的一区二区| 91女神在线视频| 国产成人在线看| 91视频观看视频| 欧美日韩免费不卡视频一区二区三区| 欧美日韩精品欧美日韩精品一综合| 欧美一区二区三区四区高清| 久久一日本道色综合| 亚洲欧洲中文日韩久久av乱码| 亚洲国产日韩精品| 国产成人综合精品三级| 欧美亚洲动漫另类| 久久伊99综合婷婷久久伊| 亚洲麻豆国产自偷在线| 激情综合色播激情啊| 91在线免费视频观看| 日韩女优制服丝袜电影| 亚洲男人都懂的| 亚洲夂夂婷婷色拍ww47| 国产精品一线二线三线| 欧美一a一片一级一片| 国产视频亚洲色图| 五月激情丁香一区二区三区| 国产成人啪免费观看软件| 欧美日韩大陆一区二区| 日本一区二区三区高清不卡 | 成人免费小视频| 蓝色福利精品导航| 欧美亚洲禁片免费| 亚洲欧美自拍偷拍| 国产一区二区免费视频| 欧美一区二区三区四区久久| 夜夜精品视频一区二区 | 亚洲国产日产av| 91在线视频免费观看| 久久久99免费| 三级不卡在线观看| 欧美在线看片a免费观看| 亚洲欧洲性图库| 国产乱国产乱300精品| 欧美一区二区三区四区在线观看| 亚洲综合免费观看高清完整版 | 国产一区二区网址| 日韩情涩欧美日韩视频| 亚洲国产精品影院| 风间由美一区二区av101| 亚洲精品一线二线三线| 欧美aaa在线| 日韩一区二区三区免费看| 亚洲一区免费视频| 91福利在线看| 亚洲一区二区三区精品在线| 色综合久久综合| 国产精品日产欧美久久久久| 国产成人一级电影| 国产丝袜美腿一区二区三区| 国产伦精一区二区三区| 国产日韩欧美一区二区三区综合| 九色综合狠狠综合久久| 欧美xxxxx牲另类人与| 激情文学综合插| 国产亚洲欧美一区在线观看| 七七婷婷婷婷精品国产| 日韩精品最新网址| 国产在线麻豆精品观看| 久久久精品国产免费观看同学| 国产成人免费在线| 国产精品视频你懂的| 91免费版在线看| 亚洲午夜激情网页| 91精品欧美一区二区三区综合在| 亚洲v日本v欧美v久久精品| 7777精品伊人久久久大香线蕉的| 秋霞国产午夜精品免费视频| www日韩大片| aaa欧美日韩| 亚洲大尺度视频在线观看| 91精品国产乱码| 麻豆国产欧美一区二区三区| 日本一区二区三区久久久久久久久不| 91亚洲精品乱码久久久久久蜜桃| 亚洲国产日韩精品| 精品日韩av一区二区| 丁香网亚洲国际| 一区二区三区四区亚洲| 日韩免费电影网站| 99久久99久久综合| 天堂在线一区二区| 国产欧美一区二区精品秋霞影院| 91福利视频网站| 国产精一品亚洲二区在线视频| 亚洲欧洲精品一区二区三区不卡| 欧美日韩亚洲综合| 国产精品18久久久久久vr| 亚洲欧美激情小说另类| 日韩一级高清毛片| 色综合视频一区二区三区高清| 久久精品久久99精品久久| 亚洲色图在线播放| 日韩三级在线免费观看| 成人免费毛片高清视频| 亚洲色大成网站www久久九九| 日韩欧美中文一区| 在线中文字幕一区| 国产激情视频一区二区在线观看 | 国精产品一区一区三区mba视频 | 4438x成人网最大色成网站| 成人一区二区视频| 免费在线观看精品| 国产精品视频看| 精品国产99国产精品| 欧美丝袜第三区| 91色综合久久久久婷婷| 国产精品一区二区三区乱码| 日韩国产精品大片| 亚洲伊人伊色伊影伊综合网| 国产精品色婷婷久久58| 欧美二区三区的天堂| 99精品偷自拍| 粗大黑人巨茎大战欧美成人| 久久不见久久见免费视频7| 午夜精品福利一区二区蜜股av| 亚洲欧洲色图综合| 国产精品视频一区二区三区不卡| 亚洲精品在线观看视频| 日韩西西人体444www| 色欧美片视频在线观看| 99综合影院在线| 丁香天五香天堂综合| 国产伦精一区二区三区| 免费观看一级特黄欧美大片| 日本伊人精品一区二区三区观看方式 | 国产成人激情av| 国产91在线看| 成人中文字幕在线| 国产精品一品视频| 国产酒店精品激情| 国产一区二区美女| 奇米888四色在线精品| 国产伦精品一区二区三区免费| 成人精品视频网站| 视频一区中文字幕| 五月天国产精品| 美女一区二区三区| 国产91精品露脸国语对白| 色综合天天综合狠狠| 欧美怡红院视频| 精品av综合导航| 中文字幕一区二区三区四区不卡 | 亚洲高清免费一级二级三级| 亚洲国产精品久久久久秋霞影院| 另类专区欧美蜜桃臀第一页| eeuss国产一区二区三区| 欧美日韩精品二区第二页| 久久婷婷久久一区二区三区| 国产精品国产三级国产专播品爱网 | 国产视频一区在线观看| 亚洲精品国产a久久久久久 | 欧美一级高清大全免费观看| 国产精品久久久久久久久图文区| 一区二区三区产品免费精品久久75| 日本中文字幕一区二区有限公司| 成人一区在线观看| 欧美一区二区三区视频在线| 国产精品青草久久| 美美哒免费高清在线观看视频一区二区| 国产精品一二三区| 69堂成人精品免费视频| 国产精品传媒入口麻豆| 久久国产夜色精品鲁鲁99| 欧美午夜精品久久久久久超碰| 久久久久久久久免费| 日韩精品一二三| 色欧美日韩亚洲| 国产精品妹子av| 国产精品自产自拍| 日韩西西人体444www| 亚洲一二三四在线观看| 成人午夜在线播放| 久久久精品蜜桃| 蜜臀av一区二区| 6080日韩午夜伦伦午夜伦| 一区二区国产视频| 99国产精品国产精品久久| 久久久精品黄色| 精品一区二区成人精品| 欧美高清视频不卡网| 亚洲精品日韩一| 91色视频在线| 亚洲欧美日韩在线不卡| 成人黄色av电影| 国产精品伦理在线| 福利一区在线观看| 欧美国产视频在线| 国产91精品一区二区| 中文无字幕一区二区三区| 国产精品99久| 国产精品天干天干在观线| 成人av网站大全| 最新不卡av在线|