⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rvclasses.pas

📁 richview1.7 full.source
💻 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 + -