📄 rvclasses.pas
字号:
unit RVClasses;
interface
uses Classes, Graphics;
{$I RV_Defs.inc}
type
TRVList = class (TList)
public
procedure Clear; {$IFDEF RICHVIEWDEF4}override;{$ENDIF}
procedure Delete(Index: Integer);
procedure DeleteAsPointer(Index: Integer);
destructor Destroy; override;
end;
TRVIntegerList = class(TList)
private
function Get(Index: Integer): Integer;
procedure Put(Index: Integer; const Value: Integer);
public
constructor CreateEx(Count, Value: Integer);
constructor CreateCopy(Source:TRVIntegerList);
procedure Sort;
procedure InitWith(Value, Count: Integer);
procedure Fill(Value: Integer);
procedure Add(Value: Integer);
function AddUnique(Value: Integer): Integer;
procedure Insert(Index, Value: Integer);
procedure Assign(Source:TRVIntegerList);
property Items[Index: Integer]: Integer read Get write Put; default;
end;
TRVColorList = class (TRVIntegerList)
public
procedure AddUnique(Value: Integer);
end;
implementation
function SortIntegers(Item1, Item2: Pointer): Integer;
begin
Result := Integer(Item1)-Integer(Item2);
end;
{================================= TRVList ====================================}
procedure TRVList.Clear;
var i: Integer;
begin
for i := 0 to Count-1 do
TObject(Items[i]).Free;
inherited Clear;
end;
{------------------------------------------------------------------------------}
procedure TRVList.Delete(Index: Integer);
begin
TObject(Items[Index]).Free;
inherited Delete(Index);
end;
{------------------------------------------------------------------------------}
procedure TRVList.DeleteAsPointer(Index: Integer);
begin
inherited Delete(Index);
end;
{------------------------------------------------------------------------------}
destructor TRVList.Destroy;
begin
Clear;
inherited Destroy;
end;
{============================== TRVIntegerList =================================}
procedure TRVIntegerList.Add(Value: Integer);
begin
inherited Add(Pointer(Value));
end;
{------------------------------------------------------------------------------}
procedure TRVIntegerList.Insert(Index, Value: Integer);
begin
inherited Insert(Index, Pointer(Value));
end;
{------------------------------------------------------------------------------}
function TRVIntegerList.Get(Index: Integer): Integer;
begin
Result := Integer(inherited Get(Index));
end;
{------------------------------------------------------------------------------}
procedure TRVIntegerList.Put(Index: Integer; const Value: Integer);
begin
inherited Put(Index, Pointer(Value));
end;
{------------------------------------------------------------------------------}
constructor TRVIntegerList.CreateEx(Count, Value: Integer);
begin
inherited Create;
Capacity := Count;
while Count>0 do begin
Add(Value);
dec(Count);
end;
end;
{------------------------------------------------------------------------------}
constructor TRVIntegerList.CreateCopy(Source: TRVIntegerList);
begin
inherited Create;
Assign(Source);
end;
{------------------------------------------------------------------------------}
function TRVIntegerList.AddUnique(Value: Integer): Integer;
begin
Result := IndexOf(Pointer(Value));
if Result=-1 then begin
inherited Add(Pointer(Value));
Result := Count-1;
end;
end;
{------------------------------------------------------------------------------}
procedure TRVIntegerList.Assign(Source: TRVIntegerList);
var i: Integer;
begin
Clear;
Capacity := Source.Count;
for i := 0 to Source.Count-1 do
Add(Source.Items[i]);
end;
{------------------------------------------------------------------------------}
procedure TRVIntegerList.InitWith(Value, Count: Integer);
var i: Integer;
begin
Clear;
Capacity := Count;
for i := 0 to Count-1 do
Add(Value);
end;
{------------------------------------------------------------------------------}
procedure TRVIntegerList.Fill(Value: Integer);
var i: Integer;
begin
for i := 0 to Count-1 do
Items[i] := Value;
end;
{------------------------------------------------------------------------------}
procedure TRVIntegerList.Sort;
begin
inherited Sort(SortIntegers);
end;
{================================= TRVColorList ===============================}
procedure TRVColorList.AddUnique(Value: Integer);
begin
if Value<>clNone then
inherited AddUnique(Value);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -