?? dechexfrm.pas
字號:
unit DecHexFrm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, ComCtrls;
type
TDecHexForm = class(TForm)
StringGrid: TStringGrid;
StatusBar: TStatusBar;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure StringGridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure StringGridSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
DecHexForm: TDecHexForm;
procedure ShowDecHexForm;
implementation
{$R *.DFM}
procedure ShowDecHexForm;
begin
if DecHexForm <> nil then
begin
DecHexForm.WindowState := wsNormal;
DecHexForm.BringToFront;
Exit;
end;
DecHexForm := TDecHexForm.Create(Application);
DecHexForm.Show;
end;
procedure TDecHexForm.FormCreate(Sender: TObject);
var
TempCanSelect: Boolean;
begin
StringGrid.ClientWidth := StringGrid.ColCount * (StringGrid.DefaultColWidth + 1);
StringGrid.ClientHeight := StringGrid.RowCount * (StringGrid.DefaultRowHeight + 1);
StringGrid.Left := 0;
StringGrid.Top := 0;
ClientWidth := StringGrid.Width;
ClientHeight := StringGrid.Height + StatusBar.Height;
StringGridSelectCell(StringGrid, 1, 1, TempCanSelect);
end;
procedure TDecHexForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_ESCAPE then Close;
end;
procedure TDecHexForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
DecHexForm := nil;
end;
procedure TDecHexForm.StringGridDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
S: string;
W, H: Integer;
begin
W := Rect.Right - Rect.Left + 1;
H := Rect.Bottom - Rect.Top + 1;
with Sender as TStringGrid do
begin
if ARow = 0 then
begin
if ACol > 0 then
begin
S := IntToStr(ACol - 1);
Canvas.TextOut(Rect.Left + W div 2 + Canvas.TextWidth('0') - Canvas.TextWidth(S), Rect.Top + H div 2 - Canvas.TextHeight(S) div 2, S);
end;
end else
begin
if ACol = 0 then
begin
S := IntToStr((ARow-1) * 16);
Canvas.TextOut(Rect.Right - Canvas.TextWidth(S) - 3, Rect.Top + H div 2 - Canvas.TextHeight(S) div 2, S);
end else
begin
S := IntToHex((ARow - 1) * 16 + ACol - 1, 2);
Canvas.TextOut(Rect.Left + W div 2 - Canvas.TextWidth(S) div 2, Rect.Top + H div 2 - Canvas.TextHeight(S) div 2, S);
end;
end;
end;
end;
procedure TDecHexForm.StringGridSelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
var
Dec: Integer;
begin
Dec := (ARow - 1) * 16 + ACol - 1;
StatusBar.SimpleText := '十進制數:' + Format('%3d', [Dec]) + ' ' +
'十六進制數:' + IntToHex(Dec, 2);
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -