一个修改过简化版的InputQuery(简单实用,用到了Canvas)

主要是觉得在单输入的情况下, 原来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;

http://www.cnblogs.com/hs-kill/p/4707744.html

时间: 2024-10-29 19:10:28

一个修改过简化版的InputQuery(简单实用,用到了Canvas)的相关文章

一个修改过简化版的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 := T

开发一个简单实用的android紧急求助软件

之前女朋友一个人住,不怎么放心,想找一个紧急求助的软件,万一有什么突发情况,可以立即知道.用金山手机卫士的手机定位功能可以知道对方的位置状态,但不能主动发送求助信息,在网上了很多的APK,都是鸡肋功能,都需要解锁.并打开软件,真正的紧急情况可能没有时间来完成这一系列操作. 于是我自己做了一个这样的软件,在紧急情况下,连续按电源键5次即可发送求救短信和位置信息给事先指定的用户,这个操作在裤兜里就能完成.原理很简单,就是设置监听器捕获屏幕的开关,在较短的时间内屏幕开关达到一定次数后,触发手机定位,定

LogCook 一个简单实用的Android日志管理工具

众所周知,日志的管理是软件系统很重要的一部分,千万不可忽略其重要性.完整的日志将会在系统维护中起着异常重要的作用,就好像磨刀不误砍柴工一样,日志就像对系统进行分析的工具,工具便捷了,对系统分析起来就能达到事半功倍的效果.开发者必须要明白日志的价值和意义,万万不可忽略和轻视. LogCook是一款非常简洁实用的Android日记管理工具.LogCook的中文翻译是日志厨师,你可以把它看作是一个日志美食家. 特点 作为一款日志管理工具它最大的特点就是简单实用,与Android原生的日志功能相比较它具

Mac中Git的简单实用(6) --- 分支管理策略

今天我来介绍下Git,Git是一款免费.开源的分布式版本控制系统. 我们在上一个学习了Git分支冲突管理. 这一章,我们要学习Git的Fast-forward模式.保存恢复现场 .测试的feature分支. Mac中Git的简单实用(1) - Git基本命令(1) Mac中Git的简单实用(2) - Git基本命令(2) Mac中Git的简单实用(3) - Github远程仓库 Mac中Git的简单实用(4) - 分支branch管理 Mac中Git的简单实用(5) - Git分支冲突管理 1.

【Android进阶】Junit单元测试环境搭建以及简单实用

单元测试的目的 首先,Junit单元测试要实现的功能,就是用来测试写好的方法是否能够正确的执行,一般多用于对业务方法的测试. 单元测试的环境配置 1.在AndroidManifest清单文件的Application节点下,引入单元测试使用的库 2.在AndroidManifest清单文件与Application节点平行的节点中,添加instrumentation节点 下面是一个完整的配置的代码 <manifest xmlns:android="http://schemas.android.

iOS开发-NSURLConnection和NSURLSession的简单实用

一,NSURLConnection的简单实用 (一).简单请求过程 /// 1.创建url(资源路径) NSURL *url = [NSURL URLWithString:@"http://f.hiphotos.baidu.com/image/pic/item/d6ca7bcb0a46f21ff3649fbaf5246b600d33ae83.jpg"]; /// 2.创建请求 NSURLRequest *request = [NSURLRequest requestWithURL:ur

基于Jquery 简单实用的弹出提示框

引言: 原生的 alert 样子看起来很粗暴,网上也有一大堆相关的插件,但是基本上都是大而全,仅仅几句话可以实现的东西,可能要引入好几十k的文件,所以话了点时间自己写了个弹出效果,放到项目上去发现效果还不错,这里贴出来,做个备忘,有需要的同学可以拿去,也可以作为一个参考. 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.d

ThinkPHP 数据库表结构处理类(简单实用)

<?php /*  * mysql表结构处理类  * 创建数据表,增加,编辑,删除表中字段  *  */ class MysqlManage{ /*  * 创建数据库,并且主键是aid  * table 要查询的表名  */ function createTable($table){ $sql="CREATE TABLE IF NOT EXISTS `$table` (`aid` INT NOT NULL primary key)ENGINE = InnoDB;"; M()-&g

Android 内容提供者(ContentProvider)的简单实用

Android 中的数据库是对应用私有的,自己是无法使用别的应用的数据库的.但是往往有需求要我们使用另外一个应用或者系统应用的数据,这时候就彰显了内容提供者,ContentPrivider的作用,他就是两个应用数据的桥梁,通过内容提供者和内容接受者我们可以在不同应用间传递数据. ContentPrivider也可以视为一种数据存储.它存储数据的方式和使用它的应用程序无关,重要的是应用如何以一致的编程接口,来访问存储其中的数据.内容提供者与数据库的使用差不多,也可以增删改查.而且数据可以存储于数据