You've already forked lazarus-ccr
jvcllaz: Add TJvPageList, contribution by Michal Gawrycki. Add JvTabBarDemp_PageList example.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7413 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -16,7 +16,7 @@ implementation
|
|||||||
uses
|
uses
|
||||||
ImgList,
|
ImgList,
|
||||||
PropEdits, ComponentEditors,
|
PropEdits, ComponentEditors,
|
||||||
JvDsgnConsts,
|
JvDsgnConsts, JvPageList,
|
||||||
JvNavigationPane, JvNavPaneEditors,
|
JvNavigationPane, JvNavPaneEditors,
|
||||||
JvTabBar, JvTabBarXPPainter,
|
JvTabBar, JvTabBarXPPainter,
|
||||||
JvNotebookPageList,
|
JvNotebookPageList,
|
||||||
@ -26,6 +26,7 @@ uses
|
|||||||
procedure Register;
|
procedure Register;
|
||||||
const
|
const
|
||||||
cImageIndex = 'ImageIndex';
|
cImageIndex = 'ImageIndex';
|
||||||
|
cActivePage = 'ActivePage';
|
||||||
begin
|
begin
|
||||||
// JvNavigationPanel
|
// JvNavigationPanel
|
||||||
RegisterComponents(RsPaletteJvclVisual, [ // was: RsPaletteNavPane
|
RegisterComponents(RsPaletteJvclVisual, [ // was: RsPaletteNavPane
|
||||||
@ -47,20 +48,18 @@ begin
|
|||||||
|
|
||||||
// JvPageList
|
// JvPageList
|
||||||
RegisterComponents(RsPaletteJvclVisual, [ // was: RsPaletteListComboTree
|
RegisterComponents(RsPaletteJvclVisual, [ // was: RsPaletteListComboTree
|
||||||
//TJvPageList,
|
TJvPageList,
|
||||||
TJvNotebookPageList]);
|
TJvNotebookPageList]);
|
||||||
{
|
|
||||||
RegisterClasses([TJvPageList, TJvStandardPage]);
|
RegisterClasses([TJvPageList, TJvStandardPage]);
|
||||||
RegisterComponentEditor(TJvCustomPageList, TJvCustomPageListEditor); // was: TJvCustomPageEditor
|
RegisterNoIcon([TJvStandardPage]);
|
||||||
|
RegisterComponentEditor(TJvCustomPageList, TJvCustomPageEditor); // was: TJvCustomPageEditor
|
||||||
RegisterComponentEditor(TJvCustomPage, TJvCustomPageEditor);
|
RegisterComponentEditor(TJvCustomPage, TJvCustomPageEditor);
|
||||||
RegisterPropertyEditor(TypeInfo(TJvShowDesignCaption), nil, '',
|
RegisterPropertyEditor(TypeInfo(TJvShowDesignCaption), nil, '',
|
||||||
TJvShowDesignCaptionProperty);#
|
TJvShowDesignCaptionProperty);
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
RegisterPropertyEditor(TypeInfo(TJvCustomPage),
|
RegisterPropertyEditor(TypeInfo(TJvCustomPage),
|
||||||
TJvCustomPageList, cActivePage, TJvActivePageProperty);
|
TJvCustomPageList, cActivePage, TJvActivePageProperty);
|
||||||
}
|
|
||||||
|
|
||||||
// JvPageTree
|
// JvPageTree
|
||||||
RegisterComponents(RsPaletteJvclVisual, [ // was: TsPaletteListComboTree
|
RegisterComponents(RsPaletteJvclVisual, [ // was: TsPaletteListComboTree
|
||||||
|
160
components/jvcllaz/design/JvPageComps/jvpagelinkeditorform.lfm
Normal file
160
components/jvcllaz/design/JvPageComps/jvpagelinkeditorform.lfm
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
object frmJvTreeViewLinksEditor: TfrmJvTreeViewLinksEditor
|
||||||
|
Left = 294
|
||||||
|
Top = 184
|
||||||
|
ClientWidth = 464
|
||||||
|
ClientHeight = 231
|
||||||
|
ActiveControl = tvItems
|
||||||
|
BorderIcons = [biSystemMenu]
|
||||||
|
Caption = 'JvTreeViewLinks Editor'
|
||||||
|
OldCreateOrder = False
|
||||||
|
PopupMenu = popTree
|
||||||
|
OnResize = FormResize
|
||||||
|
PixelsPerInch = 96
|
||||||
|
TextHeight = 13
|
||||||
|
object Bevel1: TBevel
|
||||||
|
Left = 0
|
||||||
|
Top = 191
|
||||||
|
Width = 464
|
||||||
|
Height = 42
|
||||||
|
Align = alBottom
|
||||||
|
Shape = bsTopLine
|
||||||
|
end
|
||||||
|
object Splitter1: TSplitter
|
||||||
|
Left = 163
|
||||||
|
Top = 0
|
||||||
|
Width = 3
|
||||||
|
Height = 191
|
||||||
|
Cursor = crHSplit
|
||||||
|
AutoSnap = False
|
||||||
|
end
|
||||||
|
object Splitter2: TSplitter
|
||||||
|
Left = 268
|
||||||
|
Top = 0
|
||||||
|
Width = 3
|
||||||
|
Height = 191
|
||||||
|
Cursor = crHSplit
|
||||||
|
AutoSnap = False
|
||||||
|
end
|
||||||
|
object pnlLeft: TPanel
|
||||||
|
Left = 0
|
||||||
|
Top = 0
|
||||||
|
Width = 163
|
||||||
|
Height = 191
|
||||||
|
Align = alLeft
|
||||||
|
BevelOuter = bvNone
|
||||||
|
BorderWidth = 4
|
||||||
|
TabOrder = 0
|
||||||
|
object Label1: TLabel
|
||||||
|
Left = 4
|
||||||
|
Top = 4
|
||||||
|
Width = 155
|
||||||
|
Height = 16
|
||||||
|
Align = alTop
|
||||||
|
AutoSize = False
|
||||||
|
Caption = '&Nodes:'
|
||||||
|
FocusControl = tvItems
|
||||||
|
Layout = tlCenter
|
||||||
|
end
|
||||||
|
object tvItems: TTreeView
|
||||||
|
Left = 4
|
||||||
|
Top = 20
|
||||||
|
Width = 155
|
||||||
|
Height = 167
|
||||||
|
Align = alClient
|
||||||
|
ChangeDelay = 60
|
||||||
|
HideSelection = False
|
||||||
|
Indent = 19
|
||||||
|
PopupMenu = popTree
|
||||||
|
ReadOnly = True
|
||||||
|
ShowButtons = False
|
||||||
|
ShowLines = False
|
||||||
|
TabOrder = 0
|
||||||
|
ToolTips = False
|
||||||
|
OnChange = tvItemsChange
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object btnOK: TButton
|
||||||
|
Left = 285
|
||||||
|
Top = 199
|
||||||
|
Width = 75
|
||||||
|
Height = 25
|
||||||
|
Anchors = [akRight, akBottom]
|
||||||
|
Caption = '&OK'
|
||||||
|
ModalResult = 1
|
||||||
|
TabOrder = 3
|
||||||
|
end
|
||||||
|
object btnCancel: TButton
|
||||||
|
Left = 373
|
||||||
|
Top = 199
|
||||||
|
Width = 75
|
||||||
|
Height = 25
|
||||||
|
Anchors = [akRight, akBottom]
|
||||||
|
Caption = '&Cancel'
|
||||||
|
ModalResult = 2
|
||||||
|
TabOrder = 4
|
||||||
|
end
|
||||||
|
object pnlMid: TPanel
|
||||||
|
Left = 166
|
||||||
|
Top = 0
|
||||||
|
Width = 102
|
||||||
|
Height = 191
|
||||||
|
Align = alLeft
|
||||||
|
BevelOuter = bvNone
|
||||||
|
TabOrder = 1
|
||||||
|
object btnLink: TButton
|
||||||
|
Left = 5
|
||||||
|
Top = 24
|
||||||
|
Width = 91
|
||||||
|
Height = 25
|
||||||
|
Action = acLink
|
||||||
|
Anchors = [akTop]
|
||||||
|
TabOrder = 0
|
||||||
|
TabStop = False
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object pnlRight: TPanel
|
||||||
|
Left = 271
|
||||||
|
Top = 0
|
||||||
|
Width = 193
|
||||||
|
Height = 191
|
||||||
|
Align = alClient
|
||||||
|
BevelOuter = bvNone
|
||||||
|
BorderWidth = 4
|
||||||
|
Caption = 'pnlRight'
|
||||||
|
TabOrder = 2
|
||||||
|
object Label2: TLabel
|
||||||
|
Left = 4
|
||||||
|
Top = 4
|
||||||
|
Width = 185
|
||||||
|
Height = 17
|
||||||
|
Align = alTop
|
||||||
|
AutoSize = False
|
||||||
|
Caption = '&Pages:'
|
||||||
|
FocusControl = lbPages
|
||||||
|
Layout = tlCenter
|
||||||
|
end
|
||||||
|
object lbPages: TListBox
|
||||||
|
Left = 4
|
||||||
|
Top = 21
|
||||||
|
Width = 185
|
||||||
|
Height = 166
|
||||||
|
Align = alClient
|
||||||
|
ItemHeight = 13
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object acMain: TActionList
|
||||||
|
OnUpdate = acMainUpdate
|
||||||
|
Left = 168
|
||||||
|
Top = 64
|
||||||
|
object acLink: TAction
|
||||||
|
Caption = '<- Create &Link ->'
|
||||||
|
ShortCut = 16397
|
||||||
|
OnExecute = acLinkExecute
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object popTree: TPopupMenu
|
||||||
|
Left = 58
|
||||||
|
Top = 72
|
||||||
|
end
|
||||||
|
end
|
287
components/jvcllaz/design/JvPageComps/jvpagelinkeditorform.pas
Normal file
287
components/jvcllaz/design/JvPageComps/jvpagelinkeditorform.pas
Normal file
@ -0,0 +1,287 @@
|
|||||||
|
{-----------------------------------------------------------------------------
|
||||||
|
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/MPL-1.1.html
|
||||||
|
|
||||||
|
Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
|
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
|
||||||
|
the specific language governing rights and limitations under the License.
|
||||||
|
|
||||||
|
The Original Code is: JvPageLinkEditorForm.PAS, released on 2003-01-01.
|
||||||
|
|
||||||
|
The Initial Developer of the Original Code is Peter Th�rnqvist [peter3 at sourceforge dot net] .
|
||||||
|
Portions created by Peter Th�rnqvist are Copyright (C) 2003 Peter Th�rnqvist.
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Contributor(s):
|
||||||
|
|
||||||
|
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
|
||||||
|
located at http://jvcl.delphi-jedi.org
|
||||||
|
|
||||||
|
Known Issues:
|
||||||
|
Changes:
|
||||||
|
2002-10-22:
|
||||||
|
changed the way a parent/child PageIndex is assigned so that it matches the
|
||||||
|
actual component using this editor
|
||||||
|
|
||||||
|
$Id$
|
||||||
|
-----------------------------------------------------------------------------}
|
||||||
|
// $Id$
|
||||||
|
|
||||||
|
unit JvPageLinkEditorForm;
|
||||||
|
|
||||||
|
{$I jvcl.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, Windows, Forms, Controls, StdCtrls, ExtCtrls, ComCtrls,
|
||||||
|
ActnList, Menus,
|
||||||
|
Variants,
|
||||||
|
DesignEditors, DesignIntf,
|
||||||
|
JvPageList, JvPageListTreeView, JvComponent;
|
||||||
|
|
||||||
|
type
|
||||||
|
{ a property editor for the PageLinks property of TJvCustomPageListTreeView}
|
||||||
|
TJvPageLinksProperty = class(TClassProperty)
|
||||||
|
public
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
procedure Edit; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TfrmJvTreeViewLinksEditor = class(TJvForm)
|
||||||
|
tvItems: TTreeView;
|
||||||
|
btnLink: TButton;
|
||||||
|
lbPages: TListBox;
|
||||||
|
acMain: TActionList;
|
||||||
|
acLink: TAction;
|
||||||
|
Label1: TLabel;
|
||||||
|
Label2: TLabel;
|
||||||
|
btnOK: TButton;
|
||||||
|
btnCancel: TButton;
|
||||||
|
Bevel1: TBevel;
|
||||||
|
pnlLeft: TPanel;
|
||||||
|
pnlMid: TPanel;
|
||||||
|
pnlRight: TPanel;
|
||||||
|
popTree: TPopupMenu;
|
||||||
|
Splitter1: TSplitter;
|
||||||
|
Splitter2: TSplitter;
|
||||||
|
procedure tvItemsChange(Sender: TObject; Node: TTreeNode);
|
||||||
|
procedure acLinkExecute(Sender: TObject);
|
||||||
|
procedure acMainUpdate(Action: TBasicAction;
|
||||||
|
var Handled: Boolean);
|
||||||
|
procedure FormResize(Sender: TObject);
|
||||||
|
private
|
||||||
|
FTreeView:TCustomTreeView;
|
||||||
|
function CreatePopUpItem(Index: Integer): TMenuItem;
|
||||||
|
procedure DoPopClick(Sender: TObject);
|
||||||
|
procedure AssignComponents(TreeView: TCustomTreeView; const PageList: IPageList);
|
||||||
|
procedure AssignToComponents(TreeView: TCustomTreeView; const PageList: IPageList);
|
||||||
|
public
|
||||||
|
class function Edit(TreeView: TCustomTreeView; const PageList: IPageList): Boolean;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function ShowPageLinkEditor(TreeView: TJvCustomPageListTreeView): Boolean;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
JvDsgnConsts;
|
||||||
|
|
||||||
|
{$R *.dfm}
|
||||||
|
|
||||||
|
type
|
||||||
|
THackTreeView = class(TJvCustomPageListTreeView);
|
||||||
|
|
||||||
|
function ShowPageLinkEditor(TreeView: TJvCustomPageListTreeView): Boolean;
|
||||||
|
begin
|
||||||
|
Result := TfrmJvTreeViewLinksEditor.Edit(TreeView, TreeView.PageList);
|
||||||
|
if Result and (THackTreeView(TreeView).Items.Count > 0) then
|
||||||
|
THackTreeView(TreeView).Items.GetFirstNode.Expand(False);
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvPageLinksProperty } ===============================================
|
||||||
|
|
||||||
|
procedure TJvPageLinksProperty.Edit;
|
||||||
|
begin
|
||||||
|
if ShowPageLinkEditor(GetComponent(0) as TJvCustomPageListTreeView) then
|
||||||
|
Modified;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvPageLinksProperty.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result := [paDialog, paReadOnly];
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TfrmJvTreeViewLinksEditor } ==========================================
|
||||||
|
|
||||||
|
function GetStrippedText(const AText: string): string;
|
||||||
|
var
|
||||||
|
I: Integer;
|
||||||
|
begin
|
||||||
|
Result := AText;
|
||||||
|
for I := Length(AText) downto 1 do
|
||||||
|
if AText[I] = '(' then
|
||||||
|
begin
|
||||||
|
Result := Copy(AText, 1, I - 2);
|
||||||
|
Break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function GetNewTreeText(const AText: string; Index: Integer): string;
|
||||||
|
begin
|
||||||
|
Result := Format('%s (%d)', [GetStrippedText(AText), Index])
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmJvTreeViewLinksEditor.DoPopClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
with Sender as TMenuItem do
|
||||||
|
begin
|
||||||
|
lbPages.ItemIndex := Tag;
|
||||||
|
if acLink.Enabled then
|
||||||
|
acLink.Execute;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TfrmJvTreeViewLinksEditor.CreatePopUpItem(Index: Integer): TMenuItem;
|
||||||
|
begin
|
||||||
|
Result := TMenuItem.Create(popTree);
|
||||||
|
Result.Caption := Format(RsCreateLinkToPaged, [Index]);
|
||||||
|
Result.Tag := Index;
|
||||||
|
if Index < 10 then
|
||||||
|
Result.ShortCut := ShortCut(Ord('0') + Index, [ssCtrl])
|
||||||
|
else
|
||||||
|
if (Index >= 10) and (Index < 36) then
|
||||||
|
Result.ShortCut := ShortCut(Ord('A') + Index - 10, [ssCtrl]);
|
||||||
|
Result.OnClick := DoPopClick;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmJvTreeViewLinksEditor.AssignComponents(TreeView: TCustomTreeView;
|
||||||
|
const PageList: IPageList);
|
||||||
|
var
|
||||||
|
N1: TJvPageIndexNode;
|
||||||
|
N2: TTreeNode;
|
||||||
|
I: Integer;
|
||||||
|
begin
|
||||||
|
tvItems.Items.Clear;
|
||||||
|
FTreeView := TreeView;
|
||||||
|
if TreeView <> nil then
|
||||||
|
begin
|
||||||
|
tvItems.Items.Assign(THackTreeView(TreeView).Items);
|
||||||
|
tvItems.ShowButtons := True; // THackTreeView(TreeView).ShowButtons;
|
||||||
|
end;
|
||||||
|
if TreeView is TJvCustomPageListTreeView then
|
||||||
|
begin
|
||||||
|
N1 := THackTreeView(TreeView).Items.GetFirstNode as TJvPageIndexNode;
|
||||||
|
N2 := tvItems.Items.GetFirstNode;
|
||||||
|
while Assigned(N1) and Assigned(N2) do
|
||||||
|
begin
|
||||||
|
N2.Data := Pointer(N1.PageIndex);
|
||||||
|
N2.Text := Format('%s (%d)', [N1.Text, N1.PageIndex]);
|
||||||
|
N1 := TJvPageIndexNode(N1.GetNext);
|
||||||
|
N2 := N2.GetNext;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
lbPages.Items.Clear;
|
||||||
|
popTree.Items.Clear;
|
||||||
|
if PageList <> nil then
|
||||||
|
for I := 0 to PageList.GetPageCount - 1 do
|
||||||
|
begin
|
||||||
|
lbPages.Items.Add(Format('%s (%d)', [PageList.GetPageCaption(I), I]));
|
||||||
|
popTree.Items.Add(CreatePopUpItem(I));
|
||||||
|
end;
|
||||||
|
|
||||||
|
if tvItems.Items.Count > 0 then
|
||||||
|
begin
|
||||||
|
tvItems.Items[0].Selected := True;
|
||||||
|
tvItems.Items[0].Expand(False);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmJvTreeViewLinksEditor.AssignToComponents(TreeView: TCustomTreeView;
|
||||||
|
const PageList: IPageList);
|
||||||
|
var
|
||||||
|
N1: TJvPageIndexNode;
|
||||||
|
N2: TTreeNode;
|
||||||
|
begin
|
||||||
|
if TreeView <> nil then
|
||||||
|
THackTreeView(TreeView).Items.Assign(tvItems.Items);
|
||||||
|
if TreeView is TJvCustomPageListTreeView then
|
||||||
|
begin
|
||||||
|
N1 := THackTreeView(TreeView).Items.GetFirstNode as TJvPageIndexNode;
|
||||||
|
N2 := tvItems.Items.GetFirstNode;
|
||||||
|
while Assigned(N1) and Assigned(N2) do
|
||||||
|
begin
|
||||||
|
N1.PageIndex := Integer(N2.Data);
|
||||||
|
N1.Text := GetStrippedText(N2.Text);
|
||||||
|
N1 := TJvPageIndexNode(N1.GetNext);
|
||||||
|
N2 := N2.GetNext;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmJvTreeViewLinksEditor.tvItemsChange(Sender: TObject;
|
||||||
|
Node: TTreeNode);
|
||||||
|
begin
|
||||||
|
if Node <> nil then
|
||||||
|
if Node is TJvPageIndexNode then
|
||||||
|
lbPages.ItemIndex := TJvPageIndexNode(Node).PageIndex
|
||||||
|
else
|
||||||
|
lbPages.ItemIndex := Integer(Node.Data);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmJvTreeViewLinksEditor.acLinkExecute(Sender: TObject);
|
||||||
|
var
|
||||||
|
N: TTreeNode;
|
||||||
|
begin
|
||||||
|
N := tvItems.Selected;
|
||||||
|
N.Data := Pointer(lbPages.ItemIndex);
|
||||||
|
if FTreeView is TJvCustomSettingsTreeView then
|
||||||
|
begin
|
||||||
|
// make the editor behave like the component
|
||||||
|
if (N.Parent <> nil) and (N.Parent.GetFirstChild = N) then
|
||||||
|
begin
|
||||||
|
N.Parent.Data := Pointer(lbPages.ItemIndex);
|
||||||
|
N.Parent.Text := GetNewTreeText(N.Parent.Text, lbPages.ItemIndex);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if N.HasChildren then
|
||||||
|
begin
|
||||||
|
N.GetFirstChild.Data := Pointer(lbPages.ItemIndex);
|
||||||
|
N.GetFirstChild.Text := GetNewTreeText(N.GetFirstChild.Text, lbPages.ItemIndex);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if N is TJvPageIndexNode then
|
||||||
|
TJvPageIndexNode(N).PageIndex := lbPages.ItemIndex;
|
||||||
|
N.Text := GetNewTreeText(N.Text, lbPages.ItemIndex);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmJvTreeViewLinksEditor.acMainUpdate(Action: TBasicAction;
|
||||||
|
var Handled: Boolean);
|
||||||
|
begin
|
||||||
|
acLink.Enabled := (tvItems.Selected <> nil) and (lbPages.ItemIndex > -1);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmJvTreeViewLinksEditor.FormResize(Sender: TObject);
|
||||||
|
begin
|
||||||
|
pnlLeft.Width := (ClientWidth - pnlMid.Width) div 2;
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TfrmJvTreeViewLinksEditor.Edit(TreeView: TCustomTreeView;
|
||||||
|
const PageList: IPageList): Boolean;
|
||||||
|
begin
|
||||||
|
// keep in mind that Self is a class here not an object
|
||||||
|
with Self.Create(Application) do
|
||||||
|
try
|
||||||
|
AssignComponents(TreeView, PageList);
|
||||||
|
Result := ShowModal = mrOk;
|
||||||
|
if Result then
|
||||||
|
AssignToComponents(TreeView, PageList);
|
||||||
|
finally
|
||||||
|
Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
148
components/jvcllaz/design/JvPageComps/jvpagelisteditorform.lfm
Normal file
148
components/jvcllaz/design/JvPageComps/jvpagelisteditorform.lfm
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
object frmPageListEditor: TfrmPageListEditor
|
||||||
|
Left = 446
|
||||||
|
Height = 342
|
||||||
|
Top = 114
|
||||||
|
Width = 233
|
||||||
|
Caption = 'PageList Editor'
|
||||||
|
ClientHeight = 342
|
||||||
|
ClientWidth = 233
|
||||||
|
OnClose = FormClose
|
||||||
|
OnCreate = FormCreate
|
||||||
|
OnDestroy = FormDestroy
|
||||||
|
LCLVersion = '2.1.0.0'
|
||||||
|
object ToolBar1: TToolBar
|
||||||
|
Left = 0
|
||||||
|
Height = 23
|
||||||
|
Top = 0
|
||||||
|
Width = 233
|
||||||
|
AutoSize = True
|
||||||
|
ButtonHeight = 23
|
||||||
|
ButtonWidth = 23
|
||||||
|
Caption = 'ToolBar1'
|
||||||
|
EdgeInner = esNone
|
||||||
|
EdgeOuter = esNone
|
||||||
|
Images = ilButtons
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
TabOrder = 0
|
||||||
|
object btnAdd: TToolButton
|
||||||
|
Left = 1
|
||||||
|
Hint = 'Add page'
|
||||||
|
Top = 0
|
||||||
|
Action = acAdd
|
||||||
|
end
|
||||||
|
object btnDelete: TToolButton
|
||||||
|
Left = 24
|
||||||
|
Hint = 'Delete page'
|
||||||
|
Top = 0
|
||||||
|
Action = acDelete
|
||||||
|
end
|
||||||
|
object ToolButton1: TToolButton
|
||||||
|
Left = 47
|
||||||
|
Height = 23
|
||||||
|
Top = 0
|
||||||
|
Caption = 'ToolButton1'
|
||||||
|
ImageIndex = 3
|
||||||
|
Style = tbsSeparator
|
||||||
|
end
|
||||||
|
object tbMoveUp: TToolButton
|
||||||
|
Left = 55
|
||||||
|
Top = 0
|
||||||
|
Action = acMoveUp
|
||||||
|
end
|
||||||
|
object tbMoveDown: TToolButton
|
||||||
|
Left = 78
|
||||||
|
Top = 0
|
||||||
|
Action = acMoveDown
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object lbPages: TListBox
|
||||||
|
Left = 0
|
||||||
|
Height = 296
|
||||||
|
Top = 23
|
||||||
|
Width = 233
|
||||||
|
Align = alClient
|
||||||
|
ItemHeight = 0
|
||||||
|
OnClick = lbPagesClick
|
||||||
|
OnKeyPress = lbPagesKeyPress
|
||||||
|
PopupMenu = popEditor
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
object StatusBar1: TStatusBar
|
||||||
|
Left = 0
|
||||||
|
Height = 23
|
||||||
|
Top = 319
|
||||||
|
Width = 233
|
||||||
|
Panels = <>
|
||||||
|
end
|
||||||
|
object alEditor: TActionList
|
||||||
|
Images = ilButtons
|
||||||
|
OnUpdate = alEditorUpdate
|
||||||
|
Left = 86
|
||||||
|
Top = 34
|
||||||
|
object acAdd: TAction
|
||||||
|
Caption = 'Add'
|
||||||
|
Hint = 'Add Welcome page'
|
||||||
|
ImageIndex = 0
|
||||||
|
OnExecute = acAddExecute
|
||||||
|
ShortCut = 45
|
||||||
|
end
|
||||||
|
object acDelete: TAction
|
||||||
|
Caption = 'Delete'
|
||||||
|
Hint = 'Delete selected page(s)'
|
||||||
|
ImageIndex = 1
|
||||||
|
OnExecute = acDeleteExecute
|
||||||
|
OnUpdate = acDeleteUpdate
|
||||||
|
ShortCut = 46
|
||||||
|
end
|
||||||
|
object acMoveUp: TAction
|
||||||
|
Caption = 'Move Up'
|
||||||
|
Hint = 'Move Up'
|
||||||
|
ImageIndex = 2
|
||||||
|
OnExecute = acMoveUpExecute
|
||||||
|
ShortCut = 16422
|
||||||
|
end
|
||||||
|
object acMoveDown: TAction
|
||||||
|
Caption = 'Move Down'
|
||||||
|
Hint = 'Move Down'
|
||||||
|
ImageIndex = 3
|
||||||
|
OnExecute = acMoveDownExecute
|
||||||
|
ShortCut = 16424
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object ilButtons: TImageList
|
||||||
|
Left = 20
|
||||||
|
Top = 30
|
||||||
|
Bitmap = {
|
||||||
|
4C7A040000001000000010000000FE0000000000000078DAED558B0E833008E4
|
||||||
|
E3FB6DFE56679DD42BC5963E96749B24448DDC1D6041A2CB9C733E18B518C407
|
||||||
|
7CF65C31C4A0BEE4B270C8AB31FD04E3CF7BF41076E384718C65CEE275C7737F
|
||||||
|
102B73A11B0EC6C75A85367294F4F9DE2BBA167D6EA3A55EE988AFF58C35B66D
|
||||||
|
53F1167DC67A257F933EC465FA1D8EF321CF9CD569590BB9F5E6D88295B16DBA
|
||||||
|
EFB8D42B339FCCBFC6D133FF3207CB79546B3EDE1938707F0036EE0172C55D76
|
||||||
|
E99F2E62E2BBEAFC3B3F32FFF15B3DF3FF8B3652DFDE9F744E5BB1EC8D1C09B6
|
||||||
|
9143C51A39C4D9CA70D9DEFA50FD4BE03B6A7E6CADB91FF97EDF787E67CCEFC8
|
||||||
|
FE98B1BF66F56F747FCFF87FFC85BD007F143BD9
|
||||||
|
}
|
||||||
|
end
|
||||||
|
object popEditor: TPopupMenu
|
||||||
|
Images = ilButtons
|
||||||
|
Left = 54
|
||||||
|
Top = 120
|
||||||
|
object Add1: TMenuItem
|
||||||
|
Action = acAdd
|
||||||
|
end
|
||||||
|
object Delete1: TMenuItem
|
||||||
|
Action = acDelete
|
||||||
|
end
|
||||||
|
object N1: TMenuItem
|
||||||
|
Caption = '-'
|
||||||
|
end
|
||||||
|
object MoveUp1: TMenuItem
|
||||||
|
Action = acMoveUp
|
||||||
|
end
|
||||||
|
object MoveDown1: TMenuItem
|
||||||
|
Action = acMoveDown
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
374
components/jvcllaz/design/JvPageComps/jvpagelisteditorform.pas
Normal file
374
components/jvcllaz/design/JvPageComps/jvpagelisteditorform.pas
Normal file
@ -0,0 +1,374 @@
|
|||||||
|
{-----------------------------------------------------------------------------
|
||||||
|
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/MPL-1.1.html
|
||||||
|
|
||||||
|
Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
|
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
|
||||||
|
the specific language governing rights and limitations under the License.
|
||||||
|
|
||||||
|
The Original Code is: JvPageListEditorForm.PAS, released on 2004-03-28.
|
||||||
|
|
||||||
|
The Initial Developer of the Original Code is Peter Thornqvist <peter3 at sourceforge dot net>
|
||||||
|
Portions created by Peter Thornqvist are Copyright (C) 2004 Peter Thornqvist.
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Contributor(s):
|
||||||
|
|
||||||
|
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
|
||||||
|
located at http://jvcl.delphi-jedi.org
|
||||||
|
|
||||||
|
Known Issues:
|
||||||
|
-----------------------------------------------------------------------------}
|
||||||
|
// $Id$
|
||||||
|
|
||||||
|
unit JvPageListEditorForm;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
SysUtils, Classes, Graphics, Controls, Forms,
|
||||||
|
Dialogs, ActnList, ImgList, ComCtrls, StdCtrls, ToolWin, Menus,
|
||||||
|
PropEdits, PropEditUtils, ComponentEditors,
|
||||||
|
JvPageList, JvPageListEditors, IDEWindowIntf;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TfrmPageListEditor }
|
||||||
|
|
||||||
|
TfrmPageListEditor = class(TForm)
|
||||||
|
ToolBar1: TToolBar;
|
||||||
|
btnAdd: TToolButton;
|
||||||
|
btnDelete: TToolButton;
|
||||||
|
ToolButton1: TToolButton;
|
||||||
|
tbMoveUp: TToolButton;
|
||||||
|
tbMoveDown: TToolButton;
|
||||||
|
lbPages: TListBox;
|
||||||
|
alEditor: TActionList;
|
||||||
|
acAdd: TAction;
|
||||||
|
acDelete: TAction;
|
||||||
|
acMoveUp: TAction;
|
||||||
|
acMoveDown: TAction;
|
||||||
|
ilButtons: TImageList;
|
||||||
|
StatusBar1: TStatusBar;
|
||||||
|
popEditor: TPopupMenu;
|
||||||
|
Add1: TMenuItem;
|
||||||
|
Delete1: TMenuItem;
|
||||||
|
N1: TMenuItem;
|
||||||
|
MoveUp1: TMenuItem;
|
||||||
|
MoveDown1: TMenuItem;
|
||||||
|
procedure FormCreate(Sender: TObject);
|
||||||
|
procedure acAddExecute(Sender: TObject);
|
||||||
|
procedure acDeleteExecute(Sender: TObject);
|
||||||
|
procedure acMoveUpExecute(Sender: TObject);
|
||||||
|
procedure acMoveDownExecute(Sender: TObject);
|
||||||
|
procedure FormClose(Sender: TObject; var AAction: TCloseAction);
|
||||||
|
procedure acDeleteUpdate(Sender: TObject);
|
||||||
|
procedure FormDestroy(Sender: TObject);
|
||||||
|
procedure lbPagesClick(Sender: TObject);
|
||||||
|
procedure alEditorUpdate(AAction: TBasicAction; var Handled: Boolean);
|
||||||
|
procedure lbPagesKeyPress(Sender: TObject; var Key: Char);
|
||||||
|
private
|
||||||
|
FPageList: TJvCustomPageList;
|
||||||
|
FIgnoreEvents: Boolean;
|
||||||
|
FEditor: TJvCustomPageEditor;
|
||||||
|
procedure SetPageList(const Value: TJvCustomPageList);
|
||||||
|
procedure UpdateList(ItemIndex: Integer);
|
||||||
|
procedure SelectPage(const Index: Integer);
|
||||||
|
//procedure Add(Page: TJvCustomPage);
|
||||||
|
function FindPage(APage: TJvCustomPage; out AIndex: Integer): Boolean;
|
||||||
|
procedure OnComponentRenamed(AComponent: TComponent);
|
||||||
|
procedure OnPersistentDeleting(APersistent: TPersistent);
|
||||||
|
procedure OnPersistentAdded(APersistent: TPersistent; Select: boolean);
|
||||||
|
public
|
||||||
|
property PageList:TJvCustomPageList read FPageList write SetPageList;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ShowPageListEditor(Editor: TJvCustomPageEditor; APageList: TJvCustomPageList);
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
JvDsgnConsts;
|
||||||
|
|
||||||
|
{$R *.lfm}
|
||||||
|
|
||||||
|
procedure ShowPageListEditor(Editor: TJvCustomPageEditor; APageList: TJvCustomPageList);
|
||||||
|
var
|
||||||
|
frmPageListEditor: TfrmPageListEditor = nil;
|
||||||
|
begin
|
||||||
|
// Show the editor
|
||||||
|
frmPageListEditor := FindEditorForm(Editor.GetComponent) as TfrmPageListEditor;
|
||||||
|
if not Assigned(frmPageListEditor) then
|
||||||
|
frmPageListEditor := TfrmPageListEditor.Create(Application);
|
||||||
|
try
|
||||||
|
frmPageListEditor.FEditor := Editor;
|
||||||
|
frmPageListEditor.PageList := APageList;
|
||||||
|
frmPageListEditor.Caption := Format(RsFmtCaption,[APageList.Name]);
|
||||||
|
RegisterEditorForm(frmPageListEditor, Editor.GetComponent);
|
||||||
|
except
|
||||||
|
frmPageListEditor.Free;
|
||||||
|
raise;
|
||||||
|
end;
|
||||||
|
frmPageListEditor.EnsureVisible;
|
||||||
|
end;
|
||||||
|
|
||||||
|
type
|
||||||
|
TJvCustomPageAccess = class(TJvCustomPage);
|
||||||
|
|
||||||
|
procedure TfrmPageListEditor.acAddExecute(Sender: TObject);
|
||||||
|
//var
|
||||||
|
//APage: TJvCustomPage;
|
||||||
|
//Hook: TPropertyEditorHook;
|
||||||
|
begin
|
||||||
|
//if not FEditor.GetHook(Hook) then
|
||||||
|
// Exit;
|
||||||
|
//APage := PageList.GetPageClass.Create(PageList.Owner);
|
||||||
|
//try
|
||||||
|
// APage.Name := FEditor.GetDesigner.CreateUniqueComponentName(APage.ClassName);
|
||||||
|
// Add(APage);
|
||||||
|
// Hook.PersistentAdded(APage, True);
|
||||||
|
// FEditor.Modified;
|
||||||
|
//except
|
||||||
|
// APage.Free;
|
||||||
|
// raise;
|
||||||
|
//end;
|
||||||
|
if FEditor.GetPageControl <> nil then
|
||||||
|
FEditor.InsertPage;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmPageListEditor.acDeleteExecute(Sender: TObject);
|
||||||
|
//var
|
||||||
|
// I: Integer;
|
||||||
|
// Hook: TPropertyEditorHook;
|
||||||
|
begin
|
||||||
|
//if Assigned(PageList.ActivePage) and FEditor.GetHook(Hook) then
|
||||||
|
//begin
|
||||||
|
// I := lbPages.ItemIndex;
|
||||||
|
// if lbPages.ItemIndex >= 0 then
|
||||||
|
// lbPages.Items.Delete(TJvCustomPageAccess(PageList.ActivePage).PageIndex);
|
||||||
|
// if GlobalDesignHook <> nil then
|
||||||
|
// GlobalDesignHook.SelectOnlyThis(PageList);
|
||||||
|
// PageList.ActivePage.Free;
|
||||||
|
// Hook.PersistentDeleted;
|
||||||
|
// if I >= lbPages.Items.Count then
|
||||||
|
// Dec(I);
|
||||||
|
// if (I >= 0) and (I < lbPages.Items.Count) then
|
||||||
|
// begin
|
||||||
|
// lbPages.ItemIndex := I;
|
||||||
|
// SelectPage(I);
|
||||||
|
// end
|
||||||
|
// else
|
||||||
|
// FEditor.Modified;
|
||||||
|
//end;
|
||||||
|
if (FEditor.GetPageControl <> nil) then
|
||||||
|
FEditor.RemovePage;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmPageListEditor.acMoveUpExecute(Sender: TObject);
|
||||||
|
var
|
||||||
|
I: Integer;
|
||||||
|
begin
|
||||||
|
I := lbPages.ItemIndex;
|
||||||
|
lbPages.Items.Move(I, I-1);
|
||||||
|
if Assigned(PageList) then
|
||||||
|
begin
|
||||||
|
TJvCustomPageAccess(PageList.Pages[I]).PageIndex := I - 1;
|
||||||
|
lbPages.ItemIndex := I - 1;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmPageListEditor.acMoveDownExecute(Sender: TObject);
|
||||||
|
var
|
||||||
|
I: Integer;
|
||||||
|
begin
|
||||||
|
I := lbPages.ItemIndex;
|
||||||
|
lbPages.Items.Move(I, I+1);
|
||||||
|
if Assigned(PageList) then
|
||||||
|
begin
|
||||||
|
TJvCustomPageAccess(PageList.Pages[I]).PageIndex := I + 1;
|
||||||
|
lbPages.ItemIndex := I + 1;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmPageListEditor.SetPageList(const Value: TJvCustomPageList);
|
||||||
|
begin
|
||||||
|
if FPageList <> Value then
|
||||||
|
begin
|
||||||
|
FPageList := Value;
|
||||||
|
UpdateList(0);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//procedure TfrmPageListEditor.Add(Page: TJvCustomPage);
|
||||||
|
//var
|
||||||
|
// Hook: TPropertyEditorHook;
|
||||||
|
//begin
|
||||||
|
// if not FEditor.GetHook(Hook) then
|
||||||
|
// Exit;
|
||||||
|
// Page.Parent := PageList;
|
||||||
|
// Page.PageList := PageList;
|
||||||
|
// PageList.ActivePage := Page;
|
||||||
|
// Hook.PersistentAdded(Page, True);
|
||||||
|
// GlobalDesignHook.SelectOnlyThis(Page);
|
||||||
|
// FEditor.Modified;
|
||||||
|
// lbPages.ItemIndex := lbPages.Items.Add(Page.Name);
|
||||||
|
//end;
|
||||||
|
|
||||||
|
function TfrmPageListEditor.FindPage(APage: TJvCustomPage; out AIndex: Integer
|
||||||
|
): Boolean;
|
||||||
|
var
|
||||||
|
I: Integer;
|
||||||
|
begin
|
||||||
|
if Assigned(PageList) and (PageList.PageCount > 0) then
|
||||||
|
for I := 0 to PageList.PageCount - 1 do
|
||||||
|
if PageList.Pages[I] = APage then
|
||||||
|
begin
|
||||||
|
AIndex := I;
|
||||||
|
Exit(True);
|
||||||
|
end;
|
||||||
|
AIndex := -1;
|
||||||
|
Result := False;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmPageListEditor.OnComponentRenamed(AComponent: TComponent);
|
||||||
|
var
|
||||||
|
I: Integer;
|
||||||
|
begin
|
||||||
|
if FIgnoreEvents then Exit;
|
||||||
|
if (AComponent is TJvCustomPage) and FindPage(TJvCustomPage(AComponent), I) then
|
||||||
|
UpdateList(I);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmPageListEditor.OnPersistentDeleting(APersistent: TPersistent);
|
||||||
|
var
|
||||||
|
I: Integer;
|
||||||
|
begin
|
||||||
|
if FIgnoreEvents then Exit;
|
||||||
|
if (APersistent is TJvCustomPage) then
|
||||||
|
UpdateList(-1)
|
||||||
|
else if (APersistent is TJvCustomPageList) and (FEditor.GetPageControl = APersistent) then
|
||||||
|
Close;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmPageListEditor.OnPersistentAdded(APersistent: TPersistent;
|
||||||
|
Select: boolean);
|
||||||
|
var
|
||||||
|
I: Integer;
|
||||||
|
begin
|
||||||
|
if FIgnoreEvents then Exit;
|
||||||
|
if (APersistent is TJvCustomPage) and FindPage(TJvCustomPage(APersistent), I) then
|
||||||
|
begin
|
||||||
|
UpdateList(I);
|
||||||
|
lbPages.Selected[I] := Select;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmPageListEditor.SelectPage(const Index: Integer);
|
||||||
|
var
|
||||||
|
Page: TJvCustomPageAccess;
|
||||||
|
begin
|
||||||
|
if Assigned(FPageList) and Active then
|
||||||
|
begin
|
||||||
|
FIgnoreEvents := True;
|
||||||
|
try
|
||||||
|
Page := nil;
|
||||||
|
if (Index >= 0) and (Index < FPageList.PageCount) then
|
||||||
|
Page := TJvCustomPageAccess(FPageList.Pages[Index]);
|
||||||
|
PageList.ActivePage := Page;
|
||||||
|
if GlobalDesignHook <> nil then
|
||||||
|
begin
|
||||||
|
GlobalDesignHook.SelectOnlyThis(Page);
|
||||||
|
GlobalDesignHook.Modified(PageList);
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
FIgnoreEvents := False;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmPageListEditor.UpdateList(ItemIndex: Integer);
|
||||||
|
var
|
||||||
|
I: Integer;
|
||||||
|
begin
|
||||||
|
if Assigned(FPageList) then
|
||||||
|
begin
|
||||||
|
FIgnoreEvents := True;
|
||||||
|
lbPages.Items.BeginUpdate;
|
||||||
|
try
|
||||||
|
lbPages.Items.Clear;
|
||||||
|
for I := 0 to FPageList.PageCount - 1 do
|
||||||
|
lbPages.Items.Add(TJvCustomPageAccess(FPageList.Pages[I]).Name);
|
||||||
|
if (ItemIndex >= 0) and (ItemIndex < lbPages.Items.Count) then
|
||||||
|
lbPages.ItemIndex := ItemIndex
|
||||||
|
else
|
||||||
|
lbPages.ItemIndex := -1;
|
||||||
|
finally
|
||||||
|
lbPages.Items.EndUpdate;
|
||||||
|
FIgnoreEvents := False;
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
lbPages.Items.Clear;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmPageListEditor.FormClose(Sender: TObject;
|
||||||
|
var AAction: TCloseAction);
|
||||||
|
begin
|
||||||
|
IDEDialogLayoutList.SaveLayout(Self);
|
||||||
|
AAction := caFree;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmPageListEditor.acDeleteUpdate(Sender: TObject);
|
||||||
|
begin
|
||||||
|
(Sender as TAction).Enabled :=
|
||||||
|
(lbPages.Items.Count > 0) and (lbPages.ItemIndex >= 0);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmPageListEditor.FormDestroy(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if Assigned(GlobalDesignHook) then
|
||||||
|
GlobalDesignHook.RemoveAllHandlersForObject(Self);
|
||||||
|
UnregisterEditorForm(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmPageListEditor.lbPagesClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
SelectPage(lbPages.ItemIndex);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmPageListEditor.alEditorUpdate(AAction: TBasicAction;
|
||||||
|
var Handled: Boolean);
|
||||||
|
begin
|
||||||
|
acMoveUp.Enabled := lbPages.ItemIndex > 0;
|
||||||
|
acMoveDown.Enabled :=
|
||||||
|
(lbPages.ItemIndex <> -1) and
|
||||||
|
(lbPages.ItemIndex < lbPages.Items.Count - 1);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmPageListEditor.lbPagesKeyPress(Sender: TObject;
|
||||||
|
var Key: Char);
|
||||||
|
begin
|
||||||
|
if lbPages.ItemIndex <> -1 then
|
||||||
|
begin
|
||||||
|
SelectPage(lbPages.ItemIndex);
|
||||||
|
//ActivateInspector(Key);
|
||||||
|
Key := #0;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmPageListEditor.FormCreate(Sender: TObject);
|
||||||
|
begin
|
||||||
|
IDEDialogLayoutList.ApplyLayout(Self);
|
||||||
|
if Assigned(GlobalDesignHook) then
|
||||||
|
begin
|
||||||
|
GlobalDesignHook.AddHandlerComponentRenamed(@OnComponentRenamed);
|
||||||
|
GlobalDesignHook.AddHandlerPersistentDeleting(@OnPersistentDeleting);
|
||||||
|
GlobalDesignHook.AddHandlerPersistentAdded(@OnPersistentAdded);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
@ -30,65 +30,38 @@ unit JvPageListEditors;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
SysUtils, Classes, ImgList, Menus,
|
SysUtils, ImgList, Graphics, Classes,
|
||||||
PropEdits, GraphPropEdits, ComponentEditors;
|
PropEdits, ComponentEditors, GraphPropEdits, PropEditUtils,
|
||||||
|
JvPageList, JvDsgnEditors;
|
||||||
|
|
||||||
type
|
type
|
||||||
(*
|
|
||||||
{ a property editor for the ActivePage property of TJvPageList }
|
{ a property editor for the ActivePage property of TJvPageList }
|
||||||
TJvActivePageProperty = class(TComponentProperty)
|
TJvActivePageProperty = class(TComponentProperty)
|
||||||
public
|
public
|
||||||
function GetAttributes: TPropertyAttributes; override;
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
procedure GetValues(Proc: TGetStrProc); override;
|
procedure GetValues(Proc: TGetStrProc); override;
|
||||||
end;
|
end;
|
||||||
*)
|
|
||||||
|
|
||||||
TJvShowDesignCaptionProperty = class(TEnumProperty)
|
TJvShowDesignCaptionProperty = class(TEnumProperty)
|
||||||
function GetAttributes: TPropertyAttributes; override;
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ a component editor for the TJvPageList }
|
{ a component editor for the TJvPageList }
|
||||||
|
|
||||||
(********************************** NOT WORKING ***************
|
|
||||||
// adapted from TUntabbedNotebookComponentEditor)
|
|
||||||
TJvCustomPageListEditor = class(TDefaultComponentEditor)
|
|
||||||
protected
|
|
||||||
procedure AddNewPageToDesigner(Index: integer); virtual;
|
|
||||||
procedure DoAddPage; virtual;
|
|
||||||
procedure DoDeletePage; virtual;
|
|
||||||
procedure AddMenuItemsForPages(ParentMenuItem: TMenuItem); virtual;
|
|
||||||
procedure ShowPageMenuItemClick(Sender: TObject);
|
|
||||||
public
|
|
||||||
procedure ExecuteVerb(Index: Integer); override;
|
|
||||||
function GetVerb(Index: Integer): string; override;
|
|
||||||
function GetVerbCount: Integer; override;
|
|
||||||
procedure PrepareItem(Index: Integer; const AnItem: TMenuItem); override;
|
|
||||||
function PageList: TJvCustomPageList; virtual;
|
|
||||||
end;
|
|
||||||
|
|
||||||
TJvCustomPageEditor = class(TJvCustomPageListEditor)
|
|
||||||
public
|
|
||||||
function PageList: TJvCustomPageList; override;
|
|
||||||
function Page: TJvCustomPage; virtual;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{
|
|
||||||
TJvCustomPageEditor = class(TComponentEditor)
|
TJvCustomPageEditor = class(TComponentEditor)
|
||||||
private
|
|
||||||
procedure InsertPage;
|
|
||||||
procedure PrevPage;
|
|
||||||
procedure NextPage;
|
|
||||||
procedure RemovePage;
|
|
||||||
function GetPageControl: TJvCustomPageList;
|
|
||||||
public
|
public
|
||||||
function GetVerb(Index: Integer): string; override;
|
function GetVerb(Index: Integer): string; override;
|
||||||
function GetVerbCount: Integer; override;
|
function GetVerbCount: Integer; override;
|
||||||
procedure ExecuteVerb(Index: Integer); override;
|
procedure ExecuteVerb(Index: Integer); override;
|
||||||
procedure Edit; override;
|
procedure Edit; override;
|
||||||
end; }
|
|
||||||
***********************************************)
|
|
||||||
|
|
||||||
TJvSettingsTreeImagesProperty = class(TImageIndexPropertyEditor)
|
function GetPageControl: TJvCustomPageList;
|
||||||
|
procedure InsertPage;
|
||||||
|
procedure PrevPage;
|
||||||
|
procedure NextPage;
|
||||||
|
procedure RemovePage;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvSettingsTreeImagesProperty = class(TImageIndexPropertyEditor{TJvDefaultImageIndexProperty})
|
||||||
protected
|
protected
|
||||||
function GetImageList: TCustomImageList; override;
|
function GetImageList: TCustomImageList; override;
|
||||||
end;
|
end;
|
||||||
@ -97,13 +70,11 @@ implementation
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
TypInfo,
|
TypInfo,
|
||||||
JvPageListTreeView;
|
JvDsgnConsts, JvPageListTreeView, JvPageListEditorForm;
|
||||||
|
|
||||||
type
|
type
|
||||||
// THackPageList = class(TJvPageList);
|
|
||||||
THackTreeView = class(TJvCustomPageListTreeView);
|
THackTreeView = class(TJvCustomPageListTreeView);
|
||||||
|
|
||||||
{
|
|
||||||
const
|
const
|
||||||
cShowEditor = 0;
|
cShowEditor = 0;
|
||||||
cDash = 1;
|
cDash = 1;
|
||||||
@ -114,157 +85,6 @@ const
|
|||||||
|
|
||||||
cElementCount = 6;
|
cElementCount = 6;
|
||||||
|
|
||||||
const
|
|
||||||
unbvAddPage = 0;
|
|
||||||
unbvDeletePage = 1;
|
|
||||||
unbvShowPage = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
{ TJvCustomPageListEditor }
|
|
||||||
(****************************************** NOT WORKING
|
|
||||||
{ adapted from TUntabbedNotebookComponentEditor for LCL's Notebook
|
|
||||||
originally named "TJvCustomPageEditor" }
|
|
||||||
|
|
||||||
function TJvCustomPageListEditor.PageList: TJvCustomPageList;
|
|
||||||
begin
|
|
||||||
Result := TJvCustomPageList(GetComponent);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TJvCustomPageListEditor.AddNewPageToDesigner(Index: integer);
|
|
||||||
var
|
|
||||||
Hook: TPropertyEditorHook;
|
|
||||||
newPage: TJvCustomPage;
|
|
||||||
newName: string;
|
|
||||||
begin
|
|
||||||
Hook := nil;
|
|
||||||
if not GetHook(Hook) then exit;
|
|
||||||
DebugLn('GetHook ' + Hook.ClassName);
|
|
||||||
newPage := PageList.Pages[Index];
|
|
||||||
newName := GetDesigner.CreateUniqueComponentName(newPage.ClassName);
|
|
||||||
newPage.Caption := newName;
|
|
||||||
newPage.Name := newName;
|
|
||||||
PageList.ActivePageIndex := Index;
|
|
||||||
Hook.PersistentAdded(newPage, true);
|
|
||||||
Modified;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TJvCustomPageListEditor.DoAddPage;
|
|
||||||
begin
|
|
||||||
DebugLn('DoAddPage: ENTER');
|
|
||||||
if not HasHook then exit;
|
|
||||||
|
|
||||||
DebugLn('DoAddPage');
|
|
||||||
|
|
||||||
THackPageList(PageList).AddPage('');
|
|
||||||
DebugLn('DoAddPage: PageCount=' + IntToStr(PageList.pageCount));
|
|
||||||
AddNewPageToDesigner(PageList.PageCount-1);
|
|
||||||
DebugLn('DoAddPage: EXIT');
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TJvCustomPageListEditor.DoDeletePage;
|
|
||||||
var
|
|
||||||
Hook: TPropertyEditorHook;
|
|
||||||
OldIndex: integer;
|
|
||||||
PageComponent: TPersistent;
|
|
||||||
begin
|
|
||||||
OldIndex := PageList.ActivePageIndex;
|
|
||||||
if (OldIndex >= 0) and (OldIndex < PageList.PageCount) then
|
|
||||||
begin
|
|
||||||
if not GetHook(Hook) then exit;
|
|
||||||
PageComponent := TPersistent(PageList.Pages[OldIndex]);
|
|
||||||
Hook.DeletePersistent(PageComponent);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TJvCustomPageListEditor.AddMenuItemsForPages(ParentMenuItem: TMenuItem);
|
|
||||||
var
|
|
||||||
n: Integer;
|
|
||||||
i: integer;
|
|
||||||
NewMenuItem: TMenuItem;
|
|
||||||
begin
|
|
||||||
n := PageList.PageCount;
|
|
||||||
ParentMenuItem.Enabled := n > 0;
|
|
||||||
for i := 0 to n - 1 do
|
|
||||||
begin
|
|
||||||
NewMenuItem := TMenuItem.Create(ParentMenuItem);
|
|
||||||
NewMenuItem.Name := 'ShowPage' + IntToStr(i);
|
|
||||||
NewMenuItem.Caption := PageList.Pages[i].Name + ' "' + PageList.Pages[i].Caption + '"';
|
|
||||||
NewMenuItem.OnClick := @ShowPageMenuItemClick;
|
|
||||||
ParentMenuItem.Add(NewMenuItem);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TJvCustomPageListEditor.ShowPageMenuItemClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
AMenuItem: TMenuItem;
|
|
||||||
NewPageIndex: integer;
|
|
||||||
begin
|
|
||||||
AMenuItem := TMenuItem(Sender);
|
|
||||||
if (AMenuItem = nil) or (not (AMenuItem is TMenuItem)) then exit;
|
|
||||||
NewPageIndex := AMenuItem.MenuIndex;
|
|
||||||
if (NewPageIndex < 0) or (NewPageIndex >= PageList.PageCount) then exit;
|
|
||||||
PageList.ActivePageIndex := NewPageIndex;
|
|
||||||
GetDesigner.SelectOnlyThisComponent(PageList.Pages[NewPageIndex]);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TJvCustomPageListEditor.ExecuteVerb(Index: Integer);
|
|
||||||
begin
|
|
||||||
case Index of
|
|
||||||
unbvAddPage : DoAddPage;
|
|
||||||
unbvDeletePage : DoDeletePage; // beware: this can free the editor itself
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TJvCustomPageListEditor.GetVerb(Index: Integer): string;
|
|
||||||
begin
|
|
||||||
case Index of
|
|
||||||
unbvAddPage : Result := RsNewPage;
|
|
||||||
unbvDeletePage : Result := RsDelPage;
|
|
||||||
unbvShowPage : Result := RsShowPage;
|
|
||||||
else
|
|
||||||
Result := '';
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TJvCustomPageListEditor.GetVerbCount: Integer;
|
|
||||||
begin
|
|
||||||
Result := 3;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TJvCustomPageListEditor.PrepareItem(Index: Integer;
|
|
||||||
const AnItem: TMenuItem);
|
|
||||||
begin
|
|
||||||
inherited PrepareItem(Index, AnItem);
|
|
||||||
case Index of
|
|
||||||
unbvAddPage : ;
|
|
||||||
unbvDeletePage : AnItem.Enabled := PageList.ActivePageIndex >= 0;
|
|
||||||
unbvShowPage : AddMenuItemsForPages(AnItem);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
{ TJvCustomPageEditor }
|
|
||||||
{ adapted from TUNBPageComponentEditor for LCL's Notebook pages }
|
|
||||||
|
|
||||||
function TJvCustomPageEditor.PageList: TJvCustomPageList;
|
|
||||||
var
|
|
||||||
lPage: TJvCustomPage;
|
|
||||||
begin
|
|
||||||
lPage := Page;
|
|
||||||
if (lPage.Parent <> nil) and (lPage.Parent is TJvCustomPageList) then
|
|
||||||
Result := TJvCustomPageList(lPage.Parent)
|
|
||||||
else
|
|
||||||
Result := nil;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TJvCustomPageEditor.Page: TJvCustomPage;
|
|
||||||
begin
|
|
||||||
Result := TJvCustomPage(GetComponent);
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
procedure TJvCustomPageEditor.Edit;
|
procedure TJvCustomPageEditor.Edit;
|
||||||
begin
|
begin
|
||||||
ExecuteVerb(cShowEditor);
|
ExecuteVerb(cShowEditor);
|
||||||
@ -274,8 +94,7 @@ procedure TJvCustomPageEditor.ExecuteVerb(Index: Integer);
|
|||||||
begin
|
begin
|
||||||
case Index of
|
case Index of
|
||||||
cShowEditor:
|
cShowEditor:
|
||||||
ShowMessage('NOT IMPLEMENTED');
|
ShowPageListEditor(Self, GetPageControl);
|
||||||
// ShowPageListEditor(Designer, GetPageControl);
|
|
||||||
cNextPage:
|
cNextPage:
|
||||||
NextPage;
|
NextPage;
|
||||||
cPrevPage:
|
cPrevPage:
|
||||||
@ -289,7 +108,7 @@ end;
|
|||||||
|
|
||||||
function TJvCustomPageEditor.GetPageControl: TJvCustomPageList;
|
function TJvCustomPageEditor.GetPageControl: TJvCustomPageList;
|
||||||
begin
|
begin
|
||||||
if Component is TJvCustomPageList then
|
if GetComponent is TJvCustomPageList then
|
||||||
Result := TJvCustomPageList(Component)
|
Result := TJvCustomPageList(Component)
|
||||||
else
|
else
|
||||||
Result := TJvCustomPageList(TJvCustomPage(Component).PageList);
|
Result := TJvCustomPageList(TJvCustomPage(Component).PageList);
|
||||||
@ -322,14 +141,20 @@ procedure TJvCustomPageEditor.InsertPage;
|
|||||||
var
|
var
|
||||||
P: TJvCustomPage;
|
P: TJvCustomPage;
|
||||||
C: TJvCustomPageList;
|
C: TJvCustomPageList;
|
||||||
|
Hook: TPropertyEditorHook = nil;
|
||||||
begin
|
begin
|
||||||
|
if not GetHook(Hook) then
|
||||||
|
Exit;
|
||||||
C := GetPageControl;
|
C := GetPageControl;
|
||||||
P := C.GetPageClass.Create(Designer.LookupRoot);
|
P := C.GetPageClass.Create(C.Owner);
|
||||||
try
|
try
|
||||||
P.Parent := C;
|
P.Parent := C;
|
||||||
P.Name := Designer.UniqueName(C.GetPageClass.ClassName);
|
P.Name := GetDesigner.CreateUniqueComponentName(C.GetPageClass.ClassName);
|
||||||
P.PageList := C;
|
P.PageList := C;
|
||||||
C.ActivePage := P;
|
C.ActivePage := P;
|
||||||
|
Hook.PersistentAdded(P, True);
|
||||||
|
GlobalDesignHook.SelectOnlyThis(P);
|
||||||
|
Modified;
|
||||||
except
|
except
|
||||||
P.Free;
|
P.Free;
|
||||||
raise;
|
raise;
|
||||||
@ -350,24 +175,24 @@ procedure TJvCustomPageEditor.RemovePage;
|
|||||||
var
|
var
|
||||||
AList: TJvCustomPageList;
|
AList: TJvCustomPageList;
|
||||||
APage: TJvCustomPage;
|
APage: TJvCustomPage;
|
||||||
|
APers: TPersistent;
|
||||||
|
Hook: TPropertyEditorHook;
|
||||||
begin
|
begin
|
||||||
AList := GetPageControl;
|
AList := GetPageControl;
|
||||||
if (AList <> nil) and (AList.ActivePage <> nil) then
|
if (AList <> nil) and (AList.ActivePage <> nil) then
|
||||||
begin
|
begin
|
||||||
APage := AList.ActivePage;
|
APage := AList.ActivePage;
|
||||||
// Designer.SelectComponent(APage);
|
|
||||||
Designer.SelectOnlyThisComponent(APage);
|
|
||||||
APage.PageList := nil;
|
APage.PageList := nil;
|
||||||
APage.Free;
|
//APage.Free;
|
||||||
Designer.Modified;
|
//Designer.Modified;
|
||||||
|
APers := TPersistent(APage);
|
||||||
|
if GetHook(Hook) then
|
||||||
|
Hook.DeletePersistent(APers);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
}
|
|
||||||
*********************************************************)
|
|
||||||
|
|
||||||
|
|
||||||
//=== { TJvActivePageProperty } ==============================================
|
//=== { TJvActivePageProperty } ==============================================
|
||||||
(*
|
|
||||||
function TJvActivePageProperty.GetAttributes: TPropertyAttributes;
|
function TJvActivePageProperty.GetAttributes: TPropertyAttributes;
|
||||||
begin
|
begin
|
||||||
Result := [paValueList];
|
Result := [paValueList];
|
||||||
@ -378,16 +203,16 @@ var
|
|||||||
I: Integer;
|
I: Integer;
|
||||||
Component: TComponent;
|
Component: TComponent;
|
||||||
begin
|
begin
|
||||||
for I := 0 to Designer.GetRoot.ComponentCount - 1 do
|
if (GlobalDesignHook <> nil) and (GlobalDesignHook.LookupRoot <> nil) and
|
||||||
|
(GlobalDesignHook.LookupRoot is TComponent) then
|
||||||
|
for I := 0 to TComponent(GlobalDesignHook.LookupRoot).ComponentCount - 1 do
|
||||||
begin
|
begin
|
||||||
Component := Designer.GetRoot.Components[I];
|
Component := TComponent(GlobalDesignHook.LookupRoot).Components[I];
|
||||||
if (Component.Name <> '') and (Component is TJvCustomPage) and
|
if (Component.Name <> '') and (Component is TJvCustomPage) and
|
||||||
(TJvCustomPage(Component).PageList = GetComponent(0)) then
|
(TJvCustomPage(Component).PageList = GetComponent(0)) then
|
||||||
Proc(Component.Name);
|
Proc(Component.Name);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
*)
|
|
||||||
|
|
||||||
|
|
||||||
//=== { TJvSettingsTreeImagesProperty } ======================================
|
//=== { TJvSettingsTreeImagesProperty } ======================================
|
||||||
|
|
||||||
@ -405,7 +230,6 @@ begin
|
|||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
//=== { TJvShowDesignCaptionProperty } =======================================
|
//=== { TJvShowDesignCaptionProperty } =======================================
|
||||||
|
|
||||||
function TJvShowDesignCaptionProperty.GetAttributes: TPropertyAttributes;
|
function TJvShowDesignCaptionProperty.GetAttributes: TPropertyAttributes;
|
||||||
|
90
components/jvcllaz/design/JvPageComps/jvpagemanagerform.lfm
Normal file
90
components/jvcllaz/design/JvPageComps/jvpagemanagerform.lfm
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
object JvProxyEditor: TJvProxyEditor
|
||||||
|
Left = 269
|
||||||
|
Top = 114
|
||||||
|
ClientWidth = 508
|
||||||
|
ClientHeight = 295
|
||||||
|
BorderIcons = [biSystemMenu]
|
||||||
|
Caption = 'Page Proxy Editor'
|
||||||
|
Icon.Data = {
|
||||||
|
0000010001002020100000000000E80200001600000028000000200000004000
|
||||||
|
0000010004000000000000020000000000000000000000000000000000000000
|
||||||
|
0000000080000080000000808000800000008000800080800000C0C0C0008080
|
||||||
|
80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000F000000000000000000000000000000FF00F0000000000
|
||||||
|
0000000000000000FFF07F0000000BBBBBBBBBBBBBBBBB0FFFF07F0BBBB00B80
|
||||||
|
00000000000000FFF8F07F0000B00B8FFEFFFFFFFFF708FF88F07F0770B00B8F
|
||||||
|
FEFFFFFFFFF0B0F8D8F07F0770B00B8EEEEEEEEEEEE708FD8DF07F0A70B00B8F
|
||||||
|
FEFFFFFFFFF708F8D8F07F0A70B00B8FFEFFFFFFFFF0B0FD8DF07F0A70B00B8E
|
||||||
|
EEEEEEEEEEE708F8DFF07F0A70B00B8FFEFFFFFFFFF708FDFFF07F0A70B00B8F
|
||||||
|
FEFFFFFFFFF0B0FFAFF0CF0A70B00B8EEEEEEEEEEEE708FAAFF0CF0770B00B8F
|
||||||
|
FEFFFFFFFFF708FAAFF0CF0770B00B8FFEFFFFFFFFF0B0FAAFF0CF0770B00B8E
|
||||||
|
EEEEEEEEEEE708FAAFF07F0970B00B8FFEFFFFFFFFF708FAFFF07F0970B00B8F
|
||||||
|
FEFFFFFFFFF0B0FFFFF07F0770B00B8EEEEEEEEEEEE708FFFF087F0770B00B8F
|
||||||
|
FEFFFFFFFFF708FFF087F00770B00B8FFEFFFFFFFFF0B0FF08700877F0B00B8F
|
||||||
|
FE777777777708F0800877FFF0B00B8F00000000008708000777FFFFF0B00B88
|
||||||
|
0FF77778800000000000000000B00BBBB0FF77880BBB0BBBBBBBBBBBBBB00000
|
||||||
|
000FF780000BBB00000000000000000000FF7778000000000000000000000000
|
||||||
|
000000000000000000000000000000000000000000000000000000000000FFFF
|
||||||
|
FEFFFFFFFCFFFFFFF89FFFFFF01F800000010000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
000000000000000000000000000080000001F8063FFFFC0FFFFFFFFFFFFF0100}
|
||||||
|
OldCreateOrder = True
|
||||||
|
OnClose = FormClose
|
||||||
|
OnCreate = FormCreate
|
||||||
|
OnResize = FormResize
|
||||||
|
OnShow = FormShow
|
||||||
|
PixelsPerInch = 96
|
||||||
|
TextHeight = 13
|
||||||
|
object BtnPanel: TPanel
|
||||||
|
Left = 409
|
||||||
|
Top = 0
|
||||||
|
Width = 97
|
||||||
|
Height = 304
|
||||||
|
Align = alRight
|
||||||
|
BevelOuter = bvNone
|
||||||
|
TabOrder = 0
|
||||||
|
object CloseBtn: TButton
|
||||||
|
Left = 11
|
||||||
|
Top = 12
|
||||||
|
Width = 77
|
||||||
|
Height = 25
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
Caption = 'Close'
|
||||||
|
TabOrder = 0
|
||||||
|
OnClick = CloseBtnClick
|
||||||
|
end
|
||||||
|
object DeleteBtn: TButton
|
||||||
|
Left = 11
|
||||||
|
Top = 44
|
||||||
|
Width = 77
|
||||||
|
Height = 25
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
Caption = 'Delete'
|
||||||
|
TabOrder = 1
|
||||||
|
OnClick = DeleteBtnClick
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object ProxyGrid: TDrawGrid
|
||||||
|
Left = 0
|
||||||
|
Top = 0
|
||||||
|
Width = 409
|
||||||
|
Height = 304
|
||||||
|
Align = alClient
|
||||||
|
ColCount = 2
|
||||||
|
Ctl3D = True
|
||||||
|
DefaultRowHeight = 17
|
||||||
|
FixedCols = 0
|
||||||
|
RowCount = 2
|
||||||
|
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRowSelect]
|
||||||
|
ParentCtl3D = False
|
||||||
|
TabOrder = 1
|
||||||
|
OnDrawCell = ProxyGridDrawCell
|
||||||
|
OnKeyDown = ProxyGridKeyDown
|
||||||
|
OnSelectCell = ProxyGridSelectCell
|
||||||
|
ColWidths = (
|
||||||
|
162
|
||||||
|
175)
|
||||||
|
end
|
||||||
|
end
|
452
components/jvcllaz/design/JvPageComps/jvpagemanagerform.pas
Normal file
452
components/jvcllaz/design/JvPageComps/jvpagemanagerform.pas
Normal file
@ -0,0 +1,452 @@
|
|||||||
|
{-----------------------------------------------------------------------------
|
||||||
|
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/MPL-1.1.html
|
||||||
|
|
||||||
|
Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
|
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
|
||||||
|
the specific language governing rights and limitations under the License.
|
||||||
|
|
||||||
|
The Original Code is: JvPgMngrEd.PAS, released on 2002-07-04.
|
||||||
|
|
||||||
|
The Initial Developers of the Original Code are: Fedor Koshevnikov, Igor Pavluk and Serge Korolev
|
||||||
|
Copyright (c) 1997, 1998 Fedor Koshevnikov, Igor Pavluk and Serge Korolev
|
||||||
|
Copyright (c) 2001,2002 SGB Software
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
|
||||||
|
located at http://jvcl.delphi-jedi.org
|
||||||
|
|
||||||
|
Known Issues:
|
||||||
|
-----------------------------------------------------------------------------}
|
||||||
|
// $Id$
|
||||||
|
|
||||||
|
unit JvPageManagerForm;
|
||||||
|
|
||||||
|
{$I jvcl.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
SysUtils, Classes, Windows, Graphics, Controls, Forms, Grids, StdCtrls, ExtCtrls,
|
||||||
|
RTLConsts, DesignIntf, DesignEditors, VCLEditors, DesignWindows,
|
||||||
|
JvPageManager, JvJVCLUtils, JvComponent;
|
||||||
|
|
||||||
|
type
|
||||||
|
TJvProxyEditor = class(TDesignWindow)
|
||||||
|
BtnPanel: TPanel;
|
||||||
|
CloseBtn: TButton;
|
||||||
|
DeleteBtn: TButton;
|
||||||
|
ProxyGrid: TDrawGrid;
|
||||||
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||||||
|
procedure FormShow(Sender: TObject);
|
||||||
|
procedure ProxyGridDrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState);
|
||||||
|
procedure ProxyGridSelectCell(Sender: TObject; Col, Row: Longint; var CanSelect: Boolean);
|
||||||
|
procedure CloseBtnClick(Sender: TObject);
|
||||||
|
procedure DeleteBtnClick(Sender: TObject);
|
||||||
|
procedure ProxyGridKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||||
|
procedure FormResize(Sender: TObject);
|
||||||
|
procedure FormCreate(Sender: TObject);
|
||||||
|
private
|
||||||
|
FPageManager: TJvPageManager;
|
||||||
|
FDeleting: Boolean;
|
||||||
|
procedure SetPageManager(Value: TJvPageManager);
|
||||||
|
function GetForm: TCustomForm;
|
||||||
|
procedure UpdateData;
|
||||||
|
function CheckPageManager: Boolean;
|
||||||
|
procedure SelectProxy(Proxy: TJvPageProxy);
|
||||||
|
function ProxyByRow(Row: Integer): TJvPageProxy;
|
||||||
|
protected
|
||||||
|
function UniqueName(Component: TComponent): string; override;
|
||||||
|
procedure Activated; override;
|
||||||
|
public
|
||||||
|
procedure NameProxy(Sender: TObject);
|
||||||
|
procedure ItemsModified(const Designer: IDesigner); override;
|
||||||
|
procedure DesignerClosed(const ADesigner: IDesigner; AGoingDormant: Boolean); override;
|
||||||
|
function GetEditState: TEditState; override;
|
||||||
|
procedure ItemDeleted(const ADesigner: IDesigner; Item: TPersistent); override;
|
||||||
|
property PageManager: TJvPageManager read FPageManager write SetPageManager;
|
||||||
|
property OwnerForm: TCustomForm read GetForm;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvProxyListProperty = class(TPropertyEditor)
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
function GetValue: string; override;
|
||||||
|
procedure Edit; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvPageManagerEditor = class(TComponentEditor)
|
||||||
|
procedure ExecuteVerb(Index: Integer); override;
|
||||||
|
function GetVerb(Index: Integer): string; override;
|
||||||
|
function GetVerbCount: Integer; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvPageNameProperty = class(TStringProperty)
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
procedure GetValues(Proc: TGetStrProc); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvPageBtnProperty = class(TComponentProperty)
|
||||||
|
procedure GetValues(Proc: TGetStrProc); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
Consts, Buttons,
|
||||||
|
JvDsgnConsts, JvDsgnTypes;
|
||||||
|
|
||||||
|
{$R *.dfm}
|
||||||
|
|
||||||
|
function FindEditor(Manager: TJvPageManager): TJvProxyEditor;
|
||||||
|
var
|
||||||
|
I: Integer;
|
||||||
|
begin
|
||||||
|
Result := nil;
|
||||||
|
for I := 0 to Screen.FormCount - 1 do
|
||||||
|
if Screen.Forms[I] is TJvProxyEditor then
|
||||||
|
if TJvProxyEditor(Screen.Forms[I]).PageManager = Manager then
|
||||||
|
begin
|
||||||
|
Result := TJvProxyEditor(Screen.Forms[I]);
|
||||||
|
Break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ShowProxyEditor(Designer: IJvDesigner; Manager: TJvPageManager);
|
||||||
|
var
|
||||||
|
Editor: TJvProxyEditor;
|
||||||
|
begin
|
||||||
|
if Manager = nil then
|
||||||
|
Exit;
|
||||||
|
Editor := FindEditor(Manager);
|
||||||
|
if Editor <> nil then
|
||||||
|
begin
|
||||||
|
Editor.Show;
|
||||||
|
if Editor.WindowState = wsMinimized then
|
||||||
|
Editor.WindowState := wsNormal;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
Editor := TJvProxyEditor.Create(Application);
|
||||||
|
try
|
||||||
|
Editor.Designer := IJvFormDesigner(Designer);
|
||||||
|
Editor.PageManager := Manager;
|
||||||
|
Editor.Show;
|
||||||
|
except
|
||||||
|
Editor.Free;
|
||||||
|
raise;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvProxyListProperty } ===============================================
|
||||||
|
|
||||||
|
function TJvProxyListProperty.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result := [paDialog, paReadOnly];
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvProxyListProperty.GetValue: string;
|
||||||
|
var
|
||||||
|
List: TList;
|
||||||
|
begin
|
||||||
|
List := TList(Pointer(GetOrdValue));
|
||||||
|
if (List = nil) or (List.Count = 0) then
|
||||||
|
Result := srNone
|
||||||
|
else
|
||||||
|
Result := Format('(%s)', [GetPropType^.Name]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvProxyListProperty.Edit;
|
||||||
|
begin
|
||||||
|
ShowProxyEditor(Designer, TJvPageManager(GetComponent(0)));
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvPageBtnProperty } =================================================
|
||||||
|
|
||||||
|
procedure TJvPageBtnProperty.GetValues(Proc: TGetStrProc);
|
||||||
|
var
|
||||||
|
I: Integer;
|
||||||
|
Component: TComponent;
|
||||||
|
begin
|
||||||
|
for I := 0 to Designer.Root.ComponentCount - 1 do
|
||||||
|
begin
|
||||||
|
Component := Designer.Root.Components[I];
|
||||||
|
|
||||||
|
if (Component.Name <> '') and (Component.InheritsFrom(TButtonControl) or
|
||||||
|
Component.InheritsFrom(TSpeedButton) or
|
||||||
|
AnsiSameText(Component.ClassName, 'TJvSpeedButton')) then
|
||||||
|
Proc(Component.Name);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvPageNameProperty } ================================================
|
||||||
|
|
||||||
|
function TJvPageNameProperty.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result := [paValueList];
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvPageNameProperty.GetValues(Proc: TGetStrProc);
|
||||||
|
var
|
||||||
|
PageProxy: TJvPageProxy;
|
||||||
|
I: Integer;
|
||||||
|
begin
|
||||||
|
PageProxy := GetComponent(0) as TJvPageProxy;
|
||||||
|
if (PageProxy <> nil) and (PageProxy.PageManager <> nil) and
|
||||||
|
(PageProxy.PageManager.PageOwner <> nil) then
|
||||||
|
for I := 0 to PageProxy.PageManager.PageCount - 1 do
|
||||||
|
Proc(PageProxy.PageManager.PageNames[I]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvPageManagerEditor } ===============================================
|
||||||
|
|
||||||
|
procedure TJvPageManagerEditor.ExecuteVerb(Index: Integer);
|
||||||
|
begin
|
||||||
|
case Index of
|
||||||
|
0:
|
||||||
|
ShowProxyEditor(Designer, TJvPageManager(Component));
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvPageManagerEditor.GetVerb(Index: Integer): string;
|
||||||
|
begin
|
||||||
|
case Index of
|
||||||
|
0:
|
||||||
|
Result := RsProxyEditor;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvPageManagerEditor.GetVerbCount: Integer;
|
||||||
|
begin
|
||||||
|
Result := 1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvProxyEditor } =====================================================
|
||||||
|
|
||||||
|
procedure TJvProxyEditor.SetPageManager(Value: TJvPageManager);
|
||||||
|
begin
|
||||||
|
if FPageManager <> Value then
|
||||||
|
begin
|
||||||
|
if FPageManager <> nil then
|
||||||
|
FPageManager.OnCheckProxy := nil;
|
||||||
|
FPageManager := Value;
|
||||||
|
if FPageManager <> nil then
|
||||||
|
FPageManager.OnCheckProxy := NameProxy;
|
||||||
|
UpdateData;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvProxyEditor.UniqueName(Component: TComponent): string;
|
||||||
|
var
|
||||||
|
Temp: string;
|
||||||
|
begin
|
||||||
|
Result := '';
|
||||||
|
if (Component <> nil) then
|
||||||
|
Temp := Component.ClassName
|
||||||
|
else
|
||||||
|
Temp := TJvPageProxy.ClassName;
|
||||||
|
if (UpCase(Temp[1]) = 'T') and (Length(Temp) > 1) then
|
||||||
|
System.Delete(Temp, 1, 1);
|
||||||
|
Result := Designer.UniqueName(Temp);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvProxyEditor.GetEditState: TEditState;
|
||||||
|
begin
|
||||||
|
Result := [];
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvProxyEditor.NameProxy(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if (Sender is TJvPageProxy) and (TJvPageProxy(Sender).Name = '') then
|
||||||
|
TJvPageProxy(Sender).Name := UniqueName(TJvPageProxy(Sender));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvProxyEditor.DesignerClosed(const ADesigner: IDesigner; AGoingDormant: Boolean);
|
||||||
|
begin
|
||||||
|
if ADesigner.Root = OwnerForm then
|
||||||
|
Free;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvProxyEditor.ItemsModified(const Designer: IDesigner);
|
||||||
|
begin
|
||||||
|
if not (csDestroying in ComponentState) then
|
||||||
|
UpdateData;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvProxyEditor.Activated;
|
||||||
|
begin
|
||||||
|
SelectProxy(ProxyByRow(ProxyGrid.Row - 1));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvProxyEditor.ItemDeleted(const ADesigner: IDesigner; Item: TPersistent);
|
||||||
|
begin
|
||||||
|
if Item = FPageManager then
|
||||||
|
begin
|
||||||
|
FPageManager := nil;
|
||||||
|
Close;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvProxyEditor.UpdateData;
|
||||||
|
var
|
||||||
|
ProxyCount: Integer;
|
||||||
|
begin
|
||||||
|
if CheckPageManager then
|
||||||
|
begin
|
||||||
|
if not FDeleting then
|
||||||
|
FPageManager.Resync;
|
||||||
|
ProxyCount := FPageManager.PageProxies.Count;
|
||||||
|
if ProxyCount = 0 then
|
||||||
|
begin
|
||||||
|
ProxyGrid.RowCount := 2;
|
||||||
|
SelectProxy(nil);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
ProxyGrid.RowCount := 1 + ProxyCount;
|
||||||
|
DeleteBtn.Enabled := ProxyCount > 0;
|
||||||
|
ProxyGrid.Invalidate;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvProxyEditor.GetForm: TCustomForm;
|
||||||
|
begin
|
||||||
|
Result := TCustomForm(Designer.Root); { GetParentForm(FBar) }
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvProxyEditor.FormClose(Sender: TObject; var Action: TCloseAction);
|
||||||
|
begin
|
||||||
|
Action := caFree;
|
||||||
|
if FPageManager <> nil then
|
||||||
|
FPageManager.OnCheckProxy := nil;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvProxyEditor.FormShow(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if FPageManager.PageOwner <> nil then
|
||||||
|
Caption := Format(RsPageProxies, [FPageManager.PageOwner.Name]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvProxyEditor.CheckPageManager: Boolean;
|
||||||
|
begin
|
||||||
|
Result := (FPageManager <> nil) and (FPageManager.Owner <> nil) and
|
||||||
|
(Designer.Root <> nil);
|
||||||
|
end;
|
||||||
|
|
||||||
|
type
|
||||||
|
TDesignerSelectionList = IDesignerSelections;
|
||||||
|
|
||||||
|
procedure TJvProxyEditor.SelectProxy(Proxy: TJvPageProxy);
|
||||||
|
var
|
||||||
|
FComponents: TDesignerSelectionList;
|
||||||
|
begin
|
||||||
|
if CheckPageManager and Active then
|
||||||
|
begin
|
||||||
|
FComponents := TDesignerSelections.Create;
|
||||||
|
if Proxy <> nil then
|
||||||
|
FComponents.Add(Proxy)
|
||||||
|
else
|
||||||
|
FComponents.Add(FPageManager);
|
||||||
|
SetSelection(FComponents);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvProxyEditor.ProxyByRow(Row: Integer): TJvPageProxy;
|
||||||
|
begin
|
||||||
|
Result := nil;
|
||||||
|
if CheckPageManager and (Row >= 0) and
|
||||||
|
(Row < FPageManager.PageProxies.Count) then
|
||||||
|
Result := FPageManager.PageProxies.Items[Row];
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvProxyEditor.ProxyGridDrawCell(Sender: TObject;
|
||||||
|
Col, Row: Longint; Rect: TRect; State: TGridDrawState);
|
||||||
|
var
|
||||||
|
CellText: string;
|
||||||
|
Proxy: TJvPageProxy;
|
||||||
|
begin
|
||||||
|
CellText := '';
|
||||||
|
if gdFixed in State then
|
||||||
|
case Col of
|
||||||
|
0:
|
||||||
|
CellText := RsProxyName;
|
||||||
|
1:
|
||||||
|
CellText := RsPageName;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
Proxy := ProxyByRow(Row - 1);
|
||||||
|
if Proxy <> nil then
|
||||||
|
begin
|
||||||
|
case Col of
|
||||||
|
0:
|
||||||
|
CellText := Proxy.Name;
|
||||||
|
1:
|
||||||
|
CellText := Proxy.PageName;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
DrawCellText(ProxyGrid, Col, Row, CellText, Rect, taLeftJustify, vaCenterJustify);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvProxyEditor.ProxyGridSelectCell(Sender: TObject;
|
||||||
|
Col, Row: Longint; var CanSelect: Boolean);
|
||||||
|
begin
|
||||||
|
SelectProxy(ProxyByRow(Row - 1));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvProxyEditor.CloseBtnClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
Close;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvProxyEditor.DeleteBtnClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
Proxy: TJvPageProxy;
|
||||||
|
begin
|
||||||
|
Proxy := ProxyByRow(ProxyGrid.Row - 1);
|
||||||
|
if Proxy <> nil then
|
||||||
|
begin
|
||||||
|
TCustomForm(Designer.Root).Designer.ValidateRename(Proxy, Proxy.Name, '');
|
||||||
|
FDeleting := True;
|
||||||
|
try
|
||||||
|
Proxy.Free;
|
||||||
|
Designer.Modified;
|
||||||
|
finally
|
||||||
|
FDeleting := False;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvProxyEditor.ProxyGridKeyDown(Sender: TObject; var Key: Word;
|
||||||
|
Shift: TShiftState);
|
||||||
|
begin
|
||||||
|
if Shift = [] then
|
||||||
|
begin
|
||||||
|
case Key of
|
||||||
|
VK_RETURN:
|
||||||
|
if ProxyByRow(ProxyGrid.Row - 1) <> nil then
|
||||||
|
ActivateInspector(#0);
|
||||||
|
VK_DELETE:
|
||||||
|
DeleteBtnClick(nil);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvProxyEditor.FormResize(Sender: TObject);
|
||||||
|
begin
|
||||||
|
with ProxyGrid do
|
||||||
|
begin
|
||||||
|
DefaultColWidth := (ClientWidth - 1) div 2;
|
||||||
|
ColWidths[1] := ClientWidth - ColWidths[0] - 1;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvProxyEditor.FormCreate(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if NewStyleControls then
|
||||||
|
Font.Style := [];
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
@ -0,0 +1,87 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<CONFIG>
|
||||||
|
<ProjectOptions>
|
||||||
|
<Version Value="12"/>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<General>
|
||||||
|
<Flags>
|
||||||
|
<CompatibilityMode Value="True"/>
|
||||||
|
</Flags>
|
||||||
|
<SessionStorage Value="InProjectDir"/>
|
||||||
|
<Title Value="JvTabBarDemo_PageList"/>
|
||||||
|
<Scaled Value="True"/>
|
||||||
|
<ResourceType Value="res"/>
|
||||||
|
<UseXPManifest Value="True"/>
|
||||||
|
<XPManifest>
|
||||||
|
<DpiAware Value="True"/>
|
||||||
|
</XPManifest>
|
||||||
|
<Icon Value="0"/>
|
||||||
|
</General>
|
||||||
|
<BuildModes Count="1">
|
||||||
|
<Item1 Name="Default" Default="True"/>
|
||||||
|
</BuildModes>
|
||||||
|
<PublishOptions>
|
||||||
|
<Version Value="2"/>
|
||||||
|
<UseFileFilters Value="True"/>
|
||||||
|
</PublishOptions>
|
||||||
|
<RunParams>
|
||||||
|
<FormatVersion Value="2"/>
|
||||||
|
</RunParams>
|
||||||
|
<RequiredPackages Count="3">
|
||||||
|
<Item1>
|
||||||
|
<PackageName Value="LazControls"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<PackageName Value="JvPageCompsR"/>
|
||||||
|
</Item2>
|
||||||
|
<Item3>
|
||||||
|
<PackageName Value="LCL"/>
|
||||||
|
</Item3>
|
||||||
|
</RequiredPackages>
|
||||||
|
<Units Count="2">
|
||||||
|
<Unit0>
|
||||||
|
<Filename Value="JvTabBarDemo_PageList.lpr"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
</Unit0>
|
||||||
|
<Unit1>
|
||||||
|
<Filename Value="main.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ComponentName Value="MainForm"/>
|
||||||
|
<HasResources Value="True"/>
|
||||||
|
<ResourceBaseClass Value="Form"/>
|
||||||
|
<UnitName Value="Main"/>
|
||||||
|
</Unit1>
|
||||||
|
</Units>
|
||||||
|
</ProjectOptions>
|
||||||
|
<CompilerOptions>
|
||||||
|
<Version Value="11"/>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<Target>
|
||||||
|
<Filename Value="../../bin/$(TargetCPU)-$(TargetOS)/JvTabBarDemo_PageList/JvTabBarDemo_PageList"/>
|
||||||
|
</Target>
|
||||||
|
<SearchPaths>
|
||||||
|
<IncludeFiles Value="$(ProjOutDir)"/>
|
||||||
|
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
||||||
|
</SearchPaths>
|
||||||
|
<Linking>
|
||||||
|
<Options>
|
||||||
|
<Win32>
|
||||||
|
<GraphicApplication Value="True"/>
|
||||||
|
</Win32>
|
||||||
|
</Options>
|
||||||
|
</Linking>
|
||||||
|
</CompilerOptions>
|
||||||
|
<Debugging>
|
||||||
|
<Exceptions Count="3">
|
||||||
|
<Item1>
|
||||||
|
<Name Value="EAbort"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<Name Value="ECodetoolError"/>
|
||||||
|
</Item2>
|
||||||
|
<Item3>
|
||||||
|
<Name Value="EFOpenError"/>
|
||||||
|
</Item3>
|
||||||
|
</Exceptions>
|
||||||
|
</Debugging>
|
||||||
|
</CONFIG>
|
@ -0,0 +1,25 @@
|
|||||||
|
program JvTabBarDemo_PageList;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
uses
|
||||||
|
{$IFDEF UNIX}
|
||||||
|
cthreads,
|
||||||
|
{$ENDIF}
|
||||||
|
{$IFDEF HASAMIGA}
|
||||||
|
athreads,
|
||||||
|
{$ENDIF}
|
||||||
|
Interfaces, // this includes the LCL widgetset
|
||||||
|
Forms, lazcontrols, Main
|
||||||
|
{ you can add units after this };
|
||||||
|
|
||||||
|
{$R *.res}
|
||||||
|
|
||||||
|
begin
|
||||||
|
RequireDerivedFormResource:=True;
|
||||||
|
Application.Scaled:=True;
|
||||||
|
Application.Initialize;
|
||||||
|
Application.CreateForm(TMainForm, MainForm);
|
||||||
|
Application.Run;
|
||||||
|
end.
|
||||||
|
|
840
components/jvcllaz/examples/JvTabBar_PageList/main.lfm
Normal file
840
components/jvcllaz/examples/JvTabBar_PageList/main.lfm
Normal file
@ -0,0 +1,840 @@
|
|||||||
|
object MainForm: TMainForm
|
||||||
|
Left = 345
|
||||||
|
Height = 469
|
||||||
|
Top = 134
|
||||||
|
Width = 723
|
||||||
|
Caption = 'JvTabBar Demo'
|
||||||
|
ClientHeight = 469
|
||||||
|
ClientWidth = 723
|
||||||
|
LCLVersion = '2.1.0.0'
|
||||||
|
object JvTabBar1: TJvTabBar
|
||||||
|
Left = 0
|
||||||
|
Height = 40
|
||||||
|
Top = 0
|
||||||
|
Width = 723
|
||||||
|
AutoSize = False
|
||||||
|
CloseButton = False
|
||||||
|
HotTracking = True
|
||||||
|
PageListTabLink = True
|
||||||
|
PageList = JvPageList1
|
||||||
|
Images = ImageList1
|
||||||
|
Tabs = <
|
||||||
|
item
|
||||||
|
Caption = 'Memo'
|
||||||
|
Selected = True
|
||||||
|
ImageIndex = 0
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Caption = 'Image'
|
||||||
|
ImageIndex = 1
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Caption = 'Grid'
|
||||||
|
ImageIndex = 2
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Caption = 'Shell controls'
|
||||||
|
ImageIndex = 3
|
||||||
|
end>
|
||||||
|
OnTabCloseQuery = JvTabBar1TabCloseQuery
|
||||||
|
end
|
||||||
|
object JvPageList1: TJvPageList
|
||||||
|
Left = 0
|
||||||
|
Height = 373
|
||||||
|
Top = 40
|
||||||
|
Width = 723
|
||||||
|
ActivePage = JvStandardPage1
|
||||||
|
PropagateEnable = False
|
||||||
|
Align = alClient
|
||||||
|
object JvStandardPage1: TJvStandardPage
|
||||||
|
Left = 0
|
||||||
|
Height = 373
|
||||||
|
Top = 0
|
||||||
|
Width = 723
|
||||||
|
Caption = 'Memo'
|
||||||
|
object Memo1: TMemo
|
||||||
|
Left = 8
|
||||||
|
Height = 357
|
||||||
|
Top = 8
|
||||||
|
Width = 707
|
||||||
|
Align = alClient
|
||||||
|
BorderSpacing.Around = 8
|
||||||
|
Font.Name = 'Courier New'
|
||||||
|
Lines.Strings = (
|
||||||
|
'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.'
|
||||||
|
)
|
||||||
|
ParentFont = False
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object JvStandardPage2: TJvStandardPage
|
||||||
|
Left = 0
|
||||||
|
Height = 388
|
||||||
|
Top = 0
|
||||||
|
Width = 723
|
||||||
|
Caption = 'Image'
|
||||||
|
Color = clForm
|
||||||
|
object Image1: TImage
|
||||||
|
Left = 8
|
||||||
|
Height = 372
|
||||||
|
Top = 8
|
||||||
|
Width = 707
|
||||||
|
Align = alClient
|
||||||
|
BorderSpacing.Around = 8
|
||||||
|
Picture.Data = {
|
||||||
|
1754506F727461626C654E6574776F726B47726170686963F03E000089504E47
|
||||||
|
0D0A1A0A0000000D49484452000001C6000001540806000000BECC9C61000014
|
||||||
|
BA7A5458745261772070726F66696C6520747970652065786966000078DAC59A
|
||||||
|
679223371285FFE3147B04B884390E6C846EB0C7DFEF15D93D4E23378AD869A9
|
||||||
|
D9C3218B40E6CB6750EDCE7F7FBBEE3FFCB158B2CB565BE9A578FEE49E7B1CFC
|
||||||
|
D0FCEBCFEB31F8FC7C7FFEACF2FE297CFBBCB3FCFE31F298784CAF7F28E7F518
|
||||||
|
06CFDB9737D4FC7E7E7EFBBCABEBF5436CEF0BBDFFE1E382499F1CB594F722DF
|
||||||
|
174AF1F57C78FFDDF5F7FB46FE6A3BEFFF537D2EF1F9E2EFFF9E2BC5D8C69329
|
||||||
|
BA7852489EEFCFA72456905A1A7C0FCF77BD28A4C4CF3EE5E7FB4F6AE73E7FFC
|
||||||
|
AE78F3BE57F85DEDFC78BF227D5B0AE7CBFB05E5BB1ABD9F0FF6FBB57B2AF4F5
|
||||||
|
8A82FFECDA37FF507BF878CB0FB5BB77B77BCF6B7723172A55DC7B53E1B584D7
|
||||||
|
3278E1A494E9795BE1ABF2BFF1737DBE3A5F8D2D2E8ABEE9E6E46BB9D043E4B3
|
||||||
|
6FC86187116E38CFE30A8B25E67862E531C615D3F35C4B35F6B89EA6647D851B
|
||||||
|
6BEA693B7A14D3A26B89A7E3E75AC2F3B9FDF9BC151A9FBC03AF8C818B05DEF1
|
||||||
|
C397FBBD27FFC9D7E785EE1574435031697D7835380A802C439DD3775E4543C2
|
||||||
|
7DF7CDDEF5E5CB7DB6F5CB1F3536D1417BCADCD8E0E0DACF25A6852FD84A4F9F
|
||||||
|
13AF339F9D7FC13DD4FDBE0025E2B38DC580EE1C7C09C94209BEC65843A08E8D
|
||||||
|
FE0C561E538E930E04B3B883BBF426A542735AD467F39E1A9ED74668E6791A6A
|
||||||
|
A111964AAAB4A6A741B37236F053730343C392656766C5AA35EB364A2AB95829
|
||||||
|
A51671D4A8A9E66AB5D45A5BED75B4D472B3565A6DADF5367AEC090AB35E7A75
|
||||||
|
BDF5DEC7E04307971EBC7BF08A31669C69E669B3CC3ADBEC732CE0B3F2B25556
|
||||||
|
5D6DF53576DC6933FEBBECEA76DB7D8F130E503AF9D829A79E76FA1917ACDD74
|
||||||
|
F3B55B6EBDEDF63B3EBBF6EEEAB75D0BDF75EE8FBB16DE5D53C7F2F3BAFAA56B
|
||||||
|
3C5DEBC72582E8C4D4333A1673A0E3551D00D0513DF32DE41CD539F5CCF7C850
|
||||||
|
58A46BC1D49C1DD4313A984F8876C367EFBE74EE0FFB06F9FFADBEC59F75CEA9
|
||||||
|
75FF46E79C5AF7EEDC8F7DFB9DAEEDF1284A7A1AA429544D7DBA101B2F386DC4
|
||||||
|
36A449FFF8D1FDEA05FEF442EC3C957560CB75EACEF16E3A32738B287C28EDF8
|
||||||
|
9E231D9BA83DC51AD321E69468F1DA712D50E13BC6EEA350B46567B75553E83D
|
||||||
|
AA84748B8EE6DD6C31F6DE775B7DCFBE4A0DFDB0221F87856C924F2BBC35DFC2
|
||||||
|
B4E7B6A20D9BC628D9DC2BCFB8D70A69D576D3108DEFC93FE6562F384ADDC5C0
|
||||||
|
72BDE093CB5D258028305BBAD53BAC8C75D33E5C0AE0DC988171AEFC3766B9DE
|
||||||
|
568A87EBAE95D9848B05FCEE26049EDB0AD3418D80479EECE1A416B830F5EA5C
|
||||||
|
2DB1318D5DF776E0B9948EE5DE7CEAC79FE0108DD47C86A95B315B5C22804320
|
||||||
|
BCAAF93E6205E07527307FF2068FA0310C6BB37A76095132178DCD24079CA36F
|
||||||
|
ABF1D67B56293B9DC38BE3E59A9541EB9D57C6BC28B8E772473566DEF862E563
|
||||||
|
AAB6267FE23E7EF8D5C7EF2E547A9EE5F40058C6E607633FB786DA13458E21A6
|
||||||
|
52E0FCC624321ABBDE3AEEBE3BDD40B1275519E7DA98B3F3FD4EB3BE34EF19B9
|
||||||
|
EEE30020B8A253990C6941738CEF2C58C9E51BFA21BAABF4DBADD9474A5CAE36
|
||||||
|
1BDB4AED37CCC1C86AEAEBEE8DF91F500C3EA086D52214290414A8E9F4762823
|
||||||
|
7DB3735C45BA6698F374419A1DD1E85C76CC60659E029544A17B168316F7CE1D
|
||||||
|
FCA5E2613A28B514FE79686EBA2B02BFA0001B26DA5D3C1432A0616B5A409C19
|
||||||
|
B26EDB673E27EEB38775D6C94FE7ECA39E8602FFB6E52E4002E3FEF459D73679
|
||||||
|
535008D84BC28460060AB84899120E5B3657B153676D0C4F53CDA31FE029CCE4
|
||||||
|
C664E5D522540E8478158B487BEF9355F012D75999092F892AF5C35E0DD6EC89
|
||||||
|
7FDBD05D66E3A72446C14DF6277637C40A662FE802AE2CACE3DB980906E09DEC
|
||||||
|
E706983F6A725B3ED40E6E400FCA2E05C2C50C6707167A663A5213ADF40556BC
|
||||||
|
1A910E6C9DE7AE91CF1DB90FDF3A68677C7A006A509581777CF3BDBC0C1A81F0
|
||||||
|
61AAE74A510E23599F0F34D71940C7C63894FACCC0C7D391A1F1BDB150A75EFD
|
||||||
|
4C3656AB1543E262BA0D52A36C61F9C07714708AAB865694B6051644D7A3D159
|
||||||
|
4349909F8B3A55A07F29239A14268D74ED069C62EA860CAB594CF3DC93D2AE08
|
||||||
|
01CDA27D47440C2EC00E8D1E602A5BF0C598C832B37BE4A19A6744F6073DF258
|
||||||
|
26DA83E96403BD8603F9545804B645C023CC0CDFD4BA2278ADA70011E6A4C04C
|
||||||
|
157B3C4E86EB17785C054F00E2FF9990B8AF9F9805A35C130D87406B4EB37526
|
||||||
|
A395D426763DEC01B6FC18E241FA18B33C29738E59BCC125DB6DE285BCEDB82C
|
||||||
|
CD750BB34DB744078715FAD63C9C0BB0E8C51E4CB8D875EDF2414520B486E260
|
||||||
|
E281DB873DA87141BB0F625EE215BCFD050C6B55A6A3A26A7BD47362D8275446
|
||||||
|
80C2703D4CCB041AE3B8827DE87B49368AD051EE844730AF94ACFBC9C3815107
|
||||||
|
03DF84B42E4B840316D912624139F3753A9C5D77A00D887F663C6FDE3D300E84
|
||||||
|
1F480171481773858E01DBB1F592298BCCECEDC86211BA2C3E5A03573B291DFA
|
||||||
|
8275C17E8C35203ADA5A157E6539F245AE57CE288718B874968A84E0D6CFF5C0
|
||||||
|
FCC251ECDA9BF3770434131B070F79481855DBE3E9252A21E723E12893695978
|
||||||
|
291B794276D011A8C423015CE215D4E49018B4BFEEDAD7DD584748029ABBE748
|
||||||
|
EFF7C6B1B57B949C079A6858B21348F8EBDD7CBE0763BEE376D840D8BED77C13
|
||||||
|
3200B54C71B25FF73049B1D903008F9C473F8B047023C0B806A91A7C87014592
|
||||||
|
A7EF6E5ADEB9D09EC6E44E84B621E81E2FB1B91EB646E833E03249DF6C52B58D
|
||||||
|
63D7BC227C4D451660A1BCE4FE9276AC966768505E14555468B20D880F1CD73B
|
||||||
|
F729391D2E509545FDC985D9C376C385A9D000D815057205F2DD4C29C906A37B
|
||||||
|
B904FA86EA7B315E641C708F0600F1441A1BBCF2AA51DB30EC141A7AD3C14E0D
|
||||||
|
73675167E48697F499920C183A928436A61FBB7311FC21FE11D306EC18F6203D
|
||||||
|
049071D8358E85A1CEDDE99003F772E2982628B55B4D638985C2FF8449D7A0C6
|
||||||
|
9D3159B8690C5B43A3066958F1926B7B4D61A9C3E1CEFF051351A6832B150E18
|
||||||
|
827D49836CB3F481C4A07FDBD0D4CD2AD022020C89024B193AC54422F0FF274E
|
||||||
|
5A478AB8734DDC08E82A06679B04AC5D709690769224B83A395A65F316E91B62
|
||||||
|
0DDBE013E01760CE6813706AEEBC3DE0D8AC6742FDC66F503531790B91EAE345
|
||||||
|
79A39050FBE3E9424285FBD23E1874AB21E58E6A642CE9CC793B0C1ADE050D2A
|
||||||
|
0DF74B3E3AEA13BC52135ED46FE07942EB03FF4CBF1B51182D8F185E06F4A229
|
||||||
|
EB52ECD88AB367D9B76FA9418202F7D269D3014CD8A49684E1A563AD79E7DC3C
|
||||||
|
65C0F6A04415A7089EE4C736DD758A3D82B88E3AC8EAB5C5603BEC0C436B5EF0
|
||||||
|
FF6030E13AF385C44D6224E161CADBBA1898C5BA3B3ECF159A41F6E9D80E70A2
|
||||||
|
5CA9AE74BE9E11C77081DB0A3C2BD64BFE02678AC859833719BF760C4EC4C410
|
||||||
|
217AB82C05920B898F61F40A97A15AF861C43615FE5B3A3B4B0F680868B36402
|
||||||
|
99494BB5D8CBD65B7067B2B82A850C830888CB63707A9F2A73E81049808FEEA9
|
||||||
|
BD1321A7922825CA38F4A03330C8010B07A92EE2BA114CEA471699D6F8517A82
|
||||||
|
C6624EB0B350D70A680244C770540C09F498E0A4A8FC80B1623B0D0F99981C8D
|
||||||
|
8BC7F2CBF44344C8210612C03519193EB0038CD61120DB325E3A1FAC384324A5
|
||||||
|
8F59C75AD73B16E609C6C8047E6A0B82062A09B7F4142222517BACD07C520694
|
||||||
|
393CF425FBF4A1D084270CC55ECE4ED8582F54287A4829F8732033127DEF77B3
|
||||||
|
6969927F78F21935D20C96E8F4C72A95134DB199BE3587C3212B675689C1B40E
|
||||||
|
7651C01C04CF3A2D05BA8B85C39DA140DD23FE28399700F3F2CF9BEA8C080517
|
||||||
|
C704925720553C152EA03EA6E0A1F5BF45232448723FAD207C66C6DD5007BCFB
|
||||||
|
580817316ED3FC7EF12803F6009398F3A163438D3ED9EEFACDA8CF4704DC6482
|
||||||
|
1916AC081615BBC0FA529A3840E8EF3C22D261EB93A52055E21AF0388807FA07
|
||||||
|
094C594FF8D396233A40D8155E06BD0582411DA848A5D558ED25B4EB9418F30E
|
||||||
|
580B4C544DD60713B567907E9265D0C4E2000D1CCE3AD8586343583DC2A64E2E
|
||||||
|
B727BB86A2C377CC525309F886215ECC80219430D95A7DA2AAB33707820ADE99
|
||||||
|
8DE8A00E09F55555615508F6C0E8A31F14F46258610735DB764745323E1B8D62
|
||||||
|
5A4AD857E74711F74624967B27EC646887219D5A4214131A8E50F4DB27B2CB1C
|
||||||
|
43B7048CDC74C8CAE430899DA921AED705E0B0E0A46CAEFD3E00081429ADED07
|
||||||
|
5936C01E51A176461D1029D9E29C08641026EC976561B092AE00A9B787895F1E
|
||||||
|
E9039B217420E361CB88552C36719AB9C73F4D4607E9C774835DC22456CE212D
|
||||||
|
B2447344E2290A4F814FDF6C8E244B98514283E28476480D5047A80541471A8B
|
||||||
|
6C696D2A688E0DA59508D0045CA64E343A6116ECE359410EA51B72C5B9CD8770
|
||||||
|
9B66A8A99C94233124E89A2590DC259005BFB891740A35A4414976005BB4D745
|
||||||
|
E70892FEC290F9C0FB008B60B1B1ACC024993F3A0323DBF5161D39066B8133A8
|
||||||
|
3A1C9CF84B5E22B78AA384CA6565712D3A2FD44C91B5A920E190CC8E4F6822D3
|
||||||
|
26390A0E82DFBAD953F089715F3BF4B483733B684BD6EC43985BAF66616455CC
|
||||||
|
B397BB2539F34EC350AD026D0DB7899E4BD908C74546219D412856180B9D22B7
|
||||||
|
0451D546C121B8D231347094F8830126C641F78A8B8C697084E8C94249D8642D
|
||||||
|
AAC6686E293BB8C7F369FEDFC1E94F1EDDD74F048A0E2D9C0A00345744AE8A87
|
||||||
|
805671C7403AEA7C136B40E72F3324BE6CD74816690587E9550B179E56AFBAD0
|
||||||
|
6F22A0E50A185934883B93981068A961324EDE4327FB7B6AFA3B5A8AE02DC3F9
|
||||||
|
63698956A89EC91ECB52541A6FD26B8FC73F9480D47DBB5A56DEE067CCE93256
|
||||||
|
C3E4C5CF86C60BAE9631403D081A0A3A5C3E8F0A0D1F0CC569E4A3E96F3EB82F
|
||||||
|
EA06C0756006210358C214EC83AB616181DC4FDEC152CC9551ACC058927C016F
|
||||||
|
904CB0613E84882FF518BA33A29335A805BF8991A122782920B25699CDADE71A
|
||||||
|
CAA1011E269C222D49A7644CC013FFD98CF4E7EA8A8010312E51677670E782D7
|
||||||
|
BC4E1208E70E96C017E91828CA88A099F2F6B2C019EF6AF1EACC99AE088290B1
|
||||||
|
5C59D1894C18416E6ADE883D99890BE14F86D74EF86CF2D465CC208DB2366068
|
||||||
|
CC0CF12868CDC8ED2EBC9FC2D0A91098E24E3479488FE4E97440BEFD897CFA61
|
||||||
|
FC135DBCD2C11AE055720606AE51295481D963B1A10A1832AC7037B382FDAD68
|
||||||
|
8D774931815C42FC95498687C8B4D85F66A24EC9D27EC817F4908216A6988690
|
||||||
|
7D0C3B91A4CAEB72C51A499089ABE2CC5829F6EC02601093B78ECBB18B8C140E
|
||||||
|
574708D0964A8E12345B609270871B07AA301F817A393809543C3E97C8B7E5F5
|
||||||
|
B61C7C859E76E473A1259E10A661FEA44A4347CC6A04D7B8069DF5E657CC7A0E
|
||||||
|
861F53C1957538F67437464C51D6FD0CD9097133254CBB633D95DBA16F60846B
|
||||||
|
48581142AD0E7DD7514418A0979D61EC4019C295102816305028164B4267FE50
|
||||||
|
1E93B345A80034EE9E7D4163603B4E47C10FCC64045DAC42564948B34F12A763
|
||||||
|
50B4EE514FBC12CDC772EB4E1C8635572C067C51EBDE9411AD770BFA89D4DB0B
|
||||||
|
4C82974E8395A774C6C92BBA4EC8A18BA403714A89262DDD43041206AA99BCFE
|
||||||
|
64575236BE179FA2BBE6105ED97F91C87E426CD88D181B748CFC4DAE3DFA8649
|
||||||
|
8AEE5DC299ABCE8C03D952C08130339147466EE97E542453E39A1D72D5AFCE13
|
||||||
|
D986C6B99D03A1EB970028E64AC25A596F4FA853B89727DCCF1D71F64FBBB11A
|
||||||
|
65A2FD157F205F7DA116FC2C1166EB000D3C37B6EBB7E641D2AC3840DCC3AFC1
|
||||||
|
72BA7D6E186E38984F827F92BB21435A3112C0993D2485E513A942AB890045E9
|
||||||
|
83169A2D63083A72252B55E19AA95B4C584ED49BE47794455619F23F181DFAB3
|
||||||
|
BBE44E2E91A66C5A55EA0957C7FD6D226B608A6764F7F063F2C7A83FE2832177
|
||||||
|
A3C3ED948DA145963C418C0748B3DC0B87614BB0613A74F43A179B6505510B64
|
||||||
|
0820C94649FD46B989EB243586D6888F9072928AB1573683CA91256F810071F0
|
||||||
|
1DEB7916EE6D42BF0B9BBBA0042C5322A3D11CDC802B1770EAC41A5A9399C7F2
|
||||||
|
328838F28400E70482D903A131EB44F81A69A021536847C3F1A126E44122D8B8
|
||||||
|
2EE30FFACFFC792269E90C90E1A41159A7CF391122D92FA0564F8284ACE0C6E4
|
||||||
|
8F48B40B281502726238B1A168EC3432C5456748D60C415E8551DCACACEF272D
|
||||||
|
4B1A51000336AF030423C911E9E002D4D78B994E22B742EB494A17580EAE8779
|
||||||
|
6CE6D977BACA1C155AE0E3404303070196CD8E22A38581D91796AFEE3B633CD9
|
||||||
|
2E6CB595625EA7CA3A8C0A3A392A14F2D2D313AACE73B10AC8909DE1D6165B10
|
||||||
|
8EC9D65C7E55881001DACA5AB447BF801048D17F9A6DDCDF0A414088D0001874
|
||||||
|
844A13A07AB68CD4B3355052F0150B7DA52CE142A9CB3FF72AE062ACF73D70AB
|
||||||
|
E6418EEE60B9749BED92DA2184E72E008D24676FB715827CC3BD2F12E2204F4D
|
||||||
|
795FF6CFAB0418099D8E2174F4825B899A0EDD002102D1B28AE9552A1AEE34BB
|
||||||
|
E471046B57DD86B816A9EFFD2B6CC6C430EECA38CC82C393631328390CC2C20A
|
||||||
|
7E00FB724342BE1A42A6C35A62CE3917B19970AC4EA01952DD28C08177290DF6
|
||||||
|
B6A1B4B0AE7E2985AC345854815B48CB480FA63CA29013CF8608E2F8E0B78A25
|
||||||
|
00306D325914141350114F861DF2273F2C4F2CFCC5C331F7E369D9C6B34D26A6
|
||||||
|
258626873B613E1D5FC17E4381A2E093BDEE8FA07B37D1612BF6FC268BDCC995
|
||||||
|
EBE285C8CF7C1D6F43C1BA0D9A75E84CE2C337E1764BDE412783CB171D167AA0
|
||||||
|
02DE1FE03B9201C3B399E28768178F162AEF0459704EED6D14F4AFC88C41DDCF
|
||||||
|
61AC8C1CFCAD7B0032C7FAFDB0E4E237770F80CACC7E17451779B32D4960FA75
|
||||||
|
023881206822F4E2CC90FEA0DB7E5C42A74CCB3B853546195B942E7E6B81BE7A
|
||||||
|
0563839E21BCE831449714CA93A420B803CD8278C59B0D437B80A4DF86F58B94
|
||||||
|
D237C920ACC1C8F29A266193B9639EF1BE080E2E94A0BA6A49847C1AB3E50189
|
||||||
|
5D7400475A7D30A7DF674AA8FC45DA23AB1881D4804E5EB495E6604080D346D5
|
||||||
|
E111CA0F2982652400B6B89338560F11B28FAA7B4709269E58E28DFEE1618B88
|
||||||
|
4537DAF2924BDA93A66426AF33D7BAA9A6337A76494025847A89D821B73AC605
|
||||||
|
4464253622ADA7F3D87E669B1746FD8AC3CCCCA997C561490897CEDAB1E218E0
|
||||||
|
3FB8E5F32B8F9F176211DAE519BA7F9523227A1492516468FA749D8F76FD3696
|
||||||
|
7ACD9F51C4A268ABDC0856693826427777F14F3A0B5EF52EB496BFA1B45BBF99
|
||||||
|
65FEC943153BB38AEE382BF34E6C9BC1CF787FBAD465CC5D4180C2AEA451C332
|
||||||
|
13BEBAC452DED1971F0F167EFEE8FEEA0BFF0F174A14A553FDFF01F579924C32
|
||||||
|
2159E400000006624B474400FF00FF00FFA0BDA793000000097048597300000B
|
||||||
|
1300000B1301009A9C180000000774494D4507E20B0A0C040A02961422000020
|
||||||
|
004944415478DAEDDD7F48D4F9BEC7F1F7DC397899CB1CE630E1650E2EB3181E
|
||||||
|
5C2626460CC598483C1886D1A2188A61188692282DCA2E45D15214C54A521447
|
||||||
|
928D8D9524499262634569487658491A1A76488E34ACECB0B27225B9C30E67D8
|
||||||
|
E10E9FFB475B67DB55D3D499EF8FE703BE503936DFEFE7FB9DEF6B3E9FEFE787
|
||||||
|
4529250000E0A5FFA00800002018010020180100201801002018010020180100
|
||||||
|
2018010020180100201801002018010020180100201801002018010020180100
|
||||||
|
2018010020180100201801002018010020180100201801002018010020180100
|
||||||
|
201801002018010000C1080000C1080000C1080000C1080000C1080000C108BC
|
||||||
|
83D9D959B565CB16B56BD72E158944142502806084A98D8E8ECAE2E2A2048341
|
||||||
|
292D2D95FEFE7EC21100C108F34A2412AFFF9C4C26A5ADAD4D0E1D3AA492C924
|
||||||
|
8503108C80F9E4E6E6FEE1DF060606A4B4B454C562316A8F00C108988BDBED5E
|
||||||
|
F2DF239188949696CAD4D414E108108C807978BDDED0723F9B9F9F97F2F27219
|
||||||
|
1E1E261C0182113087DCDCDC1DF9F9F9CBFE3C994C4A4343039D72008211308F
|
||||||
|
C6C6C6157F9E4EA7A5ADAD4D7A7B7B0947C0242C4AF17987B95DB97245757777
|
||||||
|
4B3A9D5EF175C78F1F970B172E5828318060040CAFAFAF4FB5B7B7BFF575A74F
|
||||||
|
9F963367CE108E8081D1940A88C8D1A3472D1F7FFCF15B5F77F6EC59E9E9E9E1
|
||||||
|
DB24408D1130BE743A2DA5A5A52A140ABDF5B557AF5E958E8E0E6A8E00C10818
|
||||||
|
5B381C563B76EC78EBF34611913B77EE485D5D1DE108180C4DA9C06FF87C3E4B
|
||||||
|
7D7DFDAA5E7BE8D02161F271801A236078D3D3D36ADBB66DAB7A6D7E7EBE3C7E
|
||||||
|
FC38949B9BBB839203A8310286E4F1782C656565AB7AEDECECAC34343414AFA6
|
||||||
|
E91500C108E8565353D3AA5F1B0804E4D34F3FA5E90530089A528125C46231F5
|
||||||
|
FEFBEFAFFAF5393939F2F8F163F1F97C74C601A831422F92C9A4ECDBB74F9597
|
||||||
|
97B3ACD25BB8DD6E8BC7E359F5EB53A994B4B5B5094DAA00C1081D191818500F
|
||||||
|
1E3C90898909D9BB77AFA452290A65052525256B7AFDD4D4945CBB768D2F1C00
|
||||||
|
C108BDB87FFFFEEB3F4F4F4F4B77773737F115F87CBE35FFCEA953A7646E6E8E
|
||||||
|
72050846685D3299944020F0C6BF5DBB768DC57857505858B8E6DF492412D2D3
|
||||||
|
D343E1010423B46E7272522593C9256B3858DA4A6B35AEA4BFBF5FE6E7E7F9C2
|
||||||
|
01108CD0B26030B8E4BF8F8F8F4B2010E026FEB28CD4D9B367D5C18307555151
|
||||||
|
91FAE0830FDEB9763E38384881023AF5278AC01C26262696FD592010908A8A0A
|
||||||
|
539547229190070F1EA8402020A15048563371F85A0C0C0C48575717171EA043
|
||||||
|
8C633481743A2D7FFEF39F976C4A1511191B1B93CACA4A538CBF0B0683AAB7B7
|
||||||
|
5746474765B9F2D828959595D2D5D5255555558C6D04084668492814523B762C
|
||||||
|
3F95E74F3FFD242E97CBD037EF6834AA3EF9E413191919C9F87B7B3C1EE9E8E8
|
||||||
|
90A6A6268BDD6EE78204348E678C26100E8757FCB9D3E93474288E8E8EAAA2A2
|
||||||
|
A2AC84A2C8CBA131EDEDEDF2FEFBEFABFEFE7EBE89020423B22D12892CFB33AB
|
||||||
|
D52A393939863DF6C1C141B56FDF3E49241259DF97C5C545696B6B931D3B76A8
|
||||||
|
50284440020423B265666666D99FA5D3694D84C626D5D4D4E1C38735374D5B28
|
||||||
|
14921D3B76485B5B9B5A5C5C6CE50A05084668281845446667670D597B3971E2
|
||||||
|
84A6A7BDEBEFEF976DDBB65D1F1F1FA7F608108CC894542A25B1586CC5D7BCED
|
||||||
|
19A44EBF0CA8DF4E81A755F3F3F3B267CF1E3975EA9462027280604406C462B1
|
||||||
|
B7DE70971BFCAF677A08C5DF3A7FFEBCECDBB78FA655806044266A246F333A3A
|
||||||
|
6AB8E59226272775B7CFA3A3A3525A5A7A3D1A8DD2B40A108CC86630C6623109
|
||||||
|
068386BA19BFADF958ABA2D1A8ECDCB953229108E108108CD80C0B0B0BAB7A5D
|
||||||
|
5F5F9FA18E3B1E8FEBFA9CFDFDEF7F9770384C3802042336DA6A7B650E0F0F4B
|
||||||
|
2C1633CC8DD8E974EAFE0BCD9E3D7B0847200B9844DCE0563B1F683A9D96F3E7
|
||||||
|
CFCBF5EBD757F5FA999919954824241C0EBFF17CD2E7F349494949D667D2D17B
|
||||||
|
30FE361CC7C6C694CFE763BE558060C44658CBE0FD1B376EC8D1A34797BC09A7
|
||||||
|
5229191F1F57A3A3A332323222737373CBFE3F0E8743555757CBF1E3C7C5EBF5
|
||||||
|
66E586EEF178647474D410E1F8F7BFFF5D1E3E7C483802194253AAC1AD65D2EA
|
||||||
|
743A2D9D9D9DAFFF3E3F3FAF7A7A7AD4BE7DFBD4962D5BD4BE7DFBE4DAB56B2B
|
||||||
|
86A2C8CBE77B838383B27DFB763974E890CAC6F3BE929212C39CC3C5C545D9B3
|
||||||
|
678FD05B15A0C6880D60B55AD7F4FA6030281F7DF4919A9999D9901AD7C0C080
|
||||||
|
4C4E4EAAB1B131C9CFCFCF588DA7ACACCC50E771616141F6EEDD2BDF7EFBED93
|
||||||
|
DCDCDC1D5CD9003546BC2387C3B1E6DFB972E5CA86364346A351292F2FCF68E7
|
||||||
|
1EB7DB6DF1FBFD863A97D168541A1A1A8A9921072018B10E2E974B13FB118BC5
|
||||||
|
E4C30F3FCCE8DCA5353535863B9F8140403EFDF4539A54018211EF2A2F2F4F33
|
||||||
|
FB120E87337A536F6A6A0AD96C36C39DD3F3E7CF0B138F030423DE51414181A6
|
||||||
|
7A32F6F6F666AC13496E6EEE8EFAFA7A439ED7C3870F0BF3AA020423DE81C3E1
|
||||||
|
90FCFC7CCDEC4F2A95924F3FFD3463EF77F2E4C9357740D283B9B939E9EEEEBE
|
||||||
|
CE150E108C78073E9F4F53FB33343494B18E3805050596E6E666439ED79B376F
|
||||||
|
CAE8E8284DAA00C188B5AAACACD4D4FEA4D369191818C8D8FB9D3E7D5A727272
|
||||||
|
0C796E3B3B3B855EAA00C18835AAAEAED6DC3E0D0D0D65ECBDDC6EB7E5F4E9D3
|
||||||
|
863CB7D16854FAFBFBA935021BC8A2149F29A34B2412F2D7BFFE55AD657AB84C
|
||||||
|
F8E1871FC4ED7667AC73507B7BBB32DA2A222222B9B9B9F2FDF7DF5BD632CB11
|
||||||
|
006A8CA6D6D9D9A9B9501411191F1FCFE8FB5DBD7AD562B41971445ECE8A73F1
|
||||||
|
E245537DC34D2412323232A2563B493E4030E2B591911175F3E64D4DEEDBD4D4
|
||||||
|
5446DFCF6AB5CA679F7D66C8F3DCD7D727660A89C3870FABDADA5AD9BB77AFCA
|
||||||
|
E4A4112018A1FF9AC493B6B636CDEE5F2814CAF87BFAFD7E8BD7EB35DCB95E5C
|
||||||
|
5C94C1C14153D41AA3D1A81A1E1E161191898909F9E4934F781E048211ABD3D9
|
||||||
|
D959BCB0B0A0D9FD8B442259795FA30EFABF76ED9A29AEEBFBF7EFBFF1F75FE7
|
||||||
|
F6251C413062659393932A933D3FDF452A959285858527997E5F233E67147939
|
||||||
|
E5DEE4E4A4E10362A92678660202C188B73A71E2842EF6737E7EBE38D3EFE9F3
|
||||||
|
F9DA8C7ADE6FDCB861F86B7B666666A9EB483A3B3B9909081B82E11A06AD2DEE
|
||||||
|
DCB95317FBFAECD933F1783C199FCF75CB962D6A7171D170E7DEE974CAFFFCCF
|
||||||
|
FF588C380DDE2BFFF99FFFB96C879BB1B131A9ACACB47017003546BCA1A7A747
|
||||||
|
17FB69B55AB3128A222FC7FE19D1E2E2A2A19B53E3F1F88A4B97B5B7B78B1687
|
||||||
|
2681604416C56231F5FBCE095A96ADAEF6461E0C3F313161D86373381CD2D4D4
|
||||||
|
B4ECCFA3D1A85CBB768D6630108CF8B7818101DDCC9D994EA7333699F8EF1971
|
||||||
|
9DC65782C1A0A1AFF1CB972FB7399DCE657F7EFEFC79999B9B231C4130E2DFC1
|
||||||
|
A827999EFDC60CC1988DF1A199E4743AFB8F1D3BB6ECCF1389847CF2C927DC0C
|
||||||
|
403042241289A8A57AEC69D9AB81DA9966E459621616160CFF9CADA5A565C575
|
||||||
|
3607070725140A516B04C168760F1E3CD0DD3E070201999999C9F80D2C1E8F1B
|
||||||
|
FA5A8846A3860E85BCBC3C8BDFEF5FF135E7CF9FE7A6008291607CA0CBFD3E7B
|
||||||
|
F66CC6DFD3E835AAF9F979C35FEF6F9BA861646444229108B546108C66954AA5
|
||||||
|
74FB6C69686828E3430C8C3EE1B619862C1417BF7D6E886C7CE902C1088D0887
|
||||||
|
C3BA5D82279D4E4B7B7B7BC67AD3A65229C3D7A8CCB0E284CBE57AEB6B464646
|
||||||
|
B2D2540F82111A303939A9F760979E9E9E8CDCC0B23544041B6BA5211BBFFDD2
|
||||||
|
D5DFDF4F61816034232374D13F7BF66C469E09CDCDCD19FE7A30EACC3EEF6260
|
||||||
|
604058B31104A30945A351DD1F4332999403070E6CFAF3312394D5DBACA69951
|
||||||
|
EF56DBB378616141464646682500C168367A1BBFB8D2711C397264536F62D3D3
|
||||||
|
D386BE16AC56AB141414187E22EDB54C024F732A084693595C5C6C35D24A1143
|
||||||
|
434372F1E2C54D0BC76C2D909C29F9F9F9869ED9E795D9D9D955BF7662628269
|
||||||
|
E2B06A7FA208F42F1A8D1A6E1DBA13274E88DBED568D8D8D1B5EF3317A8D71F7
|
||||||
|
EEDDBA3F865028A442A190CCCCCCBC6E5AF7783C62B7DBC5E7F3495E5EDE9ABE
|
||||||
|
E0A4D369B97FFFBE1C3D7A941B06084633306A6792C3870F8BCBE552151515AC
|
||||||
|
AFB706151515BADCEF582CA67A7B7B6560604036A3056474749460C4AAD0946A
|
||||||
|
00465C7057E4E558BCDADADA0DEFA96AE425A76C369B545757EBEA8B44329994
|
||||||
|
13274EA8AD5BB7CA952B5736ED7A0E0683BA5979060423D6C9C8B39CC4E371D9
|
||||||
|
BB77EF863E1FCACBCB336C79D5D5D589C3E1D0CDFECECECEAAA2A22275F1E2C5
|
||||||
|
4D0FADC5C54506FB8360340BA34F6F36373727E5E5E51B168E460EC68E8E0EDD
|
||||||
|
EC6B2814523B77EECC688F6AA377BC02C108138946A3525E5E2EF3F3F3EB0EC7
|
||||||
|
C2C2424396D1FEFDFBA5A4A4C4A293F3A9F6EEDD9BF1A9F90846108C305C3876
|
||||||
|
7777AFFBFFF1783C862B1BABD52AE7CE9DD3C5BE269349F9F0C30F656161212B
|
||||||
|
AD0F00C168027A7AA6B45E838383120C06D7556B7CDB72457AD4D4D4245EAF57
|
||||||
|
17B5C5EEEE6E95AD213346EDA8068211BF63E45E964BE9ECEC5C57470D97CB65
|
||||||
|
F17ABD86290FB7DB2D972E5D6AD3C3BE068341D5D7D797B5F79F9E9E36FC22D5
|
||||||
|
201821E69B303A1C0E4B7F7FFFBA6A8DD5D5D586280BABD52AB76EDD12A7D3A9
|
||||||
|
8B39CF3A3B3BB3FAFED16854F6EEDDABCCB05E2508465333C384D1BFB7DEEEFD
|
||||||
|
7575758628873367CE88DFEFD74513EAFDFBF755381CCEFA7E4C4E4ECA871F7E
|
||||||
|
A858710304A381E5E7E79B6E6698582C26C3C3C3EF5C6B2C2E2EB6AC6605782D
|
||||||
|
ABABAB93E3C78FEBE6DCF7F6F66A665F0281807CF4D1478C6904C168540E8763
|
||||||
|
558BB61ACD952B57D6F5FB5D5D5DBA3DF69A9A1AB975EB96C56AB5EA627F2727
|
||||||
|
27D5C4C484A6F6A9AFAF6FDD4DF22018A1613E9FCF74C73C393929535353EF7C
|
||||||
|
63ABAFAFB7E8B1DCAAAAAAE4F6EDDB969C9C1CDDECB356977DEAEEEE66361C10
|
||||||
|
8C04A3B18C8C8CBCF3EF5AAD56B97AF5AAE8A5D625F2B2D3D0DDBB7775158AAF
|
||||||
|
56B6D0A2442221870E1D620E55108C4654525262CAE31E1F1F5FD7EFFBFD7ECB
|
||||||
|
C71F7FAC8B63EDE8E8907BF7EE59F4B6D6E2E8E8A8D2F2F8C1A9A9299A54F126
|
||||||
|
A5149B01B6172F5EB48A8832DB66B55AD5CF3FFFBCAEB2FBE5975F64FFFEFD9A
|
||||||
|
3DC69C9C1CF58F7FFC43E9F5DA3C7AF4A8E6AF23A7D3A95EBC78D1CABD844D29
|
||||||
|
458DD1289C4E67BF9106ADAFA5992E1A8DAEEBDB7E4E4E8EDCBE7DDBA2C51971
|
||||||
|
F2F3F3E5DB6FBF95A3478FEAB6E7713018D4FC3E2E2E2ECAD9B367AF0B4053AA
|
||||||
|
B11865D0FA5A45A3D175FF1F369B4D1E3E7C68D1D2F8C6D6D656F9EEBBEF2CC5
|
||||||
|
C5C5BA0DC5783CAE9B89BBFBFBFB3764927A108CD090A6A626531EF746CD6262
|
||||||
|
B3D9E4CE9D3B962FBFFC32AB9326E4E7E7CBD75F7F2DD7AF5FB7E87DBABF9191
|
||||||
|
11DD044D32995CF71020108CD0188FC7A3FB41EBEF62A37B95363535599E3F7F
|
||||||
|
6EE9EAEACA688F559BCD26274F9E9467CF9E59AAAAAA0C3169434F4F8FAEF6B7
|
||||||
|
AFAF4F982E0E04A3C13437379BEE9837637511BBDD2E972E5DB23C7FFE5CCE9C
|
||||||
|
39B3696B38969595C9C99327656C6C4C7EFEF967CBB973E774D7EB7439A3A3A3
|
||||||
|
595B45E35DC5E371191A1AA239D5E42C4A710D1849329994AD5BB7AA4C2F009B
|
||||||
|
4DCF9E3D138FC7B3E935AC7038AC46464624128948241259D3B34DBBDD2E1E8F
|
||||||
|
477C3E9FF87C3EF1783CE2F57ADBF432F9F7BB282F2FD7DC6C37AB515252228F
|
||||||
|
1F3FB6703721186120172F5E54274E9C304D6DF1C58B1759991A2D994CCAF4F4
|
||||||
|
B41211999F9F7F63115C9BCDF67A41648FC763985AE05ABE44141515F1650BBA
|
||||||
|
F4278AC0783A3A3A2C57AE5C3145ADB1A2A2226B33D7D86C36D1738FD14DFE72
|
||||||
|
A6EBFD1F191979FDC506E6C3334603FAF5F998298ED5AC3D71B52C168BA9E1E1
|
||||||
|
615D1FC3D0D01027926084D13436365A2A2B2B0D7D8C3E9F4FF6EFDF4F8D4D83
|
||||||
|
B545BDCF3D1A894418D34830C288AE5FBFBE293D36B5E2CC9933BA9A00DC2CB5
|
||||||
|
C51B376E18E258F4D871080423DE223F3FDF72FBF66D4386475D5D1DB5450D3A
|
||||||
|
7FFEBCA45229431CCBE4E4242794608411555555594E9F3E6DB4C097CF3FFF9C
|
||||||
|
50D4606DF1E6CD9B86391E82916084819D3E7DDAD2DADA6A8863713A9D72EFDE
|
||||||
|
3D433711535BD486502824C96492134B30C2A8AE5FBF6EE9E8E8D07D283E7CF8
|
||||||
|
50BC5E2FB5456A8B9B2E9D4E4B381CA6030EC10823BB7AF5AAE5E4C993BADCF7
|
||||||
|
82820279F4E891F87C3E4291DA62C6E86D4A3B108C7807E7CE9DB37CF9E597A2
|
||||||
|
A79958AAAAAAE4F1E3C76DD414B5291A8D1AA6272AC10882D1A49A9A9A2C4F9F
|
||||||
|
3E959292124DEFA7DD6E977FFCE31FF2F5D75F5B8C3CA7A8DE9D3A754AF7E316
|
||||||
|
97138BC538C10423CCA2B0B0D0F2F8F163CBE79F7F9ED5B50797535F5F2FFFFC
|
||||||
|
E73F75BD72BD1984C36165E459627E3BFF2D084698444B4B8BE5F9F3E7969327
|
||||||
|
4F6AA279B5A2A2421E3F7E2CB76FDFB6E4E5E5118A1A67F4C9EACDB44A0DFE8D
|
||||||
|
D535F0DAC2C2C2939B376F16F7F5F5C9ECEC6CC6DED766B3496363A3747474D0
|
||||||
|
B94647262626547979B9A18F312F2F4F7EFCF147AE49821178B9C8EC8D1B3724
|
||||||
|
1008C8E2E2E2A6DD743A3A3AA4B5B5B58D6788FAB373E74E65F441F00E8743FE
|
||||||
|
F77FFF976024188137058341150804241008AC7BFE48B7DB2D4D4D4DB27FFF7E
|
||||||
|
292929E186A353232323AAB6B6D6F0C799939323BFFCF20BD729C108AC2C1289
|
||||||
|
A868342A333333128D46251C0E8BC8CB1E7C0B0B0B6FBCD6E57289DFEF17BFDF
|
||||||
|
2F555555525858C84D46E7D2E9B4141515A948244230826004D6221A8DAA8282
|
||||||
|
026E2A06333030A00E1D3A648A63A52995600480B7D6163FF8E003158D464D71
|
||||||
|
BC2E974B7EFAE92782D16418AE0160D56EDCB8619A507C556304C10800CBBA76
|
||||||
|
ED9AA98E372F2F8F934E3002C0D242A190293ADCFC56414101279E600480A519
|
||||||
|
75A2F095B8DD6E4E3CC1680E535353EABDF7DE530D0D0D6A6E6E8EDE47C05BA4
|
||||||
|
D36931F29CA8CBF1783C9C7C82D11C464646646E6E4E86868664C78E1D323535
|
||||||
|
4538022B989E9E569B3503929695959571F209467388C7E3AFFF3C3F3F2FE5E5
|
||||||
|
E5F2E0C103C2115846301834DD31E7E5E589CBE562A806C1684EC964526A6B6B
|
||||||
|
251008108EC0128C3E27EA5276EFDECD892718CD63A9B149A9544A6A6B6B2512
|
||||||
|
89108EC0EF9869ECE22BD5D5D59C788211F1785C6EDEBC494100BFF3FB39708D
|
||||||
|
CE6AB54A5555551B679E6034758DF1954422C15501FC4E2A9532D5F1EEDFBF5F
|
||||||
|
580A8D603415BBDDBEECCF32B9402F6084CF8C11B5B4B470D24DEC4F663C68A7
|
||||||
|
D3B9ECCF42A190A4D369B15AAD6BFE461D0804D4C4C4842C2E2ECAFCFCBCD8ED
|
||||||
|
76B1DBED525C5C2C4EA7532A2B2B2DCCBD083DCACDCD35CDB116141448555515
|
||||||
|
BD5109467371B95CCBFE6C71715126272795DFEF5FD507637676569D3D7B5686
|
||||||
|
868624994CAEF85AABD5AA2A2B2BA5BABA5A9A9A9A0849E886C7E359F722D57A
|
||||||
|
71FCF8F1357F3186B198B229F56D13030F0C0CBCF5FF88C7E372E4C811F5B7BF
|
||||||
|
FD4D6EDEBCF9D6501479397BC8E8E8A8747676CAD6AD5B556F6FAF5ACDEF01D9
|
||||||
|
E6F7FB4D535B6C6E6EA6B668764A29D36D3FFFFCB388885A6EB3DBEDEAC71F7F
|
||||||
|
54CBFDFEE3C78F95DBED562BFD1FABDDDC6EB7FAE28B2F9419CF039B7EB6172F
|
||||||
|
5EB4E6E4E46CC835AFE5EDCE9D3B7C16D9C4B407EE72B956FC803436362EF901
|
||||||
|
B97BF7AEB2D96C1BFE81F47ABDEAABAFBEE243C9A6D9ADBEBEDED0A1585757C7
|
||||||
|
E78FCDDCC1585656F6D60FCA37DF7CF3C607E5D6AD5BCA6AB56EEA87B3B1B151
|
||||||
|
FDEB5FFFE2E264D3DCF6FCF9F34DBFFEB3B5399D4EF5D34F3F118C6CA29432EF
|
||||||
|
00FFD5ACB376E8D021595C5C6C1511090402EAF0E1C3924EA73775BF060707A5
|
||||||
|
B4B45445A35166E081D63E3396D6D656C31D97D56A95DBB76F332F2ACCDDF946
|
||||||
|
44C4E7F3BDF535B3B3B372F0E0C1EBE17058D5D6D6666C9073241291A2A222B9
|
||||||
|
7FFF3EE1084DB970E182C5688BF75EBE7C592A2B2B0945BC6651CA9CF7DE6030
|
||||||
|
A876EDDAB5AAD7E6E4E4646DE68F73E7CEC9C99327F9D04233A6A7A7556969A9
|
||||||
|
216689EAEAEA924B972EF1F902C128F272458D3FFFF9CF6AB39B4637EAC3FBD9
|
||||||
|
679F59185B05AD181D1D55B5B5B5A2E7E146274F9E9473E7CE118AF803D336A5
|
||||||
|
DA6C36F17ABDBAD8D7DEDE5E292A2A52A15088A6556842555595656C6C4CB753
|
||||||
|
C55DBA74895004C1B8143DADCE1D8944A4B4B454BABBBB15139D430BFC7EBFE5
|
||||||
|
DB6FBF95C2C242DDEC736E6EAE8C8D8D49575717A1088271297A5B6F2D9D4E4B
|
||||||
|
6F6FAF6CDBB64D3D78F080DA23B2CEEBF55A9E3E7D6AD1C3A4DB151515F2DD77
|
||||||
|
DFD1D1066F65DA678C222F9F336ED9B245B7D3B2D5D7D7CBD5AB5743B9B9B93B
|
||||||
|
B894F5291C0EBFF19CDB66B389C7E3D1E58D7B626242B5B7B7CBF4F4B4A6F6CB
|
||||||
|
ED76CB850B17A4B1B1914004C1B81A070E1C50C3C3C3BADD7F87C32167CE9C91
|
||||||
|
8E8E0E3AE7685024125153535332353525F3F3F332373727333333ABEED1595C
|
||||||
|
5C2C2E974B3C1E8FF87C3E292B2B93FCFC7CCDDEE0D3E9B4DCB871435DBC7831
|
||||||
|
EB4BB8391C0EF9F8E38FA5ABABCB62B3D9B818B17A669FE1E0D6AD5B8698B9C3
|
||||||
|
E3F1A8478F1E317347966786B975EB963A76EC98F2FBFD6AB3E61675BBDDAAB9
|
||||||
|
B959DDBB774FFDF2CB2F9A2C8BFFFBBFFF932FBEF842AD6686A98DDE0A0A0AD4
|
||||||
|
E5CB97D5CF3FFFCC75C9C69470EFB2FDEB5FFF1287C36198A9ADEAEBEBD50F3F
|
||||||
|
FC404066681B1B1B53C78F1F57F9F9F95939DF0E87431D3D7A547DFFFDF79A3D
|
||||||
|
E7FFFCE73FD5F1E3C7D5DBE62796754EE9565F5FAFBEFEFA6BAE7D36827123B6
|
||||||
|
8E8E0E43CDFB68B7DBD5B973E7345B9BD0F3F6F4E95375E7CE1DD5DCDCAC9C4E
|
||||||
|
A766CEB9D56A55CDCDCDEAD9B3679A0E86AFBEFA4A7574746CC81709AFD7AB8E
|
||||||
|
1F3FAEC6C6C60843B60DDD4CFF8C5144241A8DAA0F3EF840F430D87F2D0A0A0A
|
||||||
|
E4B3CF3E939A9A1A3A1DBC63C798898909894422120E8725140AE962BF6B6A6A
|
||||||
|
E4D2A54B9A7E162922128BC5D4F8F8B8048341894422CB96AFDD6E97C2C242F1
|
||||||
|
783C525C5C2C252525525C5C6CC9C9C9E122059D6F36534343831A1A1A32E4B1
|
||||||
|
EDDEBD5B3EFBEC33292929212057108FC7657C7C5CDDBF7F5FC6C7C7657E7E5E
|
||||||
|
B7C762B7DBE5EAD5ABBA5B74371C0EABE9E9E9D763230B0B0B2D7A9D440004A3
|
||||||
|
216A8DDBB66DCBDA9CA899D0D8D828172E5C10B7DB4D40FE2A9148C8E0E0A01A
|
||||||
|
1A1A92402060B8E3ABA9A991EBD7AF33A407580BDA93FFBD7DFCF1C7865FA1DC
|
||||||
|
66B3A993274F9ABEC7DEB367CFD4B163C794913A5E2DB7E5E5E5A9870F1FF21C
|
||||||
|
8E8D8D678C6B974C2665FBF6ED2A1A8D1AFE585D2E979C3B774E5A5A5A4C537B
|
||||||
|
4CA7D3323C3CACFAFBFB0D593B5C494E4E8E7CF1C5170C720756E13F28827FB3
|
||||||
|
D96C525959698A639D9F9F9723478E485151919A989830F4B7A3743A2D7D7D7D
|
||||||
|
EAFDF7DF570D0D0DA60B451191542A25070F1E94BEBE3EBE090304E3DABF599B
|
||||||
|
49381C96F2F272A9ADAD55B3B3B386BB698E8C8CA8EDDBB7ABF6F676999B9B33
|
||||||
|
FDF5DDDEDE2E83838384234030AEADD6684623232352545464989BE6DCDC9CDA
|
||||||
|
BB77AFAAADADD5DCDC9DD976F8F06109040284234030AE8ED3E934EDB1C7E371
|
||||||
|
3978F0A0343434A8783CAEDBE3B871E386DAB66D9B8C8E8E72412F21954A496D
|
||||||
|
6DAD18B18500201837416E6EAEE9CB606868484A4B4B552C16D3D58D339148C8
|
||||||
|
BE7DFBD491234744CFC19EA92F41B5B5B5861E9E04108C1B444F8BAE6EA69999
|
||||||
|
19292D2D957038AC8B708CC5626AE7CE9DEAC183079CBC550A87C3D2DDDD4DAD
|
||||||
|
11F81D866B2C51EBF8CB5FFEA28C363DDCBB72381CF2CD37DF88D7EBD56C37FF
|
||||||
|
A9A929F5E1871FEA7AA69A6CB15AADF2EDB7DF322B12408D717976BB5DF2F3F3
|
||||||
|
29885FC5E371D9BB77AFCCCDCD69F21BD4D4D4942A2F2F2714DF513A9D96B6B6
|
||||||
|
369A54018271653E9F8F42F88DB9B939D9BB77AFE66E9E914844EDD9B34792C9
|
||||||
|
2427691DC2E130E31B01827165C5C5C514C21F43482E5EBCA8999BE7AFC331E8
|
||||||
|
64B3412E5EBC28894482820008C6A59965F69BB53A7FFEBC44A3D1AC87632A95
|
||||||
|
7AD5BCCB49D920F3F3F372E5CA156A8D00C1B8349FCF6731F378C69502E9D34F
|
||||||
|
3FCDFA7E747777AB4824C209D960BDBDBDD41A0182716956AB55EAEAEA288825
|
||||||
|
0C0D0DC9FCFC7CD66A16C160505DBB768D13B109161717992E0E201897575353
|
||||||
|
43212C219D4ECBC8C848D6DEBBBDBD9D93B089AE5CB942218060A40896565959
|
||||||
|
6971B95C14C4D2B5B6ACBCEFC0C0004DA89B6C7A7A5A464747A9358260C41F59
|
||||||
|
AD56696E6EA620963039399995DAE2D9B36729FC0C686868D0CD8C4700C19861
|
||||||
|
2D2D2D62B55A2988DF89C562197FCFD1D151353B3B4BE167403C1E973D7BF610
|
||||||
|
8E2018F14705050596EAEA6A0A6289DA5BA6C70FF6F7F753F019B4B0B020BB76
|
||||||
|
EDA259150423FEA8ABAB8B425882DD6ECFD87B2D2E2EB6323978E6FDBA5A899C
|
||||||
|
3F7F9E7004C1887FDBBD7BB7A5A4A48482F80DA7D399D126E6D1D1D1EB4CEA9E
|
||||||
|
BDD68153A74E497979B962FD46108C78EDF8F1E314C26F14141464F4FDB2D1D9
|
||||||
|
076F9A989890A2A222191818201C413042A4A6A6C6C2FCA9FF96E91A34C1A80D
|
||||||
|
F1785C0E1D3A24BB76ED5274CC01C108B97CF93285F0AB4CCE259B4EA785B18B
|
||||||
|
DA120C06A5A8A8480E1C38A02291080109C361A1E2353878F0A01A1C1C347519
|
||||||
|
D86C3679F1E285C566B365E4FDE6E6E6D47BEFBDC7C5A761151515D2D5D525D5
|
||||||
|
D5D52C760C6A8C6673F5EAD5B6DCDC5C5397416363A3642A14454418BBA87D81
|
||||||
|
4040F6EDDB27FFFDDFFFADBABBBB552010E0DB36A8319AC9D0D0906A686830ED
|
||||||
|
F13F7DFA547C3E5FC66A060F1E3C50FBF6EDE3C2D31987C321151515525252F2
|
||||||
|
6AB36472880F403066586D6DADCAD644DAD9B47FFF7EB977EF5E469BCBCCFE45
|
||||||
|
C4486C369B783C1EC9CDCD15B7DBFD879FE7E4E448595999949595497E7E3ECD
|
||||||
|
B22018F5647E7E5EEDD8B1C3540BE55AAD56F9EEBBEFC4E3F164F486353838A8
|
||||||
|
0E1E3CC84567327EBF5F8E1E3D2A757575969C9C1C0A0419C533C677E072B92C
|
||||||
|
77EFDE15337D608F1D3B96F1507C55CB80F90483413978F0A07CF0C1076A7C7C
|
||||||
|
9C6FEF2018F5A0A4A4C472FDFA75531C6B7E7EBE9C3973262B4D5B04A3B9CDCE
|
||||||
|
CECA9E3D7BA4A1A1412D2C2C3CA14440306A5C7373B3E5D8B163863EC69C9C1C
|
||||||
|
B973E78E64ABE384D97B01E3A5A1A121292D2D2D8EC562D41E41306ADDA54B97
|
||||||
|
2C151515863DBECB972F4B717171D63A42E4E5E57191E175ED71D7AE5D323333
|
||||||
|
43386253D1F96603241209D9B3678F32DAD4658D8D8D72EBD6ADACF70EFCAFFF
|
||||||
|
FA2F954C2637817964000009AB49444154B9D02022222E974B1E3E7C989567DE
|
||||||
|
A0C68855B2DBEDF2F5D75F1B6A158EDDBB77CBE79F7FAE891B8FC7E3E122C36B
|
||||||
|
F3F3F3525B5B2B894482C200C1A8650E8743C6C6C62CBB77EFD6FDB178BD5EB9
|
||||||
|
77EF9E452B1D5FBC5E2F1718DE303333239D9D9D34778160D44B38363535E9F6
|
||||||
|
180A0B0B656C6C4C1C0E8766F689954DB0949B376F4A3018241C41306A5D4E4E
|
||||||
|
8E7CF9E59796D3A74F677431DF8DE0F3F9E4D1A347E272B934F5ECC608B5706C
|
||||||
|
8ECECE4E61116B108C3A71E6CC19CBC3870F75D3ABB2ACAC4C1E3E7CD8A6B550
|
||||||
|
1411F1783C16A7D3C945853F0887C332323242AD1104A35EECDEBDDBF2F4E9D3
|
||||||
|
505D5D9DA6F7B3B9B9591E3D7A64713A9DFD5ADC3FABD5AAA9A65D68CBB56BD7
|
||||||
|
28046C28866B64C8E8E8A8FAE8A38F646666464B3531E9EAEA929696164D777B
|
||||||
|
4F2412F297BFFC45D16486E53C7BF68CE11BA0C6A83755555596EFBEFBCE72F9
|
||||||
|
F26571B95C59AD7DD5D7D7CB37DF7C23CF9E3DB3683D144544229108A188150D
|
||||||
|
0F0F53082018F5282727478E1D3B66F9E1871F2C9F7FFE7946C7E7151414C8E9
|
||||||
|
D3A7E5C71F7F94DBB76F5BFC7EBF6EBE5D4F4C4C70F1806044C6D0949AFD9BBE
|
||||||
|
BA7FFFBE0C0D0D6DF8325695959552515121F5F5F5BA5EDF6ED7AE5D2A180C72
|
||||||
|
B160453FFEF8A3E4E5E5D19C0A82D148A6A6A65430189470382CA15048A6A7A7
|
||||||
|
57FDBB858585E2F57AC5E7F389D7EB15BFDFDFA6D5CE346BB1B0B0F0E4AF7FFD
|
||||||
|
6B314DA9789BBB77EF4A4D4D0DC18875FB1345A01D2525256F4C2B974AA52412
|
||||||
|
892891971D507EDB71C7EBF5BE5E0FD2EBF51A7631D71B376E108A589570382C
|
||||||
|
3535351404A831C2B8D2E9B4FCED6F7F53B3B3B31406DEAAA6A646EEDEBD4B8D
|
||||||
|
11EB46E71B68D6E8E828A188555BCBA3078060842EF5F4F4500858B5582C4621
|
||||||
|
806084B16B8B0CD3C05A24934996A202C108634AA552D2D9D9494160CD161616
|
||||||
|
E834018211C673F1E245158D462908AC19CDA920186138535353EAFCF9F31404
|
||||||
|
DE095FA84030C250E2F1B8343434482A95A230F04E1616162804108C3086542A
|
||||||
|
25B5B5B50CCFC0BABF5C0104230CE1F0E1C32A100850105817ABD54A21806084
|
||||||
|
FEB5B5B5A9C1C1410A02EB66B7DB2904AC1B73A5226BD2E9B41C397244DDBC79
|
||||||
|
93C2C086703A9D1402A831429F1616169EECD9B38750C486CAE622E0A0C608BC
|
||||||
|
B3A9A92975E0C001C69C61C31516165208A0C608FD48269372EAD429B573E74E
|
||||||
|
42111BCE66B349414101AB6B801A23F4617C7C5C757676BEB1A624B0912A2A2A
|
||||||
|
E8950A6A8CD0BEA9A929555E5EAEF6ECD94328625355565652082018A16DA74E
|
||||||
|
9D52A5A5A5C22A19C8548D11D80816A5988C1E1BAFA7A7477DF2C927140432C2
|
||||||
|
E7F3C9D3A74F79BE086A8CD0A6FBF7EFAB13274E5010C898D6D6560A01D418A1
|
||||||
|
4D7373736AFBF6EDB2B8B848612023EC76BBFCF4D34F1666BD01354668D28913
|
||||||
|
27084564544B4B0B53C1811A23B429168BA9AD5BB74A3A9DA63090114EA7539E
|
||||||
|
3F7FDEE6743AFB290D506384E6F4F7F7138AC8A893274F0AA1086A8CD0ACEDDB
|
||||||
|
B7AB4824424120230A0A0AE4D9B367969C9C1C0A03D418A13D0B0B0B4F084564
|
||||||
|
D2F5EBD7855004C108CD9A9C9C2CA61490295D5D5D525151C1B845108CD0AED9
|
||||||
|
D9590A011951565626172E5C2014413042DB18A2814CC8CBCB937BF7EE856842
|
||||||
|
05C108CD4BA55214023695CBE592B1B131C9CDCDDD4169806084E6391C0E0A01
|
||||||
|
9B1A8A0F1F3E148FC743132A0846E8436E6E2E850042110423F04A4141018500
|
||||||
|
421186C0007F6C886432295BB66C51C96492C2C086282B2B93DBB76F8BDBED26
|
||||||
|
14418D11FA63B3D9A4B898A18CD818C78E1D93478F1E590845108CD0355650C7
|
||||||
|
7AD9ED76B973E78E5CBE7C99A9DE403042FFAAAAAA2804BCB3E2E26279F2E489
|
||||||
|
D4D5D5514B04C10863282B2BB3D00907EF12885F7DF5953C79F2C45258584828
|
||||||
|
826084B1B4B6B652085815BFDFFF3A10ABABAB09446806BD52B1A1E2F1B8BCF7
|
||||||
|
DE7B2A9148501858527D7DBD7475754949490961086A8C303E87C321C78E1DA3
|
||||||
|
20F006BBDD2E1D1D1DF2FDF7DFCBEDDBB72D8422A831C2541289846CDDBA552D
|
||||||
|
2C2C501826979B9B2B5D5D5DD2DADADAE6743AFB2911108C30ADBEBE3ED5DEDE
|
||||||
|
4E419894D7EB9563C78E49535313C32E4030022222E9745A76ECD8A1C2E13085
|
||||||
|
611276BB5DEAEAEAA4A5A545FC7E3F4DA5201881DF0B06836AD7AE5D1484C195
|
||||||
|
9595497373B33436365AEC763B0502821158494343831A1A1AA2200C26373757
|
||||||
|
9A9A9AA4A5A58509BE4130026B118D46D5B66DDB58C8D820AAABABA5B9B959F6
|
||||||
|
EFDFCFB343108CC0BB3A71E284BA78F12205A153F9F9F9D2DCDC2C2D2D2D9297
|
||||||
|
9747ED100423B05EA9544A4A4B4BE988A32376BB5DF6EFDF2FCDCDCD52595949
|
||||||
|
1882600436DACCCC8C2A2D2D95783C4E616894C3E190AAAA2A696C6C94CACA4A
|
||||||
|
8BCD66A3504030029B697878581D38708082D05818EEDFBF5FEAEAEAA4AAAA8A
|
||||||
|
E78600C1884CEBEDED55DDDDDD144416B95C2EA9AAAA7A1D8656AB9542017EE3
|
||||||
|
4F140132A9ABABCB924C26D5A953A7288C0CB15AAD5251512115151552555525
|
||||||
|
3E9F8F678600354650733417B7DB2DD5D5D5525555251515150CBC070846E8C1
|
||||||
|
F0F0B03A74E8902493490A639D5C2E97F8FD7ED9BD7BB754555549414101B542
|
||||||
|
8060841E85422175E0C001999D9DA530D6202F2FEF7510565454082BDF030423
|
||||||
|
0C249148486767A7BA79F32685B18CFCFC7C292B2B7BFDAC303F3F9F20040846
|
||||||
|
18DD83070FD4471F7D24D168D4F465515252227EBF5FCACACAC4EFF78BCBE522
|
||||||
|
0801821166944AA5A4A7A747F5F4F498663200BBDDFE3A047F0D4206D7030423
|
||||||
|
F0A6783C2ED7AE5D53BDBDBDB2B8B86898E3CACBCB139FCFF7C6464719806004
|
||||||
|
562D9148C8E0E0A0EAEFEF975028A49BFD76381C525050201E8F47BC5EEFAB10
|
||||||
|
0CE5E6E6EEE0AC020423B0212291881A1C1C94919111999999C9FAFEB8DD6EC9
|
||||||
|
CBCB13AFD72BF9F9F9929797271E8F470A0B0B193708108C4066C56231F5E0C1
|
||||||
|
0309068332333323E17058D2E9F486BF8FCFE71397CB256EB75B7C3E9FE4E5E5
|
||||||
|
BDFA33CD9F00C108685B341A55D16854666666647A7A5A22918844A351595858
|
||||||
|
785DC3CBCDCD1591972BD0BBDD6EB15AADE2F3F94444A4A0A0401C0EC7AB6650
|
||||||
|
820F20180100C07F50040000108C0000108C0000108C0000108C0000108C0000
|
||||||
|
108C0000108C0000108C0000108C0000108C0000108C0000108C0000108C0000
|
||||||
|
108C0000108C0000108C0000108C0000108C0000108C0000108C0000108C0000
|
||||||
|
108C0000108C0000806004008060040080600400806004008060040080600400
|
||||||
|
8060040080600400806004008060040080600400806004008060040080600400
|
||||||
|
8060040080600400806004008060040080600400806004008060040080600400
|
||||||
|
8060040000042300000423000004230000042300006BF1FF143D33712B8DD511
|
||||||
|
0000000049454E44AE426082
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object JvStandardPage3: TJvStandardPage
|
||||||
|
Left = 0
|
||||||
|
Height = 388
|
||||||
|
Top = 0
|
||||||
|
Width = 723
|
||||||
|
Caption = 'Grid'
|
||||||
|
object StringGrid1: TStringGrid
|
||||||
|
Left = 8
|
||||||
|
Height = 372
|
||||||
|
Top = 8
|
||||||
|
Width = 707
|
||||||
|
Align = alClient
|
||||||
|
BorderSpacing.Around = 8
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object JvStandardPage4: TJvStandardPage
|
||||||
|
Left = 0
|
||||||
|
Height = 388
|
||||||
|
Top = 0
|
||||||
|
Width = 723
|
||||||
|
Caption = 'Shell controls'
|
||||||
|
object ShellListView1: TShellListView
|
||||||
|
Left = 285
|
||||||
|
Height = 372
|
||||||
|
Top = 8
|
||||||
|
Width = 430
|
||||||
|
Align = alClient
|
||||||
|
BorderSpacing.Top = 8
|
||||||
|
BorderSpacing.Right = 8
|
||||||
|
BorderSpacing.Bottom = 8
|
||||||
|
Color = clDefault
|
||||||
|
TabOrder = 0
|
||||||
|
ObjectTypes = [otNonFolders]
|
||||||
|
ShellTreeView = ShellTreeView1
|
||||||
|
end
|
||||||
|
object ShellTreeView1: TShellTreeView
|
||||||
|
Left = 8
|
||||||
|
Height = 372
|
||||||
|
Top = 8
|
||||||
|
Width = 272
|
||||||
|
Align = alLeft
|
||||||
|
BorderSpacing.Left = 8
|
||||||
|
BorderSpacing.Top = 8
|
||||||
|
BorderSpacing.Bottom = 8
|
||||||
|
FileSortType = fstNone
|
||||||
|
TabOrder = 1
|
||||||
|
ObjectTypes = [otFolders]
|
||||||
|
ShellListView = ShellListView1
|
||||||
|
end
|
||||||
|
object Splitter1: TSplitter
|
||||||
|
Left = 280
|
||||||
|
Height = 388
|
||||||
|
Top = 0
|
||||||
|
Width = 5
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object Panel1: TPanel
|
||||||
|
Left = 0
|
||||||
|
Height = 56
|
||||||
|
Top = 413
|
||||||
|
Width = 723
|
||||||
|
Align = alBottom
|
||||||
|
AutoSize = True
|
||||||
|
BevelOuter = bvLowered
|
||||||
|
ClientHeight = 56
|
||||||
|
ClientWidth = 723
|
||||||
|
TabOrder = 2
|
||||||
|
object lblPainter: TLabel
|
||||||
|
AnchorSideLeft.Control = Panel1
|
||||||
|
AnchorSideTop.Control = cmbPainter
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 9
|
||||||
|
Height = 15
|
||||||
|
Top = 21
|
||||||
|
Width = 37
|
||||||
|
BorderSpacing.Left = 8
|
||||||
|
Caption = 'Painter'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object cmbPainter: TComboBox
|
||||||
|
AnchorSideLeft.Control = lblPainter
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = Panel1
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 54
|
||||||
|
Height = 23
|
||||||
|
Top = 17
|
||||||
|
Width = 129
|
||||||
|
BorderSpacing.Left = 8
|
||||||
|
BorderSpacing.Top = 8
|
||||||
|
BorderSpacing.Bottom = 8
|
||||||
|
ItemHeight = 15
|
||||||
|
ItemIndex = 0
|
||||||
|
Items.Strings = (
|
||||||
|
'Modern'
|
||||||
|
'XP'
|
||||||
|
)
|
||||||
|
OnChange = cmbPainterChange
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 0
|
||||||
|
Text = 'Modern'
|
||||||
|
end
|
||||||
|
object lblOrientation: TLabel
|
||||||
|
AnchorSideLeft.Control = cmbPainter
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = cmbOrientation
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 207
|
||||||
|
Height = 15
|
||||||
|
Top = 21
|
||||||
|
Width = 60
|
||||||
|
BorderSpacing.Left = 24
|
||||||
|
Caption = 'Orientation'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object cmbOrientation: TComboBox
|
||||||
|
AnchorSideLeft.Control = lblOrientation
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = Panel1
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 275
|
||||||
|
Height = 23
|
||||||
|
Top = 17
|
||||||
|
Width = 100
|
||||||
|
BorderSpacing.Left = 8
|
||||||
|
BorderSpacing.Top = 8
|
||||||
|
ItemHeight = 15
|
||||||
|
ItemIndex = 0
|
||||||
|
Items.Strings = (
|
||||||
|
'top'
|
||||||
|
'bottom'
|
||||||
|
)
|
||||||
|
OnChange = cmbOrientationChange
|
||||||
|
Style = csDropDownList
|
||||||
|
TabOrder = 1
|
||||||
|
Text = 'top'
|
||||||
|
end
|
||||||
|
object cbCloseButton: TCheckBox
|
||||||
|
AnchorSideLeft.Control = cmbOrientation
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = Panel1
|
||||||
|
Left = 399
|
||||||
|
Height = 19
|
||||||
|
Top = 9
|
||||||
|
Width = 141
|
||||||
|
BorderSpacing.Left = 24
|
||||||
|
BorderSpacing.Top = 8
|
||||||
|
Caption = 'Tabs with Close button'
|
||||||
|
OnChange = cbCloseButtonChange
|
||||||
|
TabOrder = 2
|
||||||
|
end
|
||||||
|
object cbAllowTabMoving: TCheckBox
|
||||||
|
AnchorSideLeft.Control = cbCloseButton
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = Panel1
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 556
|
||||||
|
Height = 19
|
||||||
|
Top = 19
|
||||||
|
Width = 114
|
||||||
|
BorderSpacing.Left = 16
|
||||||
|
Caption = 'Allow tab moving'
|
||||||
|
OnChange = cbAllowTabMovingChange
|
||||||
|
TabOrder = 3
|
||||||
|
end
|
||||||
|
object cbTabHotTracking: TCheckBox
|
||||||
|
AnchorSideLeft.Control = cbCloseButton
|
||||||
|
AnchorSideTop.Control = cbCloseButton
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 399
|
||||||
|
Height = 19
|
||||||
|
Top = 28
|
||||||
|
Width = 108
|
||||||
|
BorderSpacing.Bottom = 8
|
||||||
|
Caption = 'Tab hot-tracking'
|
||||||
|
OnChange = cbTabHotTrackingChange
|
||||||
|
TabOrder = 4
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object JvModernTabBarPainter1: TJvModernTabBarPainter
|
||||||
|
Font.Color = clWindowText
|
||||||
|
DisabledFont.Color = clGrayText
|
||||||
|
SelectedFont.Color = clWindowText
|
||||||
|
left = 136
|
||||||
|
top = 248
|
||||||
|
end
|
||||||
|
object JvTabBarXPPainter1: TJvTabBarXPPainter
|
||||||
|
Font.Color = clWindowText
|
||||||
|
DisabledFont.Color = clGrayText
|
||||||
|
SelectedFont.Color = clWindowText
|
||||||
|
FixedTabSize = 0
|
||||||
|
left = 288
|
||||||
|
top = 248
|
||||||
|
end
|
||||||
|
object ImageList1: TImageList
|
||||||
|
Height = 24
|
||||||
|
Width = 24
|
||||||
|
left = 493
|
||||||
|
top = 150
|
||||||
|
Bitmap = {
|
||||||
|
4C7A040000001800000018000000390500000000000078DAED997F4C1B6518C7
|
||||||
|
EBC8A810AB59C31F4A149205661417583A7A65F10FFF74242871E28F9898912C
|
||||||
|
05EE0A9BD98C712CB671D9144C964C531570F80FE347CDA2018738B91636810C
|
||||||
|
4702632830CD268B60C4C504CA6FCAE3FBDCF636D797BBEB95B6C9B2F124DFF4
|
||||||
|
BDF79EFBDCF77DDE7BDF3657836133682424BEFB7AC60ECF98C9B423851C6E51
|
||||||
|
CAF9F18C1336A286D395E010C6C1E9F4434666ED3F06434AAAD23D3037D2B871
|
||||||
|
F326F4F7F7C3A9535FC3CE9DDD8144A37BDEB075FB6E823346CB6F181A82A30D
|
||||||
|
0D303030009DA2082FBD5CF27B42525A912129298DE012B5F8168B4551349A06
|
||||||
|
07C171F52A384747E155B71BAA4E7E084FA6A7BF62301A3309EA9168EA836C81
|
||||||
|
B05DE3E36026B5496E6A821347F6C35DB6496B7ED5FC07D9C3C377D86363123B
|
||||||
|
C9E381B36D6D50FF510568B1F5F8F710AEC4BE7E1DCC7D7D90DCD202675B5B61
|
||||||
|
9C1C7FE77E1FB4D86AFE693413DF0E5A93CB97A59A207B8C1CCFCCCC40C7571F
|
||||||
|
40B835A2E67F757515AAEB5BE1586717987B7B2576A38C1D0804A47510095F5E
|
||||||
|
7BB1AB07866E05A0BA7910CC9F7D21B1E939646344CAA7B1B6B60655D5D55072
|
||||||
|
E42408C7DCD0DE7141AA37F54D63A3FE913F3D3D0DE3A41663E499999C9A5A37
|
||||||
|
37D1F8C758595901BFDF0FF3F3F3521BEFC94634F597FB555B17D1F8D713D1F8
|
||||||
|
D73ABE57FDC78B1F8D367F253C5861B7DB21DE8A5784F04FE4C6562CFFD3BDB1
|
||||||
|
15CBAF7F3B44132D8760DF8D5FC0B4BC20A9F0CF2B307AEEBD7579AA62F9DF1C
|
||||||
|
0E6AE2FC71302FCD818174CBB56D695E3A27CF5515CBFFE1E3A0F6FD3DBA8E4D
|
||||||
|
5534F55B48AEAA58FECF678232AD2EABF21F25E7E4B9AA62F983AD4199022BAA
|
||||||
|
FCC7902FCB5515CBFFA32FA842FF6D55FE6BFE7F437255C5F0777D991354564D
|
||||||
|
0E24D7EC022323EC7B4E96A725969FEE4E8FA958BEB5D11A53B1FC82F682988A
|
||||||
|
E51FE83D1053B1FCCA5F2B63AA75CF671CF7E7786AF31BFCC188C2C2C2D98202
|
||||||
|
B2F6A2147294F8786E7272326A21478D1F2B69F9C74FA550EB57CAD3C3275D41
|
||||||
|
C9F9F27E5691F0EF35FF91F237EB7F7FD53FDEFB8FDEF00AB95922CF7D1BAF7D
|
||||||
|
36967C1F9F9BE3E5B966AFC075F8786B899CEF737007BD0EEE7B9FC01DBF62B7
|
||||||
|
6C95F2ED9614927BDAC773ED4487C37BB571E41E8FFBF6BFF030B96EE8A2DDF2
|
||||||
|
04F249FBB6C8E7EDF11415257805EBE7A2C01D72B90C5B48BBC7C7E7BD88D78A
|
||||||
|
C29EF470FC4B65CF6F13055B19F1E926CC5B62799E15F9C4F385A087726B368E
|
||||||
|
A79BB73D83E389ACD6E8C7F6168E81B45B703C77FD9FA739380EC26DF4967116
|
||||||
|
F2792E323E378135FDE9A0258DB4FF92F1FFF396ED7EDAE3CA4AF409360F19CF
|
||||||
|
1BEDE57B8DA47F0473F0DACEB2DCEDE1F8226F7D935C237A795B9597B7BED35D
|
||||||
|
C16576F3B94F91B11C25F3F709CE23C9719005F5D09DE7212F839C6BC0FA91FB
|
||||||
|
54DC2FBF4D6A6B6B676B6A6A60A322D7AFEBABABAB5BA37C3CC677BE722D2F2F
|
||||||
|
8768696929448B8B8B41E1F518F8AE9BBEEFC63E96FFEC359014099BF2F17D74
|
||||||
|
6969291417174BF750E21B3CD742A487BDB0B020B1464646203F3F5F12B6F5F0
|
||||||
|
91979A9AAA28CAA67C36583EAD85CBE5D2ED5BCE57921A9F32E97C68B129BFAD
|
||||||
|
AB27445A7C2AB65E4A6CFCBF412F1F3DCBFDB37CE4C9E700D97AF99449F9E16A
|
||||||
|
42D91BE15326ADBF167B237CB5FA2BB1E7E6E674F3D1B3DC3FCB471EBB0EF4F2
|
||||||
|
E5F508576FEA9B4A2F5FA91EE1D8F89F58347CB5FD81B223E1230FEBAFD73795
|
||||||
|
D2FE8F7D723E65523EF2E87C68B1A97FFA1F224A697F93F3D59E4F25F6ECECAC
|
||||||
|
C41A1E1E86ECEC6C49D856E3CBEBC1F291C7CE03E563389D4E496AFEF5D69BFA
|
||||||
|
A60AB7FFC7FBFB3D9EF13F63520965
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
107
components/jvcllaz/examples/JvTabBar_PageList/main.pas
Normal file
107
components/jvcllaz/examples/JvTabBar_PageList/main.pas
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
unit Main;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
|
||||||
|
Grids, ShellCtrls, ListViewFilterEdit, JvTabBar, JvPageList,
|
||||||
|
JvTabBarXPPainter;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TMainForm }
|
||||||
|
|
||||||
|
TMainForm = class(TForm)
|
||||||
|
cbCloseButton: TCheckBox;
|
||||||
|
cbAllowTabMoving: TCheckBox;
|
||||||
|
cbTabHotTracking: TCheckBox;
|
||||||
|
cmbPainter: TComboBox;
|
||||||
|
cmbOrientation: TComboBox;
|
||||||
|
Image1: TImage;
|
||||||
|
ImageList1: TImageList;
|
||||||
|
JvModernTabBarPainter1: TJvModernTabBarPainter;
|
||||||
|
JvPageList1: TJvPageList;
|
||||||
|
JvStandardPage1: TJvStandardPage;
|
||||||
|
JvStandardPage2: TJvStandardPage;
|
||||||
|
JvStandardPage3: TJvStandardPage;
|
||||||
|
JvStandardPage4: TJvStandardPage;
|
||||||
|
JvTabBar1: TJvTabBar;
|
||||||
|
JvTabBarXPPainter1: TJvTabBarXPPainter;
|
||||||
|
lblPainter: TLabel;
|
||||||
|
lblOrientation: TLabel;
|
||||||
|
Memo1: TMemo;
|
||||||
|
Panel1: TPanel;
|
||||||
|
ShellListView1: TShellListView;
|
||||||
|
ShellTreeView1: TShellTreeView;
|
||||||
|
Splitter1: TSplitter;
|
||||||
|
StringGrid1: TStringGrid;
|
||||||
|
procedure cbCloseButtonChange(Sender: TObject);
|
||||||
|
procedure cbAllowTabMovingChange(Sender: TObject);
|
||||||
|
procedure cbTabHotTrackingChange(Sender: TObject);
|
||||||
|
procedure cmbPainterChange(Sender: TObject);
|
||||||
|
procedure cmbOrientationChange(Sender: TObject);
|
||||||
|
procedure JvTabBar1TabCloseQuery(Sender: TObject; Item: TJvTabBarItem;
|
||||||
|
var CanClose: Boolean);
|
||||||
|
private
|
||||||
|
|
||||||
|
public
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
MainForm: TMainForm;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{$R *.lfm}
|
||||||
|
|
||||||
|
{ TMainForm }
|
||||||
|
|
||||||
|
procedure TMainForm.cbCloseButtonChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
JvTabBar1.CloseButton := cbCloseButton.Checked;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TMainForm.cbTabHotTrackingChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
JvTabBar1.HotTracking := cbTabHotTracking.Checked;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TMainForm.cbAllowTabMovingChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
JvTabBar1.AllowTabMoving := cbAllowTabMoving.Checked;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TMainForm.cmbPainterChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
case cmbPainter.ItemIndex of
|
||||||
|
0: JvTabBar1.Painter := JvModernTabBarPainter1;
|
||||||
|
1: JvTabBar1.Painter := JvTabBarXPPainter1;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TMainForm.JvTabBar1TabCloseQuery(Sender: TObject;
|
||||||
|
Item: TJvTabBarItem; var CanClose: Boolean);
|
||||||
|
begin
|
||||||
|
CanClose := MessageDlg('Do you really want to close tab ' + Item.Caption + '?',
|
||||||
|
mtConfirmation, [mbYes, mbNo], 0) = mrYes;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TMainForm.cmbOrientationChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
case cmbOrientation.ItemIndex of
|
||||||
|
0: begin
|
||||||
|
JvTabBar1.Orientation := toTop;
|
||||||
|
JvTabBar1.Align := alTop;
|
||||||
|
end;
|
||||||
|
1: begin
|
||||||
|
JvTabBar1.Orientation := toBottom;
|
||||||
|
JvTabBar1.Align := alBottom;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -10,34 +10,29 @@ the specific language governing rights and limitations under the License.
|
|||||||
|
|
||||||
The Original Code is: JvPageList.PAS, released on 2003-04-25.
|
The Original Code is: JvPageList.PAS, released on 2003-04-25.
|
||||||
|
|
||||||
The Initial Developer of the Original Code is Peter Thörnqvist [peter3 at sourceforge dot net] .
|
The Initial Developer of the Original Code is Peter Th�rnqvist [peter3 at sourceforge dot net] .
|
||||||
Portions created by Peter Thörnqvist are Copyright (C) 2004 Peter Thörnqvist.
|
Portions created by Peter Th�rnqvist are Copyright (C) 2004 Peter Th�rnqvist.
|
||||||
All Rights Reserved.
|
All Rights Reserved.
|
||||||
|
|
||||||
Contributor(s):
|
Contributor(s):
|
||||||
|
|
||||||
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
|
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
|
||||||
located at http://jvcl.sourceforge.net
|
located at http://jvcl.delphi-jedi.org
|
||||||
|
|
||||||
Known Issues:
|
Known Issues:
|
||||||
|
|
||||||
-----------------------------------------------------------------------------}
|
-----------------------------------------------------------------------------}
|
||||||
// $Id: JvPageList.pas 11400 2007-06-28 21:24:06Z ahuser $
|
// $Id$
|
||||||
|
|
||||||
// Initial port to Lazarus by Sergio Samayoa - september 2007.
|
|
||||||
// Conversion is done in incremental way: as types / classes / routines
|
|
||||||
// are needed they are converted.
|
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
|
||||||
|
|
||||||
unit JvPageList;
|
unit JvPageList;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
LCLIntf, LCLType, LMessages,
|
SysUtils, Classes, Graphics, Controls, Types, LMessages, LCLIntf, LCLType,
|
||||||
SysUtils, Classes, Controls, Graphics,
|
JvComponent, JvThemes;
|
||||||
JvComponent;
|
|
||||||
|
|
||||||
type
|
type
|
||||||
EPageListError = class(Exception);
|
EPageListError = class(Exception);
|
||||||
@ -62,7 +57,6 @@ type
|
|||||||
{ TJvCustomPage is the base class for pages in a TJvPageList and implements the basic behaviour of such
|
{ TJvCustomPage is the base class for pages in a TJvPageList and implements the basic behaviour of such
|
||||||
a control. It has support for accepting components, propagating it's Enabled state, changing it's order in the
|
a control. It has support for accepting components, propagating it's Enabled state, changing it's order in the
|
||||||
page list and custom painting }
|
page list and custom painting }
|
||||||
|
|
||||||
TJvCustomPage = class(TJvCustomControl)
|
TJvCustomPage = class(TJvCustomControl)
|
||||||
private
|
private
|
||||||
FPageList: TJvCustomPageList;
|
FPageList: TJvCustomPageList;
|
||||||
@ -114,13 +108,12 @@ type
|
|||||||
TJvCustomPageList is a base class for components that implements the IPageList interface.
|
TJvCustomPageList is a base class for components that implements the IPageList interface.
|
||||||
It works like TPageControl but does not have any tabs
|
It works like TPageControl but does not have any tabs
|
||||||
}
|
}
|
||||||
TJvShowDesignCaption = (sdcNone, sdcTopLeft, sdcTopCenter, sdcTopRight, sdcLeftCenter, sdcCenter, sdcRightCenter, sdcBottomLeft, sdcBottomCenter, sdcBottomRight, sdcRunTime);
|
TJvShowDesignCaption = (
|
||||||
|
sdcNone, sdcTopLeft, sdcTopCenter, sdcTopRight, sdcLeftCenter, sdcCenter,
|
||||||
//TODO: 25.09.2007 - SESS - Find a better place...
|
sdcRightCenter, sdcBottomLeft, sdcBottomCenter, sdcBottomRight, sdcRunTime
|
||||||
TCMDesignHitTest = TLMMouse;
|
);
|
||||||
|
|
||||||
TJvCustomPageList = class(TJvCustomControl, IUnknown, IPageList)
|
TJvCustomPageList = class(TJvCustomControl, IUnknown, IPageList)
|
||||||
//TJvCustomPageList = class(TJvCustomControl)
|
|
||||||
private
|
private
|
||||||
FPages: TList;
|
FPages: TList;
|
||||||
FActivePage: TJvCustomPage;
|
FActivePage: TJvCustomPage;
|
||||||
@ -130,6 +123,7 @@ type
|
|||||||
FShowDesignCaption: TJvShowDesignCaption;
|
FShowDesignCaption: TJvShowDesignCaption;
|
||||||
FHiddenPages: TList;
|
FHiddenPages: TList;
|
||||||
procedure CMDesignHitTest(var Msg: TCMDesignHitTest); message CM_DESIGNHITTEST;
|
procedure CMDesignHitTest(var Msg: TCMDesignHitTest); message CM_DESIGNHITTEST;
|
||||||
|
procedure WMEraseBkgnd(var Message: TLMEraseBkgnd); message LM_ERASEBKGND;
|
||||||
procedure UpdateEnabled;
|
procedure UpdateEnabled;
|
||||||
procedure SetPropagateEnable(const Value: Boolean);
|
procedure SetPropagateEnable(const Value: Boolean);
|
||||||
procedure SetShowDesignCaption(const Value: TJvShowDesignCaption);
|
procedure SetShowDesignCaption(const Value: TJvShowDesignCaption);
|
||||||
@ -148,11 +142,12 @@ type
|
|||||||
function GetPageCaption(AIndex: Integer): string; virtual;
|
function GetPageCaption(AIndex: Integer): string; virtual;
|
||||||
procedure Paint; override;
|
procedure Paint; override;
|
||||||
procedure PageCaptionChanged(Index: Integer; const NewCaption: string); virtual;
|
procedure PageCaptionChanged(Index: Integer; const NewCaption: string); virtual;
|
||||||
|
|
||||||
procedure Change; dynamic;
|
procedure Change; dynamic;
|
||||||
procedure Loaded; override;
|
procedure Loaded; override;
|
||||||
procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
|
|
||||||
procedure ShowControl(AControl: TControl); override;
|
procedure ShowControl(AControl: TControl); override;
|
||||||
function InternalGetPageClass: TJvCustomPageClass; virtual;
|
function InternalGetPageClass: TJvCustomPageClass; virtual;
|
||||||
|
|
||||||
procedure SetActivePage(Page: TJvCustomPage); virtual;
|
procedure SetActivePage(Page: TJvCustomPage); virtual;
|
||||||
procedure InsertPage(APage: TJvCustomPage); virtual;
|
procedure InsertPage(APage: TJvCustomPage); virtual;
|
||||||
procedure RemovePage(APage: TJvCustomPage); virtual;
|
procedure RemovePage(APage: TJvCustomPage); virtual;
|
||||||
@ -160,11 +155,14 @@ type
|
|||||||
property HiddenPageList: TList read FHiddenPages;
|
property HiddenPageList: TList read FHiddenPages;
|
||||||
property PropagateEnable: Boolean read FPropagateEnable write SetPropagateEnable;
|
property PropagateEnable: Boolean read FPropagateEnable write SetPropagateEnable;
|
||||||
property ShowDesignCaption: TJvShowDesignCaption read FShowDesignCaption write SetShowDesignCaption default sdcCenter;
|
property ShowDesignCaption: TJvShowDesignCaption read FShowDesignCaption write SetShowDesignCaption default sdcCenter;
|
||||||
|
|
||||||
property OnChange: TNotifyEvent read FOnChange write FOnChange;
|
property OnChange: TNotifyEvent read FOnChange write FOnChange;
|
||||||
property OnChanging: TJvPageChangingEvent read FOnChanging write FOnChanging;
|
property OnChanging: TJvPageChangingEvent read FOnChanging write FOnChanging;
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
|
|
||||||
|
procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override; // public in D2009
|
||||||
function FindNextPage(CurPage: TJvCustomPage; GoForward: Boolean; IncludeDisabled: Boolean): TJvCustomPage;
|
function FindNextPage(CurPage: TJvCustomPage; GoForward: Boolean; IncludeDisabled: Boolean): TJvCustomPage;
|
||||||
procedure PrevPage;
|
procedure PrevPage;
|
||||||
procedure NextPage;
|
procedure NextPage;
|
||||||
@ -174,6 +172,7 @@ type
|
|||||||
function GetVisiblePageCount: Integer;
|
function GetVisiblePageCount: Integer;
|
||||||
property Height default 200;
|
property Height default 200;
|
||||||
property Width default 300;
|
property Width default 300;
|
||||||
|
|
||||||
property ActivePageIndex: Integer read GetActivePageIndex write SetActivePageIndex;
|
property ActivePageIndex: Integer read GetActivePageIndex write SetActivePageIndex;
|
||||||
property ActivePage: TJvCustomPage read FActivePage write SetActivePage;
|
property ActivePage: TJvCustomPage read FActivePage write SetActivePage;
|
||||||
property Pages[Index: Integer]: TJvCustomPage read GetPage; default;
|
property Pages[Index: Integer]: TJvCustomPage read GetPage; default;
|
||||||
@ -194,6 +193,7 @@ type
|
|||||||
property PopupMenu;
|
property PopupMenu;
|
||||||
property ShowHint;
|
property ShowHint;
|
||||||
property PageIndex;
|
property PageIndex;
|
||||||
|
|
||||||
property OnContextPopup;
|
property OnContextPopup;
|
||||||
property OnDragDrop;
|
property OnDragDrop;
|
||||||
property OnDragOver;
|
property OnDragOver;
|
||||||
@ -207,15 +207,14 @@ type
|
|||||||
property OnResize;
|
property OnResize;
|
||||||
property OnShow;
|
property OnShow;
|
||||||
property OnStartDrag;
|
property OnStartDrag;
|
||||||
|
|
||||||
property OnBeforePaint;
|
property OnBeforePaint;
|
||||||
property OnPaint;
|
property OnPaint;
|
||||||
property OnAfterPaint;
|
property OnAfterPaint;
|
||||||
property OnMouseEnter;
|
property OnMouseEnter;
|
||||||
property OnMouseLeave;
|
property OnMouseLeave;
|
||||||
property OnParentColorChange;
|
property OnParentColorChange;
|
||||||
{$IFDEF JVCLThemesEnabled}
|
|
||||||
property ParentBackground default False;
|
property ParentBackground default False;
|
||||||
{$ENDIF JVCLThemesEnabled}
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TJvPageList = class(TJvCustomPageList)
|
TJvPageList = class(TJvCustomPageList)
|
||||||
@ -227,6 +226,7 @@ type
|
|||||||
property ActivePage;
|
property ActivePage;
|
||||||
property PropagateEnable;
|
property PropagateEnable;
|
||||||
property ShowDesignCaption;
|
property ShowDesignCaption;
|
||||||
|
|
||||||
property Action;
|
property Action;
|
||||||
property Align;
|
property Align;
|
||||||
property Anchors;
|
property Anchors;
|
||||||
@ -237,7 +237,6 @@ type
|
|||||||
property OnStartDock;
|
property OnStartDock;
|
||||||
property OnUnDock;
|
property OnUnDock;
|
||||||
property OnEndDock;
|
property OnEndDock;
|
||||||
// property OnCanResize;
|
|
||||||
property OnDockDrop;
|
property OnDockDrop;
|
||||||
property OnDockOver;
|
property OnDockOver;
|
||||||
property OnGetSiteInfo;
|
property OnGetSiteInfo;
|
||||||
@ -247,9 +246,11 @@ type
|
|||||||
property PopupMenu;
|
property PopupMenu;
|
||||||
property ShowHint;
|
property ShowHint;
|
||||||
property Visible;
|
property Visible;
|
||||||
|
|
||||||
property OnMouseEnter;
|
property OnMouseEnter;
|
||||||
property OnMouseLeave;
|
property OnMouseLeave;
|
||||||
property OnParentColorChange;
|
property OnParentColorChange;
|
||||||
|
|
||||||
property OnChange;
|
property OnChange;
|
||||||
property OnChanging;
|
property OnChanging;
|
||||||
property OnConstrainedResize;
|
property OnConstrainedResize;
|
||||||
@ -268,9 +269,7 @@ type
|
|||||||
property OnMouseWheelUp;
|
property OnMouseWheelUp;
|
||||||
property OnResize;
|
property OnResize;
|
||||||
property OnStartDrag;
|
property OnStartDrag;
|
||||||
{$IFDEF JVCLThemesEnabled}
|
|
||||||
property ParentBackground default False;
|
property ParentBackground default False;
|
||||||
{$ENDIF JVCLThemesEnabled}
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
@ -280,20 +279,20 @@ uses
|
|||||||
|
|
||||||
function GetUniqueName(AOwner: TComponent; const AClassName: string): string;
|
function GetUniqueName(AOwner: TComponent; const AClassName: string): string;
|
||||||
var
|
var
|
||||||
i: Integer;
|
I: Integer;
|
||||||
begin
|
begin
|
||||||
i := 0;
|
I := 0;
|
||||||
if AOwner = nil then
|
if AOwner = nil then
|
||||||
begin
|
begin
|
||||||
repeat
|
repeat
|
||||||
Inc(i);
|
Inc(I);
|
||||||
Result := AClassName + IntToStr(i);
|
Result := AClassName + IntToStr(I);
|
||||||
until FindGlobalComponent(Result) = nil;
|
until FindGlobalComponent(Result) = nil;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
repeat
|
repeat
|
||||||
Inc(i);
|
Inc(I);
|
||||||
Result := AClassName + IntToStr(i);
|
Result := AClassName + IntToStr(I);
|
||||||
until AOwner.FindComponent(Result) = nil;
|
until AOwner.FindComponent(Result) = nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -304,12 +303,19 @@ begin
|
|||||||
inherited Create(AOwner);
|
inherited Create(AOwner);
|
||||||
FPageIndex := -1;
|
FPageIndex := -1;
|
||||||
Align := alClient;
|
Align := alClient;
|
||||||
|
//ControlStyle := ControlStyle + [csAcceptsControls, csDesignFixedBounds, csNoDesignVisible, csNoFocus];
|
||||||
ControlStyle := ControlStyle + [csOpaque, csAcceptsControls, csNoDesignVisible];
|
ControlStyle := ControlStyle + [csOpaque, csAcceptsControls, csNoDesignVisible];
|
||||||
// IncludeThemeStyle(Self, [csParentBackground]);
|
// IncludeThemeStyle(Self, [csParentBackground]);
|
||||||
Visible := False;
|
Visible := False;
|
||||||
DoubleBuffered := True;
|
DoubleBuffered := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
destructor TJvCustomPage.Destroy;
|
||||||
|
begin
|
||||||
|
PageList := nil;
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TJvCustomPage.CreateParams(var Params: TCreateParams);
|
procedure TJvCustomPage.CreateParams(var Params: TCreateParams);
|
||||||
begin
|
begin
|
||||||
inherited CreateParams(Params);
|
inherited CreateParams(Params);
|
||||||
@ -317,12 +323,6 @@ begin
|
|||||||
Style := Style and not (CS_HREDRAW or CS_VREDRAW);
|
Style := Style and not (CS_HREDRAW or CS_VREDRAW);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TJvCustomPage.Destroy;
|
|
||||||
begin
|
|
||||||
PageList := nil; // This removes the page from the PageList.
|
|
||||||
inherited Destroy;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TJvCustomPage.DoAfterPaint(ACanvas: TCanvas; ARect: TRect);
|
procedure TJvCustomPage.DoAfterPaint(ACanvas: TCanvas; ARect: TRect);
|
||||||
begin
|
begin
|
||||||
if Assigned(FOnAfterPaint) then
|
if Assigned(FOnAfterPaint) then
|
||||||
@ -366,22 +366,18 @@ procedure TJvCustomPage.DoPaint(ACanvas: TCanvas; ARect: TRect);
|
|||||||
var
|
var
|
||||||
S: string;
|
S: string;
|
||||||
begin
|
begin
|
||||||
with ACanvas do
|
ACanvas.Font := Font;
|
||||||
|
ACanvas.Brush.Style := bsSolid;
|
||||||
|
ACanvas.Brush.Color := Color;
|
||||||
|
DrawThemedBackground(Self, ACanvas, ARect);
|
||||||
|
if csDesigning in ComponentState then
|
||||||
begin
|
begin
|
||||||
Font := Self.Font;
|
ACanvas.Pen.Style := psDot;
|
||||||
Brush.Style := bsSolid;
|
ACanvas.Pen.Color := clBlack;
|
||||||
Brush.Color := Self.Color;
|
ACanvas.Brush.Style := bsClear;
|
||||||
//SESS
|
ACanvas.Rectangle(ARect);
|
||||||
//DrawThemedBackground(Self, Canvas, ARect);
|
ACanvas.Brush.Style := bsSolid;
|
||||||
DoEraseBackground(Canvas, 0);
|
ACanvas.Brush.Color := Color;
|
||||||
if (csDesigning in ComponentState) then
|
|
||||||
begin
|
|
||||||
Pen.Style := psDot;
|
|
||||||
Pen.Color := clBlack;
|
|
||||||
Brush.Style := bsClear;
|
|
||||||
Rectangle(ARect);
|
|
||||||
Brush.Style := bsSolid;
|
|
||||||
Brush.Color := Color;
|
|
||||||
if (PageList <> nil) and (PageList.ShowDesignCaption <> sdcNone) then
|
if (PageList <> nil) and (PageList.ShowDesignCaption <> sdcNone) then
|
||||||
begin
|
begin
|
||||||
S := Caption;
|
S := Caption;
|
||||||
@ -391,18 +387,16 @@ begin
|
|||||||
InflateRect(ARect, -4, -4);
|
InflateRect(ARect, -4, -4);
|
||||||
if not Enabled then
|
if not Enabled then
|
||||||
begin
|
begin
|
||||||
SetBkMode(Handle, TRANSPARENT);
|
SetBkMode(ACanvas.Handle, LCLType.TRANSPARENT);
|
||||||
Canvas.Font.Color := clHighlightText;
|
ACanvas.Font.Color := clHighlightText;
|
||||||
//TODO: Use JCLUtils one?
|
DrawText(ACanvas.Handle, PChar(S), Length(S), ARect, GetDesignCaptionFlags(PageList.ShowDesignCaption) or DT_SINGLELINE);
|
||||||
DrawText(Handle, PChar(S), Length(S), ARect, GetDesignCaptionFlags(PageList.ShowDesignCaption) or DT_SINGLELINE);
|
|
||||||
OffsetRect(ARect, -1, -1);
|
OffsetRect(ARect, -1, -1);
|
||||||
Canvas.Font.Color := clGrayText;
|
ACanvas.Font.Color := clGrayText;
|
||||||
end;
|
end;
|
||||||
DrawText(Handle, PChar(S), Length(S), ARect, GetDesignCaptionFlags(PageList.ShowDesignCaption) or DT_SINGLELINE);
|
DrawText(ACanvas.Handle, PChar(S), Length(S), ARect, GetDesignCaptionFlags(PageList.ShowDesignCaption) or DT_SINGLELINE);
|
||||||
InflateRect(ARect, 4, 4);
|
InflateRect(ARect, 4, 4);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
|
||||||
if Assigned(FOnPaint) then
|
if Assigned(FOnPaint) then
|
||||||
FOnPaint(Self, ACanvas, ARect);
|
FOnPaint(Self, ACanvas, ARect);
|
||||||
end;
|
end;
|
||||||
@ -459,14 +453,38 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
function TJvCustomPage.DoEraseBackground(ACanvas: TCanvas; Param: Integer): Boolean;
|
function TJvCustomPage.DoEraseBackground(ACanvas: TCanvas; Param: Integer): Boolean;
|
||||||
|
{$IFDEF JVCLStylesEnabled}
|
||||||
|
var
|
||||||
|
BrushRecall: TBrushRecall;
|
||||||
|
{$ENDIF JVCLStylesEnabled}
|
||||||
begin
|
begin
|
||||||
exit;
|
if DoubleBuffered then
|
||||||
|
begin
|
||||||
ACanvas.Brush.Color := Self.Color;
|
{$IFDEF JVCLStylesEnabled}
|
||||||
ACanvas.Brush.Style := bsSolid;
|
BrushRecall := nil;
|
||||||
ACanvas.FillRect(Rect(0, 0, Width, Height));
|
try
|
||||||
|
if StyleServices.Enabled and not StyleServices.IsSystemStyle then
|
||||||
|
begin
|
||||||
|
BrushRecall := TBrushRecall.Create(Brush);
|
||||||
|
Brush.Color := StyleServices.GetSystemColor(Brush.Color);
|
||||||
|
end;
|
||||||
|
{$ENDIF JVCLStylesEnabled}
|
||||||
|
Result := inherited DoEraseBackground(ACanvas, Param);
|
||||||
|
{$IFDEF JVCLStylesEnabled}
|
||||||
|
finally
|
||||||
|
BrushRecall.Free;
|
||||||
|
end;
|
||||||
|
{$ENDIF JVCLStylesEnabled}
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
{$IFDEF JVCLStylesEnabled}
|
||||||
|
if StyleServices.Enabled then
|
||||||
|
DrawThemedBackground(Self, Canvas, ClientRect, Color, ParentBackground);
|
||||||
|
{$ENDIF JVCLStylesEnabled}
|
||||||
Result := True;
|
Result := True;
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TJvCustomPage.TextChanged;
|
procedure TJvCustomPage.TextChanged;
|
||||||
begin
|
begin
|
||||||
@ -490,15 +508,10 @@ end;
|
|||||||
procedure TJvCustomPage.ShowingChanged;
|
procedure TJvCustomPage.ShowingChanged;
|
||||||
begin
|
begin
|
||||||
inherited ShowingChanged;
|
inherited ShowingChanged;
|
||||||
|
try
|
||||||
if Showing then
|
if Showing then
|
||||||
try
|
|
||||||
DoShow
|
DoShow
|
||||||
except
|
|
||||||
Application.HandleException(Self);
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
if not Showing then
|
|
||||||
try
|
|
||||||
DoHide;
|
DoHide;
|
||||||
except
|
except
|
||||||
Application.HandleException(Self);
|
Application.HandleException(Self);
|
||||||
@ -510,10 +523,7 @@ end;
|
|||||||
constructor TJvCustomPageList.Create(AOwner: TComponent);
|
constructor TJvCustomPageList.Create(AOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
inherited Create(AOwner);
|
inherited Create(AOwner);
|
||||||
// TNotebook has a comment: "Do not add csAcceptsControls" !!!!
|
ControlStyle := ControlStyle + [csAcceptsControls];
|
||||||
// ControlStyle := ControlStyle + [csAcceptsControls];
|
|
||||||
ControlStyle := [];
|
|
||||||
|
|
||||||
// IncludeThemeStyle(Self, [csParentBackground]);
|
// IncludeThemeStyle(Self, [csParentBackground]);
|
||||||
FPages := TList.Create;
|
FPages := TList.Create;
|
||||||
FHiddenPages := TList.Create;
|
FHiddenPages := TList.Create;
|
||||||
@ -536,7 +546,7 @@ end;
|
|||||||
|
|
||||||
function TJvCustomPageList.CanChange(AIndex: Integer): Boolean;
|
function TJvCustomPageList.CanChange(AIndex: Integer): Boolean;
|
||||||
begin
|
begin
|
||||||
Result := (AIndex >= 0) and (AIndex < GetPageCount);
|
Result := (AIndex >= 0) and (AIndex < PageCount);
|
||||||
if Result and Assigned(FOnChanging) then
|
if Result and Assigned(FOnChanging) then
|
||||||
FOnChanging(Self, AIndex, Result);
|
FOnChanging(Self, AIndex, Result);
|
||||||
end;
|
end;
|
||||||
@ -552,9 +562,32 @@ var
|
|||||||
Pt: TPoint;
|
Pt: TPoint;
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
Pt := SmallPointToPoint(Msg.Pos);
|
//Pt := SmallPointToPoint(Msg.Pos);
|
||||||
if Assigned(ActivePage) and PtInRect(ActivePage.BoundsRect, Pt) then
|
//if Assigned(ActivePage) and PtInRect(ActivePage.BoundsRect, Pt) then
|
||||||
Msg.Result := 1;
|
// Msg.Result := 1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvCustomPageList.WMEraseBkgnd(var Message: TLMEraseBkgnd);
|
||||||
|
{$IFDEF JVCLStylesEnabled}
|
||||||
|
var
|
||||||
|
BrushRecall: TBrushRecall;
|
||||||
|
{$ENDIF JVCLStylesEnabled}
|
||||||
|
begin
|
||||||
|
{$IFDEF JVCLStylesEnabled}
|
||||||
|
BrushRecall := nil;
|
||||||
|
try
|
||||||
|
if StyleServices.Enabled and not StyleServices.IsSystemStyle then
|
||||||
|
begin
|
||||||
|
BrushRecall := TBrushRecall.Create(Brush);
|
||||||
|
Brush.Color := StyleServices.GetSystemColor(Brush.Color);
|
||||||
|
end;
|
||||||
|
{$ENDIF JVCLStylesEnabled}
|
||||||
|
inherited;
|
||||||
|
{$IFDEF JVCLStylesEnabled}
|
||||||
|
finally
|
||||||
|
BrushRecall.Free;
|
||||||
|
end;
|
||||||
|
{$ENDIF JVCLStylesEnabled}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TJvCustomPageList.GetChildren(Proc: TGetChildProc;
|
procedure TJvCustomPageList.GetChildren(Proc: TGetChildProc;
|
||||||
@ -575,7 +608,7 @@ end;
|
|||||||
|
|
||||||
function TJvCustomPageList.GetPageCaption(AIndex: Integer): string;
|
function TJvCustomPageList.GetPageCaption(AIndex: Integer): string;
|
||||||
begin
|
begin
|
||||||
if (AIndex >= 0) and (AIndex < GetPageCount) then
|
if (AIndex >= 0) and (AIndex < PageCount) then
|
||||||
Result := TJvCustomPage(FPages[AIndex]).Caption
|
Result := TJvCustomPage(FPages[AIndex]).Caption
|
||||||
else
|
else
|
||||||
Result := '';
|
Result := '';
|
||||||
@ -603,34 +636,37 @@ end;
|
|||||||
procedure TJvCustomPageList.Loaded;
|
procedure TJvCustomPageList.Loaded;
|
||||||
begin
|
begin
|
||||||
inherited Loaded;
|
inherited Loaded;
|
||||||
if (GetPageCount > 0) and (ActivePage = nil) then
|
if (PageCount > 0) and (ActivePage = nil) then
|
||||||
ActivePage := Pages[0];
|
ActivePage := Pages[0];
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TJvCustomPageList.Paint;
|
procedure TJvCustomPageList.Paint;
|
||||||
begin
|
begin
|
||||||
if (csDesigning in ComponentState) and (GetPageCount = 0) then
|
if (csDesigning in ComponentState) and (PageCount = 0) then
|
||||||
with Canvas do
|
|
||||||
begin
|
begin
|
||||||
Pen.Color := clBlack;
|
Canvas.Pen.Color := clBlack;
|
||||||
Pen.Style := psDot;
|
Canvas.Pen.Style := psDot;
|
||||||
Brush.Style := bsClear;
|
Canvas.Brush.Style := bsClear;
|
||||||
Rectangle(ClientRect);
|
Canvas.Rectangle(ClientRect);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TJvCustomPageList.RemovePage(APage: TJvCustomPage);
|
procedure TJvCustomPageList.RemovePage(APage: TJvCustomPage);
|
||||||
var
|
var
|
||||||
I: Integer;
|
I: Integer;
|
||||||
WNextPage: TJvCustomPage;
|
FNextPage: TJvCustomPage;
|
||||||
begin
|
begin
|
||||||
WNextPage := FindNextPage(APage, True, not (csDesigning in ComponentState));
|
FNextPage := FindNextPage(APage, True, not (csDesigning in ComponentState));
|
||||||
if WNextPage = APage then
|
if FNextPage = APage then
|
||||||
WNextPage := nil;
|
FNextPage := nil;
|
||||||
|
{ If the last page is removed, go back to the prior page }
|
||||||
|
if (FNextPage <> nil) and (FNextPage.PageIndex = 0) and (APage.PageIndex > 0) then
|
||||||
|
FNextPage := Pages[APage.PageIndex - 1];
|
||||||
|
|
||||||
APage.Visible := False;
|
APage.Visible := False;
|
||||||
APage.FPageList := nil;
|
APage.FPageList := nil;
|
||||||
FPages.Remove(APage);
|
FPages.Remove(APage);
|
||||||
SetActivePage(WNextPage);
|
SetActivePage(FNextPage);
|
||||||
// (ahuser) In some cases SetActivePage does not change FActivePage
|
// (ahuser) In some cases SetActivePage does not change FActivePage
|
||||||
// so we force FActivePage not to be "APage"
|
// so we force FActivePage not to be "APage"
|
||||||
if (FActivePage = APage) or (FActivePage = nil) then
|
if (FActivePage = APage) or (FActivePage = nil) then
|
||||||
@ -647,7 +683,7 @@ end;
|
|||||||
|
|
||||||
function TJvCustomPageList.GetPageFromIndex(AIndex: Integer): TJvCustomPage;
|
function TJvCustomPageList.GetPageFromIndex(AIndex: Integer): TJvCustomPage;
|
||||||
begin
|
begin
|
||||||
if (AIndex >= 0) and (AIndex < GetPageCount) then
|
if (AIndex >= 0) and (AIndex < PageCount) then
|
||||||
Result := TJvCustomPage(Pages[AIndex])
|
Result := TJvCustomPage(Pages[AIndex])
|
||||||
else
|
else
|
||||||
Result := nil;
|
Result := nil;
|
||||||
@ -674,6 +710,7 @@ end;
|
|||||||
procedure TJvCustomPageList.ShowControl(AControl: TControl);
|
procedure TJvCustomPageList.ShowControl(AControl: TControl);
|
||||||
begin
|
begin
|
||||||
if AControl is TJvCustomPage then
|
if AControl is TJvCustomPage then
|
||||||
|
if ActivePage <> AControl then
|
||||||
ActivePage := TJvCustomPage(AControl);
|
ActivePage := TJvCustomPage(AControl);
|
||||||
inherited ShowControl(AControl);
|
inherited ShowControl(AControl);
|
||||||
end;
|
end;
|
||||||
@ -727,17 +764,14 @@ end;
|
|||||||
procedure TJvCustomPageList.SetActivePage(Page: TJvCustomPage);
|
procedure TJvCustomPageList.SetActivePage(Page: TJvCustomPage);
|
||||||
var
|
var
|
||||||
ParentForm: TCustomForm;
|
ParentForm: TCustomForm;
|
||||||
//TODO: why?
|
|
||||||
//{$IFDEF COMPILER9_UP}
|
|
||||||
I: Integer;
|
I: Integer;
|
||||||
//{$ENDIF COMPILER9_UP}
|
|
||||||
begin
|
begin
|
||||||
// Mantis 3227: Checking if the page can be changed has to be done at the
|
// Mantis 3227: Checking if the page can be changed has to be done at the
|
||||||
// beginning or the page would change but not the index...
|
// beginning or the page would change but not the index...
|
||||||
if not (csLoading in ComponentState) and not CanChange(FPages.IndexOf(Page)) then
|
if not (csLoading in ComponentState) and not CanChange(FPages.IndexOf(Page)) then
|
||||||
Exit;
|
Exit;
|
||||||
|
|
||||||
if GetPageCount = 0 then
|
if PageCount = 0 then
|
||||||
FActivePage := nil;
|
FActivePage := nil;
|
||||||
if (Page = nil) or (Page.PageList <> Self) then
|
if (Page = nil) or (Page.PageList <> Self) then
|
||||||
Exit
|
Exit
|
||||||
@ -745,7 +779,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
ParentForm := GetParentForm(Self);
|
ParentForm := GetParentForm(Self);
|
||||||
if (ParentForm <> nil) and (FActivePage <> nil) and
|
if (ParentForm <> nil) and (FActivePage <> nil) and
|
||||||
FActivePage.ContainsControl(ParentForm.ActiveControl) then
|
FActivePage.ContainsControl(ParentForm.ActiveControl) and not (csDesigning in ComponentState) then
|
||||||
begin
|
begin
|
||||||
ParentForm.ActiveControl := FActivePage;
|
ParentForm.ActiveControl := FActivePage;
|
||||||
if ParentForm.ActiveControl <> FActivePage then
|
if ParentForm.ActiveControl <> FActivePage then
|
||||||
@ -755,16 +789,17 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//TODO: why?
|
|
||||||
//{$IFDEF COMPILER9_UP}
|
|
||||||
for I := 0 to GetPageCount - 1 do
|
|
||||||
if Pages[i] <> Page then
|
|
||||||
Pages[i].Hide;
|
|
||||||
//{$ELSE}
|
|
||||||
//Page.BringToFront;
|
|
||||||
//{$ENDIF COMPILER9_UP}
|
|
||||||
Page.Visible := True;
|
Page.Visible := True;
|
||||||
if (ParentForm <> nil) and (FActivePage <> nil) and (ParentForm.ActiveControl = FActivePage) then
|
Page.ControlStyle := Page.ControlStyle - [csNoDesignVisible];
|
||||||
|
for I := 0 to PageCount - 1 do
|
||||||
|
if Pages[i] <> Page then
|
||||||
|
begin
|
||||||
|
Pages[i].Visible := False;
|
||||||
|
Pages[i].ControlStyle := Pages[i].ControlStyle + [csNoDesignVisible];
|
||||||
|
end;
|
||||||
|
if csDesigning in ComponentState then // Visible:=False has no real effect when in design mode
|
||||||
|
Page.BringToFront;
|
||||||
|
if (ParentForm <> nil) and (FActivePage <> nil) and (ParentForm.ActiveControl = FActivePage) and not (csDesigning in ComponentState) then
|
||||||
begin
|
begin
|
||||||
if Page.CanFocus then
|
if Page.CanFocus then
|
||||||
ParentForm.ActiveControl := Page
|
ParentForm.ActiveControl := Page
|
||||||
@ -782,7 +817,7 @@ begin
|
|||||||
Change;
|
Change;
|
||||||
end;
|
end;
|
||||||
if (ParentForm <> nil) and (FActivePage <> nil) and
|
if (ParentForm <> nil) and (FActivePage <> nil) and
|
||||||
(ParentForm.ActiveControl = FActivePage) then
|
(ParentForm.ActiveControl = FActivePage) and not (csDesigning in ComponentState) then
|
||||||
begin
|
begin
|
||||||
FActivePage.SelectFirst;
|
FActivePage.SelectFirst;
|
||||||
end;
|
end;
|
||||||
@ -849,7 +884,7 @@ begin
|
|||||||
if GoForward then
|
if GoForward then
|
||||||
begin
|
begin
|
||||||
Inc(I);
|
Inc(I);
|
||||||
if I >= FPages.Count - 1 then
|
if I >= FPages.Count then
|
||||||
I := 0;
|
I := 0;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@ -871,12 +906,8 @@ begin
|
|||||||
if FShowDesignCaption <> Value then
|
if FShowDesignCaption <> Value then
|
||||||
begin
|
begin
|
||||||
FShowDesignCaption := Value;
|
FShowDesignCaption := Value;
|
||||||
if ActivePage <> nil then ActivePage.Invalidate;
|
|
||||||
//TODO:
|
|
||||||
(*
|
|
||||||
if HandleAllocated and (csDesigning in ComponentState) then
|
if HandleAllocated and (csDesigning in ComponentState) then
|
||||||
RedrawWindow(Handle, nil, 0, RDW_UPDATENOW or RDW_INVALIDATE or RDW_ALLCHILDREN);
|
RedrawWindow(Handle, nil, 0, RDW_UPDATENOW or RDW_INVALIDATE or RDW_ALLCHILDREN);
|
||||||
*)
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -906,6 +937,14 @@ begin
|
|||||||
else
|
else
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
//===TJvPageList =============================================================
|
||||||
|
|
||||||
|
function TJvPageList.InternalGetPageClass: TJvCustomPageClass;
|
||||||
|
begin
|
||||||
|
Result := TJvStandardPage;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TJvCustomPageList.DeletePage(Index: Integer);
|
procedure TJvCustomPageList.DeletePage(Index: Integer);
|
||||||
begin
|
begin
|
||||||
if (Index >= 0) and (Index < PageCount) then
|
if (Index >= 0) and (Index < PageCount) then
|
||||||
@ -934,12 +973,4 @@ begin
|
|||||||
Pages[Index].Caption := NewCaption;
|
Pages[Index].Caption := NewCaption;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
//===TJvPageList =============================================================
|
|
||||||
|
|
||||||
function TJvPageList.InternalGetPageClass: TJvCustomPageClass;
|
|
||||||
begin
|
|
||||||
Result := TJvStandardPage;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
Reference in New Issue
Block a user