📄 radixconvfrm.pas
字号:
unit RadixConvFrm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, HexChFrm, Radix;
type
TRadixConvForm = 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 }
FFromRadix: TRadix;
procedure FillText(V: Cardinal);
public
{ Public declarations }
end;
var
RadixConvForm: TRadixConvForm;
procedure ShowRadixConvForm; overload;
procedure ShowRadixConvForm(Value: Cardinal); overload;
implementation
{$R *.DFM}
procedure ShowRadixConvForm;
begin
if RadixConvForm <> nil then
begin
RadixConvForm.WindowState := wsNormal;
RadixConvForm.BringToFront;
Exit;
end;
RadixConvForm := TRadixConvForm.Create(Application);
RadixConvForm.Show;
end;
procedure ShowRadixConvForm(Value: Cardinal);
begin
if RadixConvForm <> nil then
begin
RadixConvForm.WindowState := wsNormal;
RadixConvForm.BringToFront;
Exit;
end;
RadixConvForm := TRadixConvForm.Create(Application);
RadixConvForm.FillText(Value);
RadixConvForm.Show;
end;
procedure TRadixConvForm.FillText(V: Cardinal);
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 TRadixConvForm.CancelButtonClick(Sender: TObject);
begin
Close;
end;
procedure TRadixConvForm.OkButtonClick(Sender: TObject);
var
V: Cardinal;
Ok: Boolean;
begin
Ok := False;
case FFromRadix 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
MessageBox(Handle, '数字串中含有非法字符。', '错误', 48);
end;
case FFromRadix 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 TRadixConvForm.ClearButtonClick(Sender: TObject);
begin
DecEdit.Text := '';
HexEdit.Text := '';
OctEdit.Text := '';
BinEdit.Text := '';
DecEdit.SetFocus;
end;
procedure TRadixConvForm.FormCreate(Sender: TObject);
begin
FFromRadix := raDec;
end;
procedure TRadixConvForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
RadixConvForm := nil;
end;
procedure TRadixConvForm.DecEditEnter(Sender: TObject);
begin
FFromRadix := raDec;
end;
procedure TRadixConvForm.HexEditEnter(Sender: TObject);
begin
FFromRadix := raHex;
end;
procedure TRadixConvForm.OctEditEnter(Sender: TObject);
begin
FFromRadix := raOct;
end;
procedure TRadixConvForm.BinEditEnter(Sender: TObject);
begin
FFromRadix := raBin;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -