177 lines
4.8 KiB
ObjectPascal
177 lines
4.8 KiB
ObjectPascal
(* ***** BEGIN LICENSE BLOCK *****
|
|
* Version: MPL 1.1
|
|
*
|
|
* The contents of this file are subject to the Mozilla Public License Version
|
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
* the License. You may obtain a copy of the License at
|
|
* http://www.mozilla.org/MPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
* for the specific language governing rights and limitations under the
|
|
* License.
|
|
*
|
|
* The Original Code is TurboPower Abbrevia
|
|
*
|
|
* The Initial Developer of the Original Code is
|
|
* TurboPower Software
|
|
*
|
|
* Portions created by the Initial Developer are Copyright (C) 1997-2002
|
|
* the Initial Developer. All Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
*
|
|
* ***** END LICENSE BLOCK ***** *)
|
|
|
|
{*********************************************************}
|
|
{* ABBREVIA: AbCView.pas *}
|
|
{*********************************************************}
|
|
{* ABBREVIA: Cabinet archive viewer component *}
|
|
{* Use AbQCView.pas for CLX *}
|
|
{*********************************************************}
|
|
|
|
{$IFNDEF UsingCLX}
|
|
Unit AbCView;
|
|
{$ENDIF}
|
|
|
|
{$I AbDefine.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Classes,
|
|
{$IFDEF UsingClx}
|
|
AbQView,
|
|
{$ELSE}
|
|
AbView,
|
|
{$ENDIF}
|
|
AbCBrows,
|
|
AbCabTyp, AbArcTyp;
|
|
|
|
type
|
|
TAbCabView = class(TAbBaseViewer)
|
|
protected
|
|
FCabComponent : TAbCustomCabBrowser;
|
|
FEmptyItemList: TAbArchiveList;
|
|
function GetItem(RowNum : Longint) : TAbCabItem;
|
|
procedure SetCabComponent(Value : TAbCustomCabBrowser);
|
|
procedure Notification(AComponent : TComponent; Operation : TOperation);
|
|
override;
|
|
procedure DoChange(Sender : TObject);
|
|
override;
|
|
public
|
|
constructor Create(AOwner : TComponent);
|
|
override;
|
|
destructor Destroy;
|
|
override;
|
|
property Items[RowNum : Longint] : TAbCabItem
|
|
read GetItem;
|
|
published {properties}
|
|
property Align;
|
|
property Attributes;
|
|
property BorderStyle;
|
|
property Color;
|
|
property Colors;
|
|
{$IFNDEF UsingClx}
|
|
property Ctl3D;
|
|
{$ENDIF}
|
|
property Cursor;
|
|
property Headings;
|
|
property DefaultColWidth;
|
|
property DefaultRowHeight;
|
|
property DisplayOptions;
|
|
property HeaderRowHeight;
|
|
property SortAttributes;
|
|
{$IFNDEF UsingClx}
|
|
property DragCursor;
|
|
{$ENDIF}
|
|
property DragMode;
|
|
property Enabled;
|
|
property Font;
|
|
property ParentColor;
|
|
{$IFNDEF UsingClx}
|
|
property ParentCtl3D;
|
|
{$ENDIF}
|
|
property ParentFont;
|
|
property ParentShowHint;
|
|
property PopupMenu;
|
|
property ShowHint;
|
|
property TabOrder;
|
|
property TabStop;
|
|
property Version;
|
|
property CabComponent : TAbCustomCabBrowser
|
|
read FCabComponent write SetCabComponent;
|
|
published {Events}
|
|
property OnChange;
|
|
property OnClick;
|
|
property OnDblClick;
|
|
property OnEnter;
|
|
property OnExit;
|
|
property OnKeyDown;
|
|
property OnKeyPress;
|
|
property OnKeyUp;
|
|
property OnMouseDown;
|
|
property OnMouseMove;
|
|
property OnMouseUp;
|
|
property OnSorted;
|
|
property OnDrawSortArrow;
|
|
end;
|
|
|
|
|
|
implementation
|
|
|
|
type
|
|
TAbCabBrowserFriend = class(TAbCustomCabBrowser);
|
|
|
|
|
|
{ ===== TAbCabView ========================================================= }
|
|
constructor TAbCabView.Create(AOwner : TComponent);
|
|
begin
|
|
inherited;
|
|
FEmptyItemList := FItemList;
|
|
end;
|
|
{ -------------------------------------------------------------------------- }
|
|
destructor TAbCabView.Destroy;
|
|
begin
|
|
FItemList := FEmptyItemList;
|
|
inherited;
|
|
end;
|
|
{ -------------------------------------------------------------------------- }
|
|
function TAbCabView.GetItem(RowNum : Longint) : TAbCabItem;
|
|
begin
|
|
if Assigned(FItemList) then
|
|
Result := TAbCabItem(FItemList.Items[FRowMap[RowNum]])
|
|
else
|
|
Result := nil;
|
|
end;
|
|
{ -------------------------------------------------------------------------- }
|
|
procedure TAbCabView.Notification(AComponent : TComponent; Operation : TOperation);
|
|
begin
|
|
inherited Notification(AComponent, Operation);
|
|
if Operation = opRemove then
|
|
if Assigned(FCabComponent) and (AComponent = FCabComponent) then begin
|
|
FCabComponent := nil;
|
|
Refresh;
|
|
end;
|
|
end;
|
|
{ -------------------------------------------------------------------------- }
|
|
procedure TAbCabView.SetCabComponent(Value : TAbCustomCabBrowser);
|
|
begin
|
|
FCabComponent := Value;
|
|
FCabComponent.OnChange := DoChange;
|
|
FCabComponent.OnLoad := DoLoad;
|
|
DoChange(Self);
|
|
end;
|
|
{ -------------------------------------------------------------------------- }
|
|
procedure TAbCabView.DoChange(Sender : TObject);
|
|
begin
|
|
if Assigned(FCabComponent) and Assigned(TAbCabBrowserFriend(FCabComponent).Archive) then
|
|
FItemList := TAbCabBrowserFriend(FCabComponent).Archive.ItemList
|
|
else if FEmptyItemList <> nil then
|
|
FItemList := FEmptyItemList;
|
|
inherited DoChange(Sender);
|
|
end;
|
|
|
|
end.
|
|
|