📄 numbaseconvfrm.pas
字号:
unit NumBaseConvFrm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ChildFrm, NumBase, Global;
type
TNumBaseConvForm = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
DecEdit: TEdit;
Label2: TLabel;
HexEdit: TEdit;
Label3: TLabel;
OctEdit: TEdit;
Label4: TLabel;
BinEdit: TEdit;
OkButton: TButton;
CancelButton: TButton;
ClearButton: TButton;
procedure CancelButtonClick(Sender: TObject);
procedure OkButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure DecEditEnter(Sender: TObject);
procedure HexEditEnter(Sender: TObject);
procedure OctEditEnter(Sender: TObject);
procedure BinEditEnter(Sender: TObject);
procedure ClearButtonClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
FFromNumBase: TNumBase;
procedure FillText(V: Integer);
public
{ Public declarations }
end;
var
NumBaseConvForm: TNumBaseConvForm;
procedure ShowNumBaseConvForm; overload;
procedure ShowNumBaseConvForm(Value: Integer); overload;
implementation
uses Misc;
{$R *.DFM}
procedure ShowNumBaseConvForm;
begin
if NumBaseConvForm <> nil then
begin
NumBaseConvForm.WindowState := wsNormal;
NumBaseConvForm.BringToFront;
Exit;
end;
NumBaseConvForm := TNumBaseConvForm.Create(Application);
NumBaseConvForm.Show;
end;
procedure ShowNumBaseConvForm(Value: Integer);
begin
if NumBaseConvForm <> nil then
begin
NumBaseConvForm.WindowState := wsNormal;
NumBaseConvForm.BringToFront;
Exit;
end;
NumBaseConvForm := TNumBaseConvForm.Create(Application);
NumBaseConvForm.FillText(Value);
NumBaseConvForm.Show;
end;
procedure TNumBaseConvForm.FillText(V: Integer);
var
S: string;
begin
DecEdit.Text := IntToStr(V);
IntToStrAsHex(S, V);
HexEdit.Text := S;
IntToStrAsOct(S, V);
OctEdit.Text := S;
IntToStrAsBin(S, V);
BinEdit.Text := S;
end;
procedure TNumBaseConvForm.CancelButtonClick(Sender: TObject);
begin
Close;
end;
procedure TNumBaseConvForm.OkButtonClick(Sender: TObject);
var
V: Integer;
Ok: Boolean;
begin
Ok := False;
case FFromNumBase of
raDec:
Ok := StrToIntAsDec(V, DecEdit.Text);
raHex:
Ok := StrToIntAsHex(V, HexEdit.Text);
raOct:
Ok := StrToIntAsOct(V, OctEdit.Text);
raBin:
Ok := StrToIntAsBin(V, BinEdit.Text);
end;
if Ok then FillText(V)
else begin
MsgBox('数字串中含有不正确的字符。');
end;
case FFromNumBase of
raDec:
begin
DecEdit.SelectAll;
DecEdit.SetFocus;
end;
raHex:
begin
HexEdit.SelectAll;
HexEdit.SetFocus;
end;
raOct:
begin
OctEdit.SelectAll;
OctEdit.SetFocus;
end;
raBin:
begin
BinEdit.SelectAll;
BinEdit.SetFocus;
end;
end;
end;
procedure TNumBaseConvForm.ClearButtonClick(Sender: TObject);
begin
DecEdit.Text := '';
HexEdit.Text := '';
OctEdit.Text := '';
BinEdit.Text := '';
DecEdit.SetFocus;
end;
procedure TNumBaseConvForm.FormCreate(Sender: TObject);
begin
FFromNumBase := raDec;
end;
procedure TNumBaseConvForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
NumBaseConvForm := nil;
end;
procedure TNumBaseConvForm.DecEditEnter(Sender: TObject);
begin
FFromNumBase := raDec;
end;
procedure TNumBaseConvForm.HexEditEnter(Sender: TObject);
begin
FFromNumBase := raHex;
end;
procedure TNumBaseConvForm.OctEditEnter(Sender: TObject);
begin
FFromNumBase := raOct;
end;
procedure TNumBaseConvForm.BinEditEnter(Sender: TObject);
begin
FFromNumBase := raBin;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -