📄 helphist.pas
字号:
unit HelpHist;
{$O+,F+,S-}
interface
uses Objects, HelpUtil;
const
MaxHistory = 20;
type
PHelpHistory = ^THelpHistory;
THelpHistory = object(TObject)
Items: array[1..MaxHistory] of record
Topic: Word;
Pos1, Pos2: TPos;
Width: Byte
end;
Count: Word;
constructor Init;
constructor Load(var S: TStream);
procedure Store(var S: TStream);
procedure Push(ATopic: Word; APos1, APos2: TPos; AWidth: Word);
procedure Pop(var ATopic: Word; var APos1, APos2: TPos; var AWidth: Word);
function Empty: Boolean;
end;
const
RHelpHistory: TStreamRec = (
ObjType: 10000;
VmtLink: Ofs(TypeOf(THelpHistory)^);
Load: @THelpHistory.Load;
Store: @THelpHistory.Store
);
implementation
constructor THelpHistory.Init;
begin
Count := 0;
end;
constructor THelpHistory.Load(var S: TStream);
begin
S.Read(Count, SizeOf(Count));
S.Read(Items, Count * SizeOf(Items[1]));
end;
procedure THelpHistory.Store(var S: TStream);
begin
S.Write(Count, SizeOf(Count));
S.Write(Items, Count * SizeOf(Items[1]));
end;
procedure THelpHistory.Push(ATopic: Word; APos1, APos2: TPos; AWidth: Word);
begin
if (Count = 0) or (Items[Count].Topic <> ATopic) then
begin
if Count = MaxHistory then
Move(Items[2], Items[1], (MaxHistory - 1) * SizeOf(Items[1]))
else
Inc(Count);
with Items[Count] do
begin
Topic := ATopic;
Pos1 := APos1;
Pos2 := APos2;
Width := AWidth;
end;
end;
end;
procedure THelpHistory.Pop(var ATopic: Word; var APos1, APos2: TPos;
var AWidth: Word);
begin
if Count > 0 then
begin
with Items[Count] do
begin
ATopic := Topic;
APos1 := Pos1;
APos2 := Pos2;
AWidth := Width;
end;
Dec(Count);
end;
end;
function THelpHistory.Empty: Boolean;
begin
Empty := Count = 0;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -