📄 a2.pas
字号:
unit A2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Grids;
type
TfmA2 = class(TForm)
LbStr: TLabel;
edtStr: TEdit;
edtNum: TEdit;
LbNum: TLabel;
btnSty: TBitBtn;
sg: TStringGrid;
procedure FormActivate(Sender: TObject);
procedure edtStrKeyPress(Sender: TObject; var Key: Char);
procedure edtNumKeyPress(Sender: TObject; var Key: Char);
procedure btnStyClick(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;
var
fmA2: TfmA2;
sgColCount: byte;
//////////////////////////////////////////////////////////////////////////
implementation
{$R *.DFM}
procedure TfmA2.FormActivate(Sender: TObject);
begin
LbNum.Caption:='Num'; edtNum.Text:='0';
LbStr.Caption:='';
end;
// ========= edtNum 的 字符键 事件 =====================
procedure TfmA2.edtNumKeyPress(Sender: TObject; var Key: Char);
var
s: string; n: integer;
begin
if key=#13 {Enter键} then //*1
begin
s:=edtNum.Text; //*2
n:=StrToInt(s);
sg.Cells[sgColCount,0]:=s;
sg.Cells[sgColCount,1]:=IntToStr(n*2); // 整数 ==> 字符串
sg.Cells[sgColCount,2]:=FloatToStr(n/3); // 实数 ==> 字符串
sg.Cells[sgColCount,3]:=FormatFloat('#,#0.##',n/3);// 实数 ==>格式化字符串
sg.Col:=sgColCount; // 此句有何作用? 去掉后效果有什么变化?
// 实际上, 本段还含有bug, 如何修改程序?
sgColCount:=sgColCount+1;
if sgColCount>5 then
sgColCount:=0;
end;
if not (Key in ['0'..'9']) then
key:=#0;
end;
// ========= btnSty 的 单击事件 =====================
procedure TfmA2.btnStyClick(Sender: TObject);
Const MyFontStyle=[fsBold, fsItalic, fsUnderline, fsStrikeOut];
var
set0: set of Graphics.TFontStyle; //任何组件的字样式都是该类型
s: string; c: char; i: byte;
begin
s:=edtstr.Text;
if s='' then
Exit; //退出本过程
set0:=[];
for i:=0 to Length(edtstr.Text)-1 do
begin
c:=s[i+1];
case c of
'0': set0:=set0+[fsBold];
'1': set0:=set0+[fsItalic];
'2': set0:=set0+[fsUnderline];
'3': set0:=set0+[fsStrikeOut];
else
if c<>' ' then
set0:=[];
end;
end;
FmA2.Font.Style:=set0;
end;
// ========= edtStr 的 字符键 事件 =====================
procedure TfmA2.edtStrKeyPress(Sender: TObject; var Key: Char);
var
s,s2: string;
n: byte;
begin
if key=#13 then
begin
s2:=Trim(edtStr.Text);
if s2='del' then
LbStr.Caption:=''
else
begin
s:=LbStr.Caption;
s:=s+'-'+edtStr.Text;
n:=Length(LbStr.Caption);
if n > 20 then
s:=Copy(s,15,5);
LbStr.Caption:=s;
end;
if s2='up' then
edtStr.Top:=edtStr.Top-22;
if s2='dn' then
edtStr.Top:=edtStr.Top+22;
if s2='large' then
begin
edtStr.width:=edtStr.width+11;
edtStr.Height:=edtStr.Height+5;
end;
end;
if (key=#27{Esc键}) or (key=#13) then
edtStr.Text:='';
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -