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

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

?? tntdialogs.pas

?? Delphi知道現在也沒有提供Unicode支持
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
const
  mcHorzMargin = 8;
  mcVertMargin = 8;
  mcHorzSpacing = 10;
  mcVertSpacing = 10;
  mcButtonWidth = 50;
  mcButtonHeight = 14;
  mcButtonSpacing = 4;
var
  DialogUnits: TPoint;
  HorzMargin, VertMargin, HorzSpacing, VertSpacing, ButtonWidth,
  ButtonHeight, ButtonSpacing, ButtonCount, ButtonGroupWidth,
  IconTextWidth, IconTextHeight, X, ALeft: Integer;
  B, CancelButton: TMsgDlgBtn;
  IconID: PAnsiChar;
  ATextRect: TRect;
  ThisButtonWidth: integer;
  LButton: TTntButton;
begin
  Result := TTntMessageForm.CreateNew(Application);
  with Result do
  begin
    BorderStyle := bsDialog; // By doing this first, it will work on WINE.
    BiDiMode := Application.BiDiMode;
    Canvas.Font := Font;
    KeyPreview := True;
    Position := poDesigned;
    OnKeyDown := TTntMessageForm(Result).CustomKeyDown;
    DialogUnits := GetAveCharSize(Canvas);
    HorzMargin := MulDiv(mcHorzMargin, DialogUnits.X, 4);
    VertMargin := MulDiv(mcVertMargin, DialogUnits.Y, 8);
    HorzSpacing := MulDiv(mcHorzSpacing, DialogUnits.X, 4);
    VertSpacing := MulDiv(mcVertSpacing, DialogUnits.Y, 8);
    ButtonWidth := MulDiv(mcButtonWidth, DialogUnits.X, 4);
    for B := Low(TMsgDlgBtn) to High(TMsgDlgBtn) do
    begin
      if B in Buttons then
      begin
        ATextRect := Rect(0,0,0,0);
        Tnt_DrawTextW(Canvas.Handle,
          PWideChar(GetButtonCaption(B)), -1,
          ATextRect, DT_CALCRECT or DT_LEFT or DT_SINGLELINE or
          DrawTextBiDiModeFlagsReadingOnly);
        with ATextRect do ThisButtonWidth := Right - Left + 8;
        if ThisButtonWidth > ButtonWidth then
          ButtonWidth := ThisButtonWidth;
      end;
    end;
    ButtonHeight := MulDiv(mcButtonHeight, DialogUnits.Y, 8);
    ButtonSpacing := MulDiv(mcButtonSpacing, DialogUnits.X, 4);
    SetRect(ATextRect, 0, 0, Screen.Width div 2, 0);
    Tnt_DrawTextW(Canvas.Handle, PWideChar(Msg), Length(Msg) + 1, ATextRect,
      DT_EXPANDTABS or DT_CALCRECT or DT_WORDBREAK or
      DrawTextBiDiModeFlagsReadingOnly);
    IconID := IconIDs[DlgType];
    IconTextWidth := ATextRect.Right;
    IconTextHeight := ATextRect.Bottom;
    if IconID <> nil then
    begin
      Inc(IconTextWidth, 32 + HorzSpacing);
      if IconTextHeight < 32 then IconTextHeight := 32;
    end;
    ButtonCount := 0;
    for B := Low(TMsgDlgBtn) to High(TMsgDlgBtn) do
      if B in Buttons then Inc(ButtonCount);
    ButtonGroupWidth := 0;
    if ButtonCount <> 0 then
      ButtonGroupWidth := ButtonWidth * ButtonCount +
        ButtonSpacing * (ButtonCount - 1);
    ClientWidth := Max(IconTextWidth, ButtonGroupWidth) + HorzMargin * 2;
    ClientHeight := IconTextHeight + ButtonHeight + VertSpacing +
      VertMargin * 2;
    Left := (Screen.Width div 2) - (Width div 2);
    Top := (Screen.Height div 2) - (Height div 2);
    if DlgType <> mtCustom then
      Caption := GetMessageCaption(DlgType)
    else
      Caption := TntApplication.Title;
    if IconID <> nil then
      with TTntImage.Create(Result) do
      begin
        Name := 'Image';
        Parent := Result;
        Picture.Icon.Handle := LoadIcon(0, IconID);
        SetBounds(HorzMargin, VertMargin, 32, 32);
      end;
    TTntMessageForm(Result).Message := TTntLabel.Create(Result);
    with TTntMessageForm(Result).Message do
    begin
      Name := 'Message';
      Parent := Result;
      WordWrap := True;
      Caption := Msg;
      BoundsRect := ATextRect;
      BiDiMode := Result.BiDiMode;
      ALeft := IconTextWidth - ATextRect.Right + HorzMargin;
      if UseRightToLeftAlignment then
        ALeft := Result.ClientWidth - ALeft - Width;
      SetBounds(ALeft, VertMargin,
        ATextRect.Right, ATextRect.Bottom);
    end;
    if mbCancel in Buttons then CancelButton := mbCancel else
      if mbNo in Buttons then CancelButton := mbNo else
        CancelButton := mbOk;
    X := (ClientWidth - ButtonGroupWidth) div 2;
    for B := Low(TMsgDlgBtn) to High(TMsgDlgBtn) do
      if B in Buttons then
      begin
        LButton := TTntButton.Create(Result);
        with LButton do
        begin
          Name := ButtonNames[B];
          Parent := Result;
          Caption := GetButtonCaption(B);
          ModalResult := ModalResults[B];
          if B = DefaultButton then
          begin
            Default := True;
            ActiveControl := LButton;
          end;
          if B = CancelButton then
            Cancel := True;
          SetBounds(X, IconTextHeight + VertMargin + VertSpacing,
            ButtonWidth, ButtonHeight);
          Inc(X, ButtonWidth + ButtonSpacing);
          if B = mbHelp then
            OnClick := TTntMessageForm(Result).HelpButtonClick;
        end;
      end;
  end;
end;

function WideCreateMessageDialog(const Msg: WideString; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons): TTntForm;
var
  DefaultButton: TMsgDlgBtn;
begin
  if mbOk in Buttons then DefaultButton := mbOk else
    if mbYes in Buttons then DefaultButton := mbYes else
      DefaultButton := mbRetry;
  Result := WideCreateMessageDialog(Msg, DlgType, Buttons, DefaultButton);
end;

function WideMessageDlg(const Msg: WideString; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; DefaultButton: TMsgDlgBtn): Integer;
begin
  Result := WideMessageDlgPosHelp(Msg, DlgType, Buttons, HelpCtx, -1, -1, '', DefaultButton);
end;

function WideMessageDlg(const Msg: WideString; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
begin
  Result := WideMessageDlgPosHelp(Msg, DlgType, Buttons, HelpCtx, -1, -1, '');
end;

function WideMessageDlgPos(const Msg: WideString; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer; DefaultButton: TMsgDlgBtn): Integer;
begin
  Result := WideMessageDlgPosHelp(Msg, DlgType, Buttons, HelpCtx, X, Y, '', DefaultButton);
end;

function WideMessageDlgPos(const Msg: WideString; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer): Integer;
begin
  Result := WideMessageDlgPosHelp(Msg, DlgType, Buttons, HelpCtx, X, Y, '');
end;

function _Internal_WideMessageDlgPosHelp(Dlg: TTntForm; HelpCtx: Longint; X, Y: Integer;
  const HelpFileName: WideString): Integer;
begin
  with Dlg do
    try
      HelpContext := HelpCtx;
      HelpFile := HelpFileName;
      if X >= 0 then Left := X;
      if Y >= 0 then Top := Y;
      if (Y < 0) and (X < 0) then Position := poScreenCenter;
      Result := ShowModal;
    finally
      Free;
    end;
end;

function WideMessageDlgPosHelp(const Msg: WideString; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer;
  const HelpFileName: WideString; DefaultButton: TMsgDlgBtn): Integer;
begin
  Result := _Internal_WideMessageDlgPosHelp(
    WideCreateMessageDialog(Msg, DlgType, Buttons, DefaultButton), HelpCtx, X, Y, HelpFileName);
end;

function WideMessageDlgPosHelp(const Msg: WideString; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer;
  const HelpFileName: WideString): Integer;
begin
  Result := _Internal_WideMessageDlgPosHelp(
    WideCreateMessageDialog(Msg, DlgType, Buttons), HelpCtx, X, Y, HelpFileName);
end;

procedure WideShowMessage(const Msg: WideString);
begin
  WideShowMessagePos(Msg, -1, -1);
end;

procedure WideShowMessageFmt(const Msg: WideString; Params: array of const);
begin
  WideShowMessage(WideFormat(Msg, Params));
end;

procedure WideShowMessagePos(const Msg: WideString; X, Y: Integer);
begin
  WideMessageDlgPos(Msg, mtCustom, [mbOK], 0, X, Y);
end;

{ Input dialog }

function WideInputQuery(const ACaption, APrompt: WideString; var Value: WideString): Boolean;
var
  Form: TTntForm;
  Prompt: TTntLabel;
  Edit: TTntEdit;
  DialogUnits: TPoint;
  ButtonTop, ButtonWidth, ButtonHeight: Integer;
begin
  Result := False;
  Form := TTntForm.Create(Application);
  with Form do begin
    try
      BorderStyle := bsDialog; // By doing this first, it will work on WINE.
      Canvas.Font := Font;
      DialogUnits := GetAveCharSize(Canvas);
      Caption := ACaption;
      ClientWidth := MulDiv(180, DialogUnits.X, 4);
      Position := poScreenCenter;
      Prompt := TTntLabel.Create(Form);
      with Prompt do
      begin
        Parent := Form;
        Caption := APrompt;
        Left := MulDiv(8, DialogUnits.X, 4);
        Top := MulDiv(8, DialogUnits.Y, 8);
        Constraints.MaxWidth := MulDiv(164, DialogUnits.X, 4);
        WordWrap := True;
      end;
      Edit := TTntEdit.Create(Form);
      with Edit do
      begin
        Parent := Form;
        Left := Prompt.Left;
        Top := Prompt.Top + Prompt.Height + 5;
        Width := MulDiv(164, DialogUnits.X, 4);
        MaxLength := 255;
        Text := Value;
        SelectAll;
      end;
      ButtonTop := Edit.Top + Edit.Height + 15;
      ButtonWidth := MulDiv(50, DialogUnits.X, 4);
      ButtonHeight := MulDiv(14, DialogUnits.Y, 8);
      with TTntButton.Create(Form) do
      begin
        Parent := Form;
        Caption := SMsgDlgOK;
        ModalResult := mrOk;
        Default := True;
        SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,
          ButtonHeight);
      end;
      with TTntButton.Create(Form) do
      begin
        Parent := Form;
        Caption := SMsgDlgCancel;
        ModalResult := mrCancel;
        Cancel := True;
        SetBounds(MulDiv(92, DialogUnits.X, 4), Edit.Top + Edit.Height + 15, ButtonWidth,
          ButtonHeight);
        Form.ClientHeight := Top + Height + 13;
      end;
      if ShowModal = mrOk then
      begin
        Value := Edit.Text;
        Result := True;
      end;
    finally
      Form.Free;
    end;
  end;
end;

function WideInputBox(const ACaption, APrompt, ADefault: WideString): WideString;
begin
  Result := ADefault;
  WideInputQuery(ACaption, APrompt, Result);
end;

function WidePromptForFileName(var AFileName: WideString; const AFilter: WideString = '';
  const ADefaultExt: WideString = ''; const ATitle: WideString = '';
  const AInitialDir: WideString = ''; SaveDialog: Boolean = False): Boolean;
var
  Dialog: TTntOpenDialog;
begin
  if SaveDialog then
  begin
    Dialog := TTntSaveDialog.Create(nil);
    Dialog.Options := Dialog.Options + [ofOverwritePrompt];
  end
  else
    Dialog := TTntOpenDialog.Create(nil);
  with Dialog do
  try
    Title := ATitle;
    DefaultExt := ADefaultExt;
    if AFilter = '' then
      Filter := SDefaultFilter else
      Filter := AFilter;
    InitialDir := AInitialDir;
    FileName := AFileName;
    Result := Execute;
    if Result then
      AFileName := FileName;
  finally
    Free;
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人h动漫精品一区二区| 精品国产百合女同互慰| 69精品人人人人| 中文字幕av一区二区三区免费看| 亚洲色欲色欲www| 久久成人综合网| 日本丶国产丶欧美色综合| 日韩视频一区二区三区在线播放| 国产精品久久久久一区二区三区| 免费观看日韩av| 91国偷自产一区二区三区观看| 久久九九全国免费| 欧美a一区二区| 欧美日韩卡一卡二| 中文字幕在线播放不卡一区| 国产一区在线不卡| 3d动漫精品啪啪| 亚洲综合视频在线观看| 粗大黑人巨茎大战欧美成人| 精品日韩成人av| 秋霞影院一区二区| 欧美日韩一区不卡| 一区二区三区精品| 一本久道中文字幕精品亚洲嫩| 欧美高清在线视频| 国产酒店精品激情| 2022国产精品视频| 精久久久久久久久久久| 日韩欧美电影一区| 免费欧美在线视频| 日韩一区二区三区在线观看| 天堂成人国产精品一区| 欧美日韩视频专区在线播放| 亚洲综合色视频| 精品视频一区二区不卡| 亚洲一区二区三区四区在线观看| 91久久精品一区二区三| 亚洲精品精品亚洲| 日本精品一区二区三区高清| 亚洲蜜臀av乱码久久精品蜜桃| 91丨九色丨蝌蚪富婆spa| 亚洲欧洲国产专区| 91视频免费看| 亚洲线精品一区二区三区| 精品视频999| 奇米影视一区二区三区| 精品国产乱码久久久久久闺蜜 | 国产精品1区2区| 久久久精品综合| 成人免费三级在线| 综合久久久久久久| 欧美日韩精品三区| 久久99精品久久久久婷婷| 国产婷婷色一区二区三区四区| 成人免费高清视频在线观看| 亚洲免费观看高清完整版在线观看熊 | 岛国精品一区二区| 亚洲精品成a人| 国产精品第一页第二页第三页| 尤物视频一区二区| 国产成人精品1024| 国产欧美精品国产国产专区 | 国产成人精品亚洲日本在线桃色| 日韩欧美国产成人一区二区| 国产亚洲精品福利| 麻豆91在线播放免费| 国产精品1区二区.| 日韩免费高清av| 久久综合久久99| 久久久国产精品不卡| 亚洲日本欧美天堂| 亚洲欧美成aⅴ人在线观看 | 欧美日韩久久不卡| 午夜精品国产更新| 国产成人三级在线观看| 最新国产精品久久精品| 欧美高清你懂得| 国产精品一区一区| 性久久久久久久久久久久| 国产日韩欧美高清| 欧美精品乱码久久久久久按摩| 国产精品综合一区二区| 亚洲福利一区二区三区| 国产色综合一区| 欧美精品视频www在线观看| www.亚洲免费av| 精品一区二区免费| 亚洲国产精品久久艾草纯爱 | 国产一区二区三区黄视频 | 中文字幕精品一区二区三区精品 | 日韩 欧美一区二区三区| 国产精品不卡视频| 精品成人私密视频| 欧美精品一级二级三级| 在线观看亚洲a| 成人精品视频一区二区三区 | 91国产精品成人| 国产91在线观看| 麻豆高清免费国产一区| 亚洲第一会所有码转帖| 亚洲精品视频在线| 国产精品理伦片| 国产清纯美女被跳蛋高潮一区二区久久w | 一区二区三区蜜桃网| 亚洲欧美在线视频观看| 国产日韩av一区二区| 2023国产一二三区日本精品2022| 777xxx欧美| 91精品一区二区三区在线观看| 欧美影院一区二区三区| 在线观看国产日韩| 欧美视频一区在线| 欧美亚洲自拍偷拍| 欧美在线观看一区二区| 欧美丝袜第三区| 欧美日韩亚洲另类| 在线播放91灌醉迷j高跟美女 | 久久九九99视频| 日韩欧美的一区| 欧美α欧美αv大片| 日韩精品一区二区在线| 精品国产一区二区三区不卡| 欧美xxx久久| 国产亚洲精品aa午夜观看| 欧美激情在线看| 国产精品理论片| 一区二区成人在线| 亚洲综合在线免费观看| 亚洲国产精品久久久久秋霞影院 | 国产一区二区调教| 国产成人日日夜夜| 99久久久国产精品免费蜜臀| 99国产麻豆精品| 欧美中文字幕不卡| 8v天堂国产在线一区二区| 久久久亚洲高清| 亚洲视频综合在线| 丝袜美腿一区二区三区| 美国一区二区三区在线播放| 国产久卡久卡久卡久卡视频精品| a级高清视频欧美日韩| 欧美午夜宅男影院| 欧美一级视频精品观看| 日本一区二区电影| 亚洲va天堂va国产va久| 国产综合久久久久久久久久久久| 成人不卡免费av| 911精品国产一区二区在线| 国产亚洲美州欧州综合国| 亚洲一区二区三区四区在线免费观看 | 日韩欧美国产三级电影视频| 亚洲国产精品v| 婷婷国产v国产偷v亚洲高清| 国产麻豆视频精品| 欧美日韩午夜在线| 中文字幕欧美三区| 午夜av一区二区| 高清免费成人av| 制服丝袜av成人在线看| 中文字幕av一区二区三区| 三级成人在线视频| gogogo免费视频观看亚洲一| 日韩免费一区二区| 亚洲乱码日产精品bd| 国产精品亚洲а∨天堂免在线| 在线视频观看一区| 国产精品美女久久久久久久网站| 日韩成人一区二区三区在线观看| 不卡大黄网站免费看| 欧美精品一区二区在线播放| 亚洲一区二区三区小说| av电影在线观看一区| 欧美成人一区二区三区片免费 | 欧美丰满美乳xxx高潮www| 国产精品国产精品国产专区不蜜 | 欧美精品在欧美一区二区少妇| 中文在线资源观看网站视频免费不卡 | 一本色道久久综合亚洲91 | 不卡一区二区三区四区| 精品久久五月天| 亚洲成av人片在线观看无码| 91在线你懂得| 日本一区二区在线不卡| 麻豆精品新av中文字幕| 欧美久久免费观看| 亚洲一级片在线观看| 97久久久精品综合88久久| 久久久777精品电影网影网| 日本不卡不码高清免费观看| 欧美色爱综合网| 亚洲成人av电影在线| 欧洲亚洲国产日韩| 亚洲精品一二三区| 在线观看亚洲一区| 亚洲黄色小视频| 在线观看91视频| 亚洲国产中文字幕在线视频综合| 91黄色免费看| 亚洲成a人v欧美综合天堂下载| 欧美日韩国产一级二级|