编程日日帖(39)

软件世界

  Delphi  输入指定精度数字

  Delphi是常用编程软件之一,它提供了许多控件。但控件本身提供的功能往往不能满足实际编程需要,这就要求程序员根据具体情况编写相应代码扩充其功能。如:Delphi提供的TEdit控件,在收费等软件编写中,需要输入指定精度的数字。要实现这个目标可以在TEdit控件的OnKeyPress事件中对输入进行控制,具体代码如下:

  procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

  const precision=2; //允许小数点后精确到两位

  var st1:string;

  num1:integer;

  begin

  if not(key in['0'..'9','.',#8]) then

  //若不是数字、点和BackSpace键,将该输入设置为空

  begin

  key:= #0;

  end

  else

  begin

  //st1存放edit控件当前值,若当前控件为edit2,则代码相应改动。

  st1:=edit1.Text ;

  //如果前面已输入点,则当前输入字符为点时,设置为空;

  //当前输入为数字时,若达到精度,也设置为空。

  if (pos('.',st1)<>0) then

  begin

  if (key in['.']) then key:=#0;

  if (key in['0'..'9']) then

  begin

  num1:=length(st1);

  num1:=num1-pos('.',st1);

  if (num1=precision) then key:=#0;

  end;

  end;

  end;

  end;

  以上代码在Delphi7+WinXP下编译、运行、测试通过。(江苏 顾钢)

  Borland C++Builder  获得电脑可用内存信息

  在C++Builder中,我们可以通过调用API方便地实现一些系统功能。如果想在程序中获得电脑可用内存的信息,该如何做呢?请看下面的示例代码。

  AnsiString MemFree()

  {

  //TODO: Add your source code here

  AnsiString FreeMem;

  MEMORYSTATUS memory;

  memory.dwLength = sizeof(memory);//内存的大小

  GlobalMemoryStatus(&memory);

  unsigned int value2 = 0;

  unsigned int value1 = memory.dwAvailPhys/1024;//可用内存的大小

  if (value1 >= 1000){

  value2 = value1/1000;//对内存大小处理输出

  value1 = (value1 - (value2 *1000.0));

  FreeMem = AnsiString(value2) + “,” + AnsiString(value1) + “ KB”;

  }

  else FreeMem = AnsiString(value1) + “ KB”;

  return FreeMem;

  }  (湖北 成冲云)

  VB  文本框的使用

  文本框(textbox)是我们常用的一个控件,虽然使用简单,但也有不少学问,就让我们来了解一下:

  1.Text文本框容量知多少

  文本框中输入的字符最多为2048个。若将控件的MultiLine属性设置为True,则可输入多达32KB的文本。

  2.如何将文本换行

  在文本和后面加上VBcr+VBlf,只要用上面的形式就可以使文本换行了,后面的两个键值合起来是个回车。

  例:有一个文本框TxtList,通过下面的语句就可以使其上一次输入的文字和本次的在不同的行上了。

  TxtList.Text = TxtList.Text + vbCr + vbLf

  此种方法也适用于其他的控件。

  3.实现选中所有文字的功能

  Private Sub Text1_GotFocus()

  Text1.SelStart = 0

  Text1.SelLength = Len(Text1.Text) ’过程调用

  End Sub

  文本框虽小,功能却不少,只要用心,会有所发现的!(山东 赵玉勇)