zoukankan      html  css  js  c++  java
  • 一个修改过简化版的InputQuery

    主要是觉得在单输入的情况下, 原来InputQuery输入框左边的文本太难看了......

      function _InputQuery(const ACaption: string; const APrompt: string; var AValue: string): Boolean;
      var
        nForm: TForm;
        nEdit: TEdit;
        nTop: Integer;
        nTextMetric: TTextMetric;
      begin
        Result := False;
        nForm := TForm.CreateNew(Application);
        with nForm do
        try
          Canvas.Font := Font;
          BorderStyle := bsDialog;
          Caption := ACaption;
          ClientWidth := 256;
          PopupMode := pmAuto;
          Position := poScreenCenter;
          nEdit := nil;
    
          GetTextMetrics(Canvas.Handle, nTextMetric);
    
          nTop := nTextMetric.tmAscent + 1;
    
          nEdit := TEdit.Create(nForm);
          with nEdit do
          begin
            Parent := nForm;
            Left := 8;
            Top := nTop;
            Width := nForm.ClientWidth - 16;
            MaxLength := 255;
            Text := AValue;
            SelectAll;
            Inc(nTop, Height + 4);
          end;
    
          if APrompt <> '' then
          begin
            with TLabel.Create(nForm) do
            begin
              Parent := nForm;
              AutoSize := False;
              Caption := APrompt;
              Font.Color := clGrayText;
              Left := 8;
              Top := nTop;
              Width := nForm.ClientWidth - 16;
              WordWrap := False;
              Inc(nTop, Height + 15);
            end;
          end;
    
          with TButton.Create(nForm) do
          begin
            Parent := nForm;
            Caption := '确定';
            ModalResult := mrOk;
            Default := True;
            SetBounds(nForm.ClientWidth - Width * 2 - 8 - 4, nTop, Width, Height);
          end;
          with TButton.Create(nForm) do
          begin
            Parent := nForm;
            Caption := '取消';
            ModalResult := mrCancel;
            Cancel := True;
            SetBounds(nForm.ClientWidth - Width - 8, nTop, Width, Height);
            nForm.ClientHeight := Top + Height + nTextMetric.tmAscent;
          end;
          if ShowModal = mrOk then
          begin
            AValue := nEdit.Text;
            Result := True;
          end;
        finally
          nForm.Free;
        end;
      end;
  • 相关阅读:
    STL之vector
    [洛谷P3942] 将军令
    [洛谷P2127] 序列排序
    [USACO07FEB]新牛棚Building A New Barn
    [洛谷P1120] 小木棍 [数据加强版]
    [洛谷P1438] 无聊的数列
    我的Emacs配置
    [CQOI2015]任务查询系统
    可持久化数组入门
    学习openstack(六)
  • 原文地址:https://www.cnblogs.com/lzl_17948876/p/4707744.html
Copyright © 2011-2022 走看看