Initial import.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@272 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
ssamayoa
2007-09-29 00:59:44 +00:00
parent 3a76eb5723
commit f8cb554d29
34 changed files with 35054 additions and 0 deletions

View File

@ -0,0 +1,16 @@
Directory structure
-------------------
.\ preprocessed files
source\ source files that must be preprocessed
Files
-----
.\jpp.exe JCL pascal preprocessor
.\preprocess.bat preprocess the source\JvExXxx files
.\Readme.txt this file
source\dpp.exe Delphi language preprocessor (http://www.sf.net/projects/dpp32)
source\build.pas used for preprocessing
source\JvExControls.pas base system and interfaces
source\JvExXxx extended VCL classes for the VCL controls
source\JvExControls.macros macros used by the preprocessor

View File

@ -0,0 +1,37 @@
@echo off
SET OUTDIR=..\..\..\run
cd src
SET FILE=.\build
if NOT "-%1" == "-" SET FILE=%1
echo Preprocessing template: %FILE%.pas
dpp.exe .\%FILE%.pas -I..\..\..\common >NUL
if "%FILE%" == ".\build" GOTO ALL
move %FILE%.i.pas %OUTDIR%\%FILE%.pas
goto LEAVE
:ALL
move JvExButtons.i.pas %OUTDIR%\JvExButtons.pas
move JvExCheckLst.i.pas %OUTDIR%\JvExCheckLst.pas
move JvExComCtrls.i.pas %OUTDIR%\JvExComCtrls.pas
move JvExControls.i.pas %OUTDIR%\JvExControls.pas
REM move JvExDBCtrls.i.pas %OUTDIR%\JvExDBCtrls.pas
move JvExDBGrids.i.pas %OUTDIR%\JvExDBGrids.pas
move JvExExtCtrls.i.pas %OUTDIR%\JvExExtCtrls.pas
move JvExForms.i.pas %OUTDIR%\JvExForms.pas
move JvExGrids.i.pas %OUTDIR%\JvExGrids.pas
move JvExMask.i.pas %OUTDIR%\JvExMask.pas
move JvExStdCtrls.i.pas %OUTDIR%\JvExStdCtrls.pas
cd ..
:LEAVE
SET FILE=
SET OUTDIR=

View File

@ -0,0 +1,594 @@
// This comment is inserted into every JvExXxx.pas file
(*$DEFINE WARNINGHEADER
{*****************************************************************************
* WARNING: Do not edit this file.
* This file is autogenerated from the source in devtools/JvExVCL/src.
* If you do it despite this warning your changes will be discarded by the next
* update of this file. Do your changes in the template files.
****************************************************************************}
{$D-} // do not step into this unit
*)
// *************************************************************************
// *************************** INTERFACE MACROS ****************************
// *************************************************************************
(*$DEFINE COMMON_PUBLISHED
published
property BiDiMode;
property DragCursor;
property DragKind;
property DragMode;
property ParentBiDiMode;
property OnEndDock;
property OnStartDock;
*)
// ****************** Control ************************
(*$DEFINE CONTROL_DECL
private
// TODO:
// FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TLMessage); override;
procedure FocusChanged(AControl: TWinControl); dynamic;
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
function GetCaption: TCaption; virtual;
procedure SetCaption(Value: TCaption); virtual;
public
constructor Create(AOwner: TComponent); override;
property Caption: TCaption read GetCaption write SetCaption;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
// TODO:
// property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
*)
// ****************** WinControl *********************
((*$DEFINE WINCONTROL_DECL
CONTROL_DECL
private
FDotNetHighlighting: Boolean;
protected
procedure BoundsChanged; reintroduce; virtual;
procedure CursorChanged; reintroduce; dynamic;
procedure ShowingChanged; reintroduce; dynamic;
procedure ShowHintChanged; reintroduce; dynamic;
procedure ControlsListChanging(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
procedure ControlsListChanged(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
procedure GetDlgCode(var Code: TDlgCodes); virtual;
procedure FocusSet(PrevWnd: THandle); virtual;
procedure FocusKilled(NextWnd: THandle); virtual;
function DoEraseBackground(ACanvas: TCanvas; Param: Integer): Boolean; virtual;
published
property DotNetHighlighting: Boolean read FDotNetHighlighting write FDotNetHighlighting default False;
*)
// ****************** EditControl ********************
(*$DEFINE EDITCONTROL_DECL
WINCONTROL_DECL
private
FClipboardCommands: TJvClipboardCommands;
protected
procedure SetClipboardCommands(const Value: TJvClipboardCommands); virtual;
property ClipboardCommands: TJvClipboardCommands read FClipboardCommands write SetClipboardCommands default [caCopy..caUndo];
*)
// *************************************************************************
// *************************************************************************
// ****************** Default-Helpers ********************
// TJvEx##ClassName = class(T##ClassName, IJvExControl)
(*$DEFINE CONTROL_DECL_DEFAULT(ClassName)
TJvEx##ClassName = class(T##ClassName)
CONTROL_DECL
end;
*)
// TJvEx##ClassName = class(T##ClassName, IJvExControl)
(*$DEFINE WINCONTROL_DECL_DEFAULT(ClassName)
TJvEx##ClassName = class(T##ClassName)
WINCONTROL_DECL
end;
*)
// TJvEx##ClassName = class(T##ClassName, IJvExControl)
(*$DEFINE EDITCONTROL_DECL_DEFAULT(ClassName)
TJvEx##ClassName = class(T##ClassName)
EDITCONTROL_DECL
end;
*)
// *************************************************************************
// ************************ IMPLEMENTATION MACROS **************************
// *************************************************************************
// ****************** Constructors *******************
(*$DEFINE BEGIN_CONTROL_CONSTRUCTOR(ClassName)
constructor TJvEx##ClassName.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
*)
(*$DEFINE BEGIN_WINCONTROL_CONSTRUCTOR(ClassName)
BEGIN_CONTROL_CONSTRUCTOR(ClassName)
*)
(*$DEFINE BEGIN_EDITCONTROL_CONSTRUCTOR(ClassName)
BEGIN_WINCONTROL_CONSTRUCTOR(ClassName)
FClipboardCommands := [caCopy..caUndo];
*)
(*$DEFINE END_CONSTRUCTOR
end;
*)
// ****************** Control implementation *******************
(*$DEFINE CONTROL_IMPL(ClassName)
function TJvEx##ClassName.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TLMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvEx##ClassName.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TLMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvEx##ClassName.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvEx##ClassName.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvEx##ClassName.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvEx##ClassName.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvEx##ClassName.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvEx##ClassName.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvEx##ClassName.ParentFontChanged;
begin
// LCL doesn't send this message but left it in case
//BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvEx##ClassName.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvEx##ClassName.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvEx##ClassName.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvEx##ClassName.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvEx##ClassName.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvEx##ClassName.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvEx##ClassName.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
end;
procedure TJvEx##ClassName.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
function TJvEx##ClassName.GetCaption: TCaption;
begin
Result := inherited Caption;
end;
// 25.09.2007 - SESS:
// I have done this because TextChanged wasn't fired as expected.
// I still don't shure if this problem is only for this reintroduced
// method because the way LCL treats Caption or will have the same
// problem with other reintroduced methods. So far, I tested some
// other events and seems not.
procedure TJvEx##ClassName.SetCaption(Value: TCaption);
begin
inherited Caption := Value;
TextChanged;
end;
*)
// ****************** WinControl implementation *******************
((*$DEFINE WINCONTROL_IMPL(ClassName)
CONTROL_IMPL(ClassName)
procedure TJvEx##ClassName.BoundsChanged;
begin
end;
procedure TJvEx##ClassName.CursorChanged;
begin
BaseWndProc(CM_CURSORCHANGED);
end;
procedure TJvEx##ClassName.ShowingChanged;
begin
BaseWndProc(CM_SHOWINGCHANGED);
end;
procedure TJvEx##ClassName.ShowHintChanged;
begin
BaseWndProc(CM_SHOWHINTCHANGED);
end;
{ VCL sends CM_CONTROLLISTCHANGE and CM_CONTROLCHANGE in a different order than
the CLX methods are used. So we must correct it by evaluating "Inserting". }
procedure TJvEx##ClassName.ControlsListChanging(Control: TControl; Inserting: Boolean);
begin
if Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
procedure TJvEx##ClassName.ControlsListChanged(Control: TControl; Inserting: Boolean);
begin
if not Inserting then
BaseWndProc(CM_CONTROLLISTCHANGE, Integer(Control), Integer(Inserting))
else
BaseWndProc(CM_CONTROLCHANGE, Integer(Control), Integer(Inserting));
end;
procedure TJvEx##ClassName.GetDlgCode(var Code: TDlgCodes);
begin
end;
procedure TJvEx##ClassName.FocusSet(PrevWnd: THandle);
begin
BaseWndProc(LM_SETFOCUS, Integer(PrevWnd), 0);
end;
procedure TJvEx##ClassName.FocusKilled(NextWnd: THandle);
begin
BaseWndProc(LM_KILLFOCUS, Integer(NextWnd), 0);
end;
function TJvEx##ClassName.DoEraseBackground(ACanvas: TCanvas; Param: Integer): Boolean;
begin
Result := BaseWndProc(LM_ERASEBKGND, ACanvas.Handle, Param) <> 0;
end;
*)
// ****************** EditControl implementation *******************
(*$DEFINE EDITCONTROL_IMPL(ClassName)
WINCONTROL_IMPL(ClassName)
procedure TJvEx##ClassName.SetClipboardCommands(const Value: TJvClipboardCommands);
begin
FClipboardCommands := Value;
end;
*)
// *********************************************************************
// *********************************************************************
// ****************** Control WndProc implementation *******************
(*$DEFINE CONTROL_WNDPROC_CASES
{
// TODO: do we need this? I think not...
CM_DENYSUBCLASSING:
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
}
CM_DIALOGCHAR:
with TCMDialogChar(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
CM_HITTEST:
with TCMHitTest(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter(TControl(Msg.LParam));
CM_MOUSELEAVE:
MouseLeave(TControl(Msg.LParam));
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
// LCL doesn't send this message but left it in case
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
// LCL doesn't send this message but left it in case
//CM_PARENTFONTCHANGED:
// ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
*)
(*$DEFINE CONTROL_WNDPROC(ClassName)
procedure TJvEx##ClassName.WndProc(var Msg: TLMessage);
begin
if not DispatchIsDesignMsg(Self, Msg) then
case Msg.Msg of
CONTROL_WNDPROC_CASES
else
inherited WndProc(Msg);
end;
end;
*)
// ****************** WinControl WndProc implementation *******************
(*$DEFINE WINCONTROL_WNDPROC_CASES
CONTROL_WNDPROC_CASES
CM_CURSORCHANGED:
CursorChanged;
CM_SHOWINGCHANGED:
ShowingChanged;
CM_SHOWHINTCHANGED:
ShowHintChanged;
CM_CONTROLLISTCHANGE:
if Msg.LParam <> 0 then
ControlsListChanging(TControl(Msg.WParam), True)
else
ControlsListChanged(TControl(Msg.WParam), False);
CM_CONTROLCHANGE:
if Msg.LParam = 0 then
ControlsListChanging(TControl(Msg.WParam), False)
else
ControlsListChanged(TControl(Msg.WParam), True);
LM_SETFOCUS:
FocusSet(THandle(Msg.WParam));
LM_KILLFOCUS:
FocusKilled(THandle(Msg.WParam));
LM_SIZE:
begin
inherited WndProc(Msg);
BoundsChanged;
end;
LM_ERASEBKGND:
if Msg.WParam <> 0 then
begin
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against Stock-Objects from Canvas
WCanvas := TCanvas.Create;
try
WCanvas.Handle := HDC(Msg.WParam);
Msg.Result := Ord(DoEraseBackground(WCanvas, Msg.LParam));
finally
WCanvas.Handle := 0;
WCanvas.Free;
RestoreDC(HDC(Msg.WParam), IdSaveDC);
end;
end
else
inherited WndProc(Msg);
LM_GETDLGCODE:
begin
inherited WndProc(Msg);
DlgCodes := [dcNative] + DlgcToDlgCodes(Msg.Result);
GetDlgCode(DlgCodes);
if not (dcNative in DlgCodes) then
Msg.Result := DlgCodesToDlgc(DlgCodes);
end;
*)
(*$DEFINE WINCONTROL_WNDPROC(ClassName)
procedure TJvEx##ClassName.WndProc(var Msg: TLMessage);
var
IdSaveDC: Integer;
DlgCodes: TDlgCodes;
WCanvas: TCanvas;
begin
if not DispatchIsDesignMsg(Self, Msg) then
begin
case Msg.Msg of
WINCONTROL_WNDPROC_CASES
else
inherited WndProc(Msg);
end;
// TODO:
// LM_NCPAINT isn't send by LCL, may be .Net highlighting can't be implemented.
case Msg.Msg of // precheck message to prevent access violations on released controls
CM_MOUSEENTER, CM_MOUSELEAVE, LM_KILLFOCUS, LM_SETFOCUS, LM_NCPAINT:
if DotNetHighlighting then
HandleDotNetHighlighting(Self, Msg, MouseOver, Color);
end;
end;
end;
*)
// ****************** EditControl WndProc implementation *******************
(*$DEFINE EDITCONTROL_WNDPROC_CASES
WINCONTROL_WNDPROC_CASES
{
// TODO: convert to LCL messages
WM_CLEAR:
if caClear in ClipboardCommands then
inherited WndProc(Msg)
else
Msg.Result := 1;
WM_UNDO, EM_UNDO:
if caUndo in ClipboardCommands then
inherited WndProc(Msg)
else
Msg.Result := 1;
WM_COPY:
if caCopy in ClipboardCommands then
inherited WndProc(Msg)
else
Msg.Result := 1;
WM_CUT:
if caCut in ClipboardCommands then
inherited WndProc(Msg)
else
Msg.Result := 1;
WM_PASTE:
if caPaste in ClipboardCommands then
inherited WndProc(Msg)
else
Msg.Result := 1;
}
*)
(*$DEFINE EDITCONTROL_WNDPROC(ClassName)
procedure TJvEx##ClassName.WndProc(var Msg: TLMessage);
var
IdSaveDC: Integer;
DlgCodes: TDlgCodes;
WCanvas: TCanvas;
begin
if not DispatchIsDesignMsg(Self, Msg) then
begin
case Msg.Msg of
EDITCONTROL_WNDPROC_CASES
else
inherited WndProc(Msg);
end;
// TODO:
// LM_NCPAINT isn't send by LCL, may be .Net highlighting can't be implemented.
case Msg.Msg of // precheck message to prevent access violations on released controls
CM_MOUSEENTER, CM_MOUSELEAVE, LM_KILLFOCUS, LM_SETFOCUS, LM_NCPAINT:
if DotNetHighlighting then
HandleDotNetHighlighting(Self, Msg, MouseOver, Color);
end;
end;
end;
*)
// *************************************************************************
// *************************************************************************
// ****************** Default-Helpers ********************
(*$DEFINE CONTROL_IMPL_DEFAULT(ClassName)
BEGIN_CONTROL_CONSTRUCTOR(ClassName)
END_CONSTRUCTOR
CONTROL_IMPL(ClassName)
CONTROL_WNDPROC(ClassName)
//============================================================================
*)
(*$DEFINE WINCONTROL_IMPL_DEFAULT(ClassName)
BEGIN_WINCONTROL_CONSTRUCTOR(ClassName)
END_CONSTRUCTOR
WINCONTROL_IMPL(ClassName)
WINCONTROL_WNDPROC(ClassName)
//============================================================================
*)
(*$DEFINE EDITCONTROL_IMPL_DEFAULT(ClassName)
BEGIN_EDITCONTROL_CONSTRUCTOR(ClassName)
END_CONSTRUCTOR
EDITCONTROL_IMPL(ClassName)
EDITCONTROL_WNDPROC(ClassName)
//============================================================================
*)

View File

@ -0,0 +1,479 @@
{-----------------------------------------------------------------------------
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: JvExControls.pas, released on 2004-01-04
The Initial Developer of the Original Code is Andreas Hausladen [Andreas dott Hausladen att gmx dott de]
Portions created by Andreas Hausladen are Copyright (C) 2004 Andreas Hausladen.
All Rights Reserved.
Contributor(s): -
dejoy.
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
located at http://jvcl.sourceforge.net
Known Issues:
-----------------------------------------------------------------------------}
// $Id: JvExControls.pas 11400 2007-06-28 21:24:06Z ahuser $
// Initial port to Lazarus by Sergio Samayoa - september 2007.
// Conversion is done in incremental way: as types / classes / routines
// are needed they are converted.
// TODO: Make this unit generated by template as JVCL's.
{$mode objfpc}{$H+}
unit JvExControls;
{MACROINCLUDE JvExControls.macros}
{*****************************************************************************
* WARNING: Do not edit this file.
* This file is autogenerated from the source in devtools/JvExVCL/src.
* If you do it despite this warning your changes will be discarded by the next
* update of this file. Do your changes in the template files.
****************************************************************************}
{$D-} // do not step into this unit
interface
uses
Classes, Controls, Graphics, LCLIntf, LCLType, LMessages, Forms;
type
TDlgCode =
(dcWantAllKeys, dcWantArrows, dcWantChars, dcButton, dcHasSetSel, dcWantTab,
dcNative); // if dcNative is in the set the native allowed keys are used and GetDlgCode is ignored
TDlgCodes = set of TDlgCode;
(******************** NOT CONVERTED
const
dcWantMessage = dcWantAllKeys;
const
CM_DENYSUBCLASSING = JvThemes.CM_DENYSUBCLASSING;
CM_PERFORM = CM_BASE + $500 + 0; // LParam: "Msg: ^TMessage"
CM_SETAUTOSIZE = CM_BASE + $500 + 1; // WParam: "Value: Boolean"
type
TJvHotTrackOptions = class;
{ IJvExControl is used for the identification of an JvExXxx control. }
IJvExControl = interface
['{8E6579C3-D683-4562-AFAB-D23C8526E386}']
end;
{ Add IJvDenySubClassing to the base class list if the control should not
be themed by the ThemeManager (http://www.soft-gems.net Mike Lischke).
This only works with JvExVCL derived classes. }
IJvDenySubClassing = interface
['{76942BC0-2A6E-4DC4-BFC9-8E110DB7F601}']
end;
{ IJvHotTrack is Specifies whether Control are highlighted when the mouse passes over them}
IJvHotTrack = interface
['{8F1B40FB-D8E3-46FE-A7A3-21CE4B199A8F}']
function GetHotTrack:Boolean;
function GetHotTrackFont:TFont;
function GetHotTrackFontOptions:TJvTrackFontOptions;
function GetHotTrackOptions:TJvHotTrackOptions;
procedure SetHotTrack(Value: Boolean);
procedure SetHotTrackFont(Value: TFont);
procedure SetHotTrackFontOptions(Value: TJvTrackFontOptions);
procedure SetHotTrackOptions(Value: TJvHotTrackOptions);
property HotTrack: Boolean read GetHotTrack write SetHotTrack;
property HotTrackFont: TFont read GetHotTrackFont write SetHotTrackFont;
property HotTrackFontOptions: TJvTrackFontOptions read GetHotTrackFontOptions write SetHotTrackFontOptions;
property HotTrackOptions: TJvHotTrackOptions read GetHotTrackOptions write SetHotTrackOptions;
end;
TJvHotTrackOptions = class(TJvPersistentProperty)
private
FEnabled: Boolean;
FFrameVisible: Boolean;
FColor: TColor;
FFrameColor: TColor;
procedure SetColor(Value: TColor);
procedure SetEnabled(Value: Boolean);
procedure SetFrameColor(Value: TColor);
procedure SetFrameVisible(Value: Boolean);
public
constructor Create; virtual;
procedure Assign(Source: TPersistent); override;
published
property Enabled: Boolean read FEnabled write SetEnabled default False;
property Color: TColor read FColor write SetColor default $00D2BDB6;
property FrameVisible: Boolean read FFrameVisible write SetFrameVisible default False;
property FrameColor: TColor read FFrameColor write SetFrameColor default $006A240A;
end;
******************** NOT CONVERTED *)
type
TStructPtrMessage = class(TObject)
private
public
Msg: TLMessage;
constructor Create(AMsg: Integer; WParam: Integer; var LParam);
end;
//******************** NOT CONVERTED
//procedure SetDotNetFrameColors(FocusedColor, UnfocusedColor: TColor);
procedure DrawDotNetControl(Control: TWinControl; AColor: TColor; InControl: Boolean);
procedure HandleDotNetHighlighting(Control: TWinControl; const Msg: TLMessage;
MouseOver: Boolean; Color: TColor);
function CreateWMMessage(Msg: Integer; WParam: Integer; LParam: Longint): TLMessage; overload; {$IFDEF SUPPORTS_INLINE} inline {$ENDIF}
function CreateWMMessage(Msg: Integer; WParam: Integer; LParam: TControl): TLMessage; overload; {$IFDEF SUPPORTS_INLINE} inline {$ENDIF}
function SmallPointToLong(const Pt: TSmallPoint): Longint; {$IFDEF SUPPORTS_INLINE} inline {$ENDIF}
function ShiftStateToKeyData(Shift: TShiftState): Longint;
//******************** NOT CONVERTED
//function GetFocusedControl(AControl: TControl): TWinControl;
function DlgcToDlgCodes(Value: Longint): TDlgCodes;
function DlgCodesToDlgc(Value: TDlgCodes): Longint;
procedure GetHintColor(var HintInfo: THintInfo; AControl: TControl; HintColor: TColor);
function DispatchIsDesignMsg(Control: TControl; var Msg: TLMessage): Boolean;
type
//******************** NOT CONVERTED
//CONTROL_DECL_DEFAULT(Control)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(WinControl)
WINCONTROL_DECL_DEFAULT(CustomControl)
CONTROL_DECL_DEFAULT(GraphicControl)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(HintWindow)
(******************** NOT CONVERTED
TJvExPubGraphicControl = class(TJvExGraphicControl)
COMMON_PUBLISHED
end;
******************** NOT CONVERTED *)
implementation
(******************** NOT CONVERTED
uses
TypInfo;
var
InternalFocusedColor: TColor = TColor($00733800);
InternalUnfocusedColor: TColor = clGray;
procedure SetDotNetFrameColors(FocusedColor, UnfocusedColor: TColor);
begin
InternalFocusedColor := FocusedColor;
InternalUnfocusedColor := UnfocusedColor;
end;
******************** NOT CONVERTED *)
procedure DrawDotNetControl(Control: TWinControl; AColor: TColor; InControl: Boolean);
(******************** NOT CONVERTED
var
DC: HDC;
R: TRect;
Canvas: TCanvas;
begin
DC := GetWindowDC(Control.Handle);
try
GetWindowRect(Control.Handle, R);
OffsetRect(R, -R.Left, -R.Top);
Canvas := TCanvas.Create;
with Canvas do
try
Handle := DC;
Brush.Color := InternalUnfocusedColor;
if Control.Focused or InControl then
Brush.Color := InternalFocusedColor;
FrameRect(R);
InflateRect(R, -1, -1);
if not (Control.Focused or InControl) then
Brush.Color := AColor;
FrameRect(R);
finally
Free;
end;
finally
ReleaseDC(Control.Handle, DC);
end;
end;
******************** NOT CONVERTED *)
begin
end;
procedure HandleDotNetHighlighting(Control: TWinControl; const Msg: TLMessage;
MouseOver: Boolean; Color: TColor);
(******************** NOT CONVERTED
var
Rgn, SubRgn: HRGN;
begin
if not (csDesigning in Control.ComponentState) then
case Msg.Msg of
CM_MOUSEENTER, CM_MOUSELEAVE, WM_KILLFOCUS, WM_SETFOCUS, WM_NCPAINT:
begin
DrawDotNetControl(Control, Color, MouseOver);
if Msg.Msg = CM_MOUSELEAVE then
begin
Rgn := CreateRectRgn(0, 0, Control.Width - 1, Control.Height - 1);
SubRgn := CreateRectRgn(2, 2, Control.Width - 3, Control.Height - 3);
try
CombineRgn(Rgn, Rgn, SubRgn, RGN_DIFF);
InvalidateRgn(Control.Handle, Rgn, False); // redraw 3D border
finally
DeleteObject(SubRgn);
DeleteObject(Rgn);
end;
end;
end;
end;
end;
******************** NOT CONVERTED *)
begin
end;
function CreateWMMessage(Msg: Integer; WParam: Integer; LParam: Longint): TLMessage;
begin
Result.Msg := Msg;
Result.WParam := WParam;
Result.LParam := LParam;
Result.Result := 0;
end;
function CreateWMMessage(Msg: Integer; WParam: Integer; LParam: TControl): TLMessage;
begin
Result := CreateWMMessage(Msg, WParam, Integer(LParam));
end;
{ TStructPtrMessage }
constructor TStructPtrMessage.Create(AMsg: Integer; WParam: Integer; var LParam);
begin
inherited Create;
Self.Msg.Msg := AMsg;
Self.Msg.WParam := WParam;
Self.Msg.LParam := Longint(@LParam);
Self.Msg.Result := 0;
end;
function SmallPointToLong(const Pt: TSmallPoint): Longint;
begin
Result := Longint(Pt);
end;
function ShiftStateToKeyData(Shift: TShiftState): Longint;
const
AltMask = $20000000;
CtrlMask = $10000000;
ShiftMask = $08000000;
begin
Result := 0;
if ssAlt in Shift then
Result := Result or AltMask;
if ssCtrl in Shift then
Result := Result or CtrlMask;
if ssShift in Shift then
Result := Result or ShiftMask;
end;
(******************** NOT CONVERTED
function GetFocusedControl(AControl: TControl): TWinControl;
var
Form: TCustomForm;
begin
Result := nil;
Form := GetParentForm(AControl);
if Assigned(Form) then
Result := Form.ActiveControl;
end;
******************** NOT CONVERTED *)
function DlgcToDlgCodes(Value: Longint): TDlgCodes;
begin
Result := [];
(******************** NOT CONVERTED
if (Value and DLGC_WANTARROWS) <> 0 then
Include(Result, dcWantArrows);
if (Value and DLGC_WANTTAB) <> 0 then
Include(Result, dcWantTab);
if (Value and DLGC_WANTALLKEYS) <> 0 then
Include(Result, dcWantAllKeys);
if (Value and DLGC_WANTCHARS) <> 0 then
Include(Result, dcWantChars);
if (Value and DLGC_BUTTON) <> 0 then
Include(Result, dcButton);
if (Value and DLGC_HASSETSEL) <> 0 then
Include(Result, dcHasSetSel);
******************** NOT CONVERTED *)
end;
function DlgCodesToDlgc(Value: TDlgCodes): Longint;
begin
Result := 0;
(******************** NOT CONVERTED
if dcWantAllKeys in Value then
Result := Result or DLGC_WANTALLKEYS;
if dcWantArrows in Value then
Result := Result or DLGC_WANTARROWS;
if dcWantTab in Value then
Result := Result or DLGC_WANTTAB;
if dcWantChars in Value then
Result := Result or DLGC_WANTCHARS;
if dcButton in Value then
Result := Result or DLGC_BUTTON;
if dcHasSetSel in Value then
Result := Result or DLGC_HASSETSEL;
******************** NOT CONVERTED *)
end;
procedure GetHintColor(var HintInfo: THintInfo; AControl: TControl; HintColor: TColor);
var
AHintInfo: THintInfo;
begin
case HintColor of
clNone:
HintInfo.HintColor := Application.HintColor;
clDefault:
begin
if Assigned(AControl) and Assigned(AControl.Parent) then
begin
AHintInfo := HintInfo;
AControl.Parent.Perform(CM_HINTSHOW, 0, Integer(@AHintInfo));
HintInfo.HintColor := AHintInfo.HintColor;
end;
end;
else
HintInfo.HintColor := HintColor;
end;
end;
function DispatchIsDesignMsg(Control: TControl; var Msg: TLMessage): Boolean;
var
Form: TCustomForm;
begin
Result := False;
case Msg.Msg of
LM_SETFOCUS, LM_KILLFOCUS, LM_NCHITTEST,
LM_MOUSEFIRST..LM_MOUSELAST,
LM_KEYFIRST..LM_KEYLAST,
LM_CANCELMODE:
Exit; // These messages are handled in TWinControl.WndProc before IsDesignMsg() is called
end;
if (Control <> nil) and (csDesigning in Control.ComponentState) then
begin
Form := GetParentForm(Control);
if (Form <> nil) and (Form.Designer <> nil) and
Form.Designer.IsDesignMsg(Control, Msg) then
Result := True;
end;
end;
(******************** NOT CONVERTED
//=== { TJvHotTrackOptions } ======================================
constructor TJvHotTrackOptions.Create;
begin
inherited Create;
FEnabled := False;
FFrameVisible := False;
FColor := $00D2BDB6;
FFrameColor := $006A240A;
end;
procedure TJvHotTrackOptions.Assign(Source: TPersistent);
begin
if Source is TJvHotTrackOptions then
begin
BeginUpdate;
try
Enabled := TJvHotTrackOptions(Source).Enabled;
Color := TJvHotTrackOptions(Source).Color;
FrameVisible := TJvHotTrackOptions(Source).FrameVisible;
FrameColor := TJvHotTrackOptions(Source).FrameColor;
finally
EndUpdate;
end;
end
else
inherited Assign(Source);
end;
procedure TJvHotTrackOptions.SetColor(Value: TColor);
begin
if FColor <> Value then
begin
Changing;
ChangingProperty('Color');
FColor := Value;
ChangedProperty('Color');
Changed;
end;
end;
procedure TJvHotTrackOptions.SetEnabled(Value: Boolean);
begin
if FEnabled <> Value then
begin
Changing;
ChangingProperty('Enabled');
FEnabled := Value;
ChangedProperty('Enabled');
Changed;
end;
end;
procedure TJvHotTrackOptions.SetFrameVisible(Value: Boolean);
begin
if FFrameVisible <> Value then
begin
Changing;
ChangingProperty('FrameVisible');
FFrameVisible := Value;
ChangedProperty('FrameVisible');
Changed;
end;
end;
procedure TJvHotTrackOptions.SetFrameColor(Value: TColor);
begin
if FFrameColor <> Value then
begin
Changing;
ChangingProperty('FrameColor');
FFrameColor := Value;
ChangedProperty('FrameColor');
Changed;
end;
end;
******************** NOT CONVERTED *)
//============================================================================
//******************** NOT CONVERTED
//CONTROL_IMPL_DEFAULT(Control)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(WinControl)
CONTROL_IMPL_DEFAULT(GraphicControl)
WINCONTROL_IMPL_DEFAULT(CustomControl)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(HintWindow)
end.

View File

@ -0,0 +1,163 @@
{-----------------------------------------------------------------------------
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: JvExExtCtrls.pas, released on 2004-01-04
The Initial Developer of the Original Code is Andreas Hausladen [Andreas dott Hausladen att gmx dott de]
Portions created by Andreas Hausladen are Copyright (C) 2004 Andreas Hausladen.
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.sourceforge.net
Known Issues:
-----------------------------------------------------------------------------}
// $Id: JvExExtCtrls.pas 10613 2006-05-19 19:21:43Z jfudickar $
// Initial port to Lazarus by Sergio Samayoa - september 2007.
// Conversion is done in incremental way: as types / classes / routines
// are needed they are converted.
unit JvExExtCtrls;
{MACROINCLUDE JvExControls.macros}
WARNINGHEADER
interface
uses
Classes, Controls, ExtCtrls, Forms, Graphics, JvExControls, LCLIntf, LMessages;
type
//******************** NOT CONVERTED
//CONTROL_DECL_DEFAULT(Shape)
//******************** NOT CONVERTED
//CONTROL_DECL_DEFAULT(PaintBox)
//******************** NOT CONVERTED
//CONTROL_DECL_DEFAULT(Image)
//******************** NOT CONVERTED
//CONTROL_DECL_DEFAULT(Bevel)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(CustomPanel)
(******************** NOT CONVERTED
TJvExPubCustomPanel = class(TJvExCustomPanel)
COMMON_PUBLISHED
end;
******************** NOT CONVERTED *)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(CustomRadioGroup)
CONTROL_DECL_DEFAULT(Splitter)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(CustomControlBar)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(ControlBar)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(Panel)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(RadioGroup)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(Page)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(Notebook)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(Header)
//******************** NOT CONVERTED
//CONTROL_DECL_DEFAULT(BoundLabel)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(CustomLabeledEdit)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(LabeledEdit)
//******************** NOT CONVERTED - Exists in LCL?
//WINCONTROL_DECL_DEFAULT(CustomColorBox)
//******************** NOT CONVERTED - Exists in LCL?
//WINCONTROL_DECL_DEFAULT(ColorBox)
implementation
//******************** NOT CONVERTED
//CONTROL_IMPL_DEFAULT(Shape)
//******************** NOT CONVERTED
//CONTROL_IMPL_DEFAULT(PaintBox)
//******************** NOT CONVERTED
//CONTROL_IMPL_DEFAULT(Image)
//******************** NOT CONVERTED
//CONTROL_IMPL_DEFAULT(Bevel)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(CustomPanel)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(CustomRadioGroup)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(CustomControlBar)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(ControlBar)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(Panel)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(RadioGroup)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(Page)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(Notebook)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(Header)
//******************** NOT CONVERTED
//CONTROL_IMPL_DEFAULT(BoundLabel)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(CustomLabeledEdit)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(LabeledEdit)
//******************** NOT CONVERTED - Exists in LCL?
//WINCONTROL_IMPL_DEFAULT(CustomColorBox)
//******************** NOT CONVERTED - Exists in LCL?
//WINCONTROL_IMPL_DEFAULT(ColorBox)
CONTROL_IMPL_DEFAULT(Splitter)
end.

View File

@ -0,0 +1,19 @@
unit build;
interface
uses
JvExControls
// ,JvExButtons
// ,JvExCheckLst
// ,JvExComCtrls
// ,JvExExtCtrls
// ,JvExForms
// ,JvExGrids,
// ,JvExMask,
// {,JvExDBCtrls}
// ,JvExDBGrids,
// ,JvExStdCtrls
;
implementation
end.

1
components/jvcllaz/dist/readme.txt vendored Normal file
View File

@ -0,0 +1 @@
Output directory for distribution packaging.

View File

@ -0,0 +1,137 @@
<?xml version="1.0"?>
<CONFIG>
<ProjectOptions>
<PathDelim Value="\"/>
<Version Value="5"/>
<General>
<MainUnit Value="0"/>
<IconPath Value="./"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="2"/>
</General>
<VersionInfo>
<ProjectVersion Value=""/>
</VersionInfo>
<PublishOptions>
<Version Value="2"/>
<IgnoreBinaries Value="False"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
</PublishOptions>
<RunParams>
<local>
<FormatVersion Value="1"/>
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
</local>
</RunParams>
<RequiredPackages Count="1">
<Item1>
<PackageName Value="LCL"/>
</Item1>
</RequiredPackages>
<Units Count="6">
<Unit0>
<Filename Value="JvNavPaneDemo.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="JvNavPaneDemo"/>
<CursorPos X="36" Y="11"/>
<TopLine Value="1"/>
<EditorIndex Value="0"/>
<UsageCount Value="22"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
<Filename Value="JvNavPaneDemoMainForm.pas"/>
<ComponentName Value="JvNavPaneDemoMainFrm"/>
<HasResources Value="True"/>
<IsPartOfProject Value="True"/>
<ResourceFilename Value="JvNavPaneDemoMainForm.lrs"/>
<UnitName Value="JvNavPaneDemoMainForm"/>
<CursorPos X="56" Y="345"/>
<TopLine Value="341"/>
<EditorIndex Value="3"/>
<UsageCount Value="22"/>
<Loaded Value="True"/>
</Unit1>
<Unit2>
<Filename Value="..\..\packages\JvXPBarReg.pp"/>
<UnitName Value="JvXPBarReg"/>
<CursorPos X="15" Y="20"/>
<TopLine Value="2"/>
<UsageCount Value="10"/>
</Unit2>
<Unit3>
<Filename Value="..\..\run\JvXPBar.pas"/>
<UnitName Value="JvXPBar"/>
<CursorPos X="3" Y="1758"/>
<TopLine Value="1747"/>
<UsageCount Value="10"/>
</Unit3>
<Unit4>
<Filename Value="..\..\packages\JvXPBarLaz.pas"/>
<UnitName Value="JvXPBarLaz"/>
<CursorPos X="5" Y="9"/>
<TopLine Value="1"/>
<EditorIndex Value="1"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit4>
<Unit5>
<Filename Value="..\..\run\JvTypes.pas"/>
<UnitName Value="JvTypes"/>
<CursorPos X="12" Y="41"/>
<TopLine Value="26"/>
<EditorIndex Value="2"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit5>
</Units>
<JumpHistory Count="0" HistoryIndex="-1"/>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
<PathDelim Value="\"/>
<SearchPaths>
<IncludeFiles Value="..\..\resources\"/>
<OtherUnitFiles Value="..\..\run\"/>
<UnitOutputDirectory Value="..\..\out"/>
</SearchPaths>
<CodeGeneration>
<Generate Value="Faster"/>
</CodeGeneration>
<Linking>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
</Options>
</Linking>
<Other>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Debugging>
<Watches Count="4">
<Item1>
<Expression Value="X"/>
</Item1>
<Item2>
<Expression Value="Y"/>
</Item2>
<Item3>
<Expression Value="SHIFT"/>
</Item3>
<Item4>
<Expression Value="mc"/>
</Item4>
</Watches>
<Exceptions Count="2">
<Item1>
<Name Value="ECodetoolError"/>
</Item1>
<Item2>
<Name Value="EFOpenError"/>
</Item2>
</Exceptions>
</Debugging>
</CONFIG>

View File

@ -0,0 +1,18 @@
program JvNavPaneDemo;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms
{ add your units here }, JvNavPaneDemoMainForm;
begin
Application.Initialize;
Application.CreateForm(TJvNavPaneDemoMainFrm, JvNavPaneDemoMainFrm);
Application.Run;
end.

View File

@ -0,0 +1,776 @@
object JvNavPaneDemoMainFrm: TJvNavPaneDemoMainFrm
Left = 105
Height = 468
Top = 109
Width = 518
HorzScrollBar.Page = 517
VertScrollBar.Page = 467
Caption = 'JvNavigationPane Demo'
DockSite = True
Font.Height = -11
Font.Name = 'Tahoma'
OnCreate = FormCreate
object PopupMenu1: TPopupMenu
OnPopup = PopupMenu1Popup
left = 92
top = 64
object HideAll1: TMenuItem
Caption = 'Hide All'
OnClick = HideAll1Click
end
object ShowAll1: TMenuItem
Caption = 'Show All'
OnClick = ShowAll1Click
end
object N1: TMenuItem
Caption = '-'
end
object ChangeFont1: TMenuItem
Caption = 'Font...'
OnClick = ChangeFont1Click
end
object Colors1: TMenuItem
Caption = 'Colors'
object Standard1: TMenuItem
Caption = 'Standard'
Checked = True
GroupIndex = 1
RadioItem = True
OnClick = SchemaClick
end
object Blue1: TMenuItem
Tag = 1
Caption = 'Blue'
GroupIndex = 1
RadioItem = True
OnClick = SchemaClick
end
object Silver1: TMenuItem
Tag = 2
Caption = 'Silver'
GroupIndex = 1
RadioItem = True
OnClick = SchemaClick
end
object Olive1: TMenuItem
Tag = 3
Caption = 'Olive'
GroupIndex = 1
RadioItem = True
OnClick = SchemaClick
end
end
object BackgroundImage1: TMenuItem
Caption = 'Background Image...'
OnClick = BackgroundImage1Click
end
object N2: TMenuItem
Caption = '-'
end
object Dontallowresize1: TMenuItem
Caption = 'Don''t allow resize'
OnClick = Dontallowresize1Click
end
object N3: TMenuItem
Caption = '-'
end
object ShowToolPanel1: TMenuItem
Caption = 'Show Tool Panel'
OnClick = ShowToolPanel1Click
end
object ShowCloseButton1: TMenuItem
Caption = 'Show Close Button'
OnClick = ShowCloseButton1Click
end
end
object LargeImages: TImageList
Height = 20
Width = 24
left = 92
top = 16
Bitmap = {
4C69060000001800000014000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000CEB59CFFC6AD9CFFCEAD
9CFFCEAD9CFF0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000BDBDBDFFE7C6B5FFC6F7FFFFC6F7FFFFADE7
F7FFC6AD9CFFCEAD9CFF00000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000CEAD9CFFDED6CEFFC6EFFFFFC6EFFFFFC6F7FFFFADE7
F7FF7BD6F7FF8CC6D6FFAD9484FF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000BDBDBDFFCEBDB5FFC6F7FFFFC6EFFFFFC6F7FFFFC6F7FFFFC6EFFFFF8CE7
FFFF7BDEF7FF6BC6F7FF6BCEF7FFAD9484FF0000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000CEAD
9CFFDED6CEFFC6EFFFFFC6F7FFFFC6EFFFFFC6F7FFFFC6EFFFFFADE7F7FF8CE7
F7FF84D6F7FF63CEF7FF6BC6F7FF4ABDF7FFBDBDBDFF849CA5FF000000000000
0000000000000000000000000000000000000000000000000000CEAD9CFFC6F7
FFFFC6F7FFFFC6EFFFFFC6F7FFFFA5E7F7FF94E7FFFF7BD6F7FF7BD6F7FF84D6
F7FF7BD6F7FF6BC6F7FF6BCEF7FF4AB5EFFF52B5F7FF4ABDF7FFAD9484FF0000
00000000000000000000000000000000000000000000C6AD9CFFC6F7FFFFADE7
F7FFA5E7F7FF94E7F7FF7BD6F7FF6BC6F7FF63CEF7FF52B5EFFF4ABDF7FF4AB5
F7FF52BDF7FF31B5DEFF39ADF7FF31A5EFFF21A5EFFF39A5EFFF39ADF7FFA57B
6BFF0000000000000000000000000000000000000000CEAD9CFF63C6F7FFF7EF
EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7
E7FFF7EFEFFFF7F7EFFFF7EFEFFFADE7F7FFADE7EFFF94C6D6FF31ADEFFF9C7B
6BFF0000000000000000000000000000000000000000D6AD84FF7BD6F7FFF7F7
EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7EF
EFFFEFEFEFFFF7EFE7FFEFEFEFFFF7F7EFFFF7EFEFFFDEC6ADFF31A5F7FF9C7B
6BFF4A4231FF00000000000000000000000000000000CEADA5FFC6AD9CFFFFDE
C6FFFFFFFFFFF7DECEFFFFDEC6FFF7F7EFFFFFDECEFFFFDEC6FFFFDECEFFF7DE
C6FFF7F7EFFFF7EFEFFFEFF7EFFFF7EFEFFFEFEFEFFFD6BDADFFA57B6BFF9C7B
6BFF4A4231FF00000000000000000000000000000000D6AD84FFFFDECEFFC6AD
9CFFFFFFFFFFF7F7EFFFD6CECEFFDED6CEFFD6D6CEFFD6D6CEFFDED6CEFFD6D6
CEFFDEBDADFFDEC6ADFFE7C6ADFFD6CECEFFF7F7EFFF9C7B6BFFE7AD8CFF9C7B
6BFF4A4231FF00000000000000000000000000000000D6A58CFFFFFFFFFFFFE7
CEFFC6AD9CFFFFFFFFFFFFFFFFFFCEA584FFD6A58CFFD6A584FFAD948CFFAD94
8CFFAD948CFFAD948CFFF7EFEFFFF7F7EFFF9C736BFFE7BD94FFFFCEA5FF9C7B
6BFF4A4231FF00000000000000000000000000000000CE9C7BFFFFFFFFFFEFEF
EFFFF7F7EFFFC6AD9CFFD6A58CFFFFE7CEFFEFEFEFFFF7F7EFFFF7EFEFFFF7F7
EFFFEFEFEFFFF7D6B5FF9C7B6BFFAD948CFFEFB594FFF7D6BDFFFFCE9CFF9C7B
6BFF4A4231FF00000000000000000000000000000000AD9484FFF7EFEFFFEFF7
EFFFF7EFEFFFD6A584FFEFF7EFFFF7EFEFFFEFEFEFFFF7EFEFFFEFEFEFFFEFEF
EFFFFFE7C6FFFFDECEFFFFCEA5FF9C7B6BFFFFCE9CFFFFCE9CFFF7C68CFF9C7B
6BFF4A4231FF00000000000000000000000000000000AD948CFFF7F7EFFFF7EF
EFFFCEA584FFF7F7EFFFF7EFEFFFEFEFEFFFF7F7E7FFEFEFEFFFF7F7EFFFFFDE
C6FFF7D6C6FFF7DEBDFFF7D6B5FFF7C68CFF9C7B6BFFF7B58CFFF7A573FF9C7B
6BFF4A4231FF00000000000000000000000000000000AD9484FFF7EFEFFFC6AD
9CFFEFEFEFFFF7EFEFFFEFEFEFFFF7F7EFFFF7DEC6FFFFDECEFFF7DEC6FFF7D6
C6FFF7D6B5FFF7D6BDFFFFCE9CFFF7C68CFFFFAD8CFF9C7B6BFFE7946BFF9C7B
6BFF4A4231FF00000000000000000000000000000000AD9484FFC6B59CFFF7F7
EFFFF7EFEFFFEFF7EFFFFFDEC6FFF7D6BDFFF7D6BDFFF7D6B5FFF7D6BDFFF7CE
ADFFFFCE9CFFFFCEA5FFF7BD8CFFE7B594FFF7A573FFE7946BFF9C7B6BFF9C7B
6BFF4A4231FF00000000000000000000000000000000C69C7BFFFFDEC6FFEFEF
EFFFFFDEC6FFF7D6BDFFFFCE9CFFF7C68CFFE7B594FFF7AD8CFFF7B58CFFF7A5
73FFEFA57BFFF7A573FFE79C63FFE79463FFE79C6BFFE79463FFCE7B4AFF9C7B
6BFF4A4231FF00000000000000000000000000000000CE9C7BFF9C7B6BFF9C7B
6BFF9C7B6BFF9C7B6BFF9C7B6BFF9C7B6BFF9C7B6BFF9C7B6BFF9C7B6BFF9C7B
6BFF9C7B6BFF9C7B6BFF9C7B6BFF9C7B6BFF9C7B6BFF9C7B6BFF9C7B6BFF9C7B
6BFF4A4231FF00000000000000000000000000000000000000004A4231FF4A42
31FF4A4231FF4A4231FF4A4231FF4A4231FF4A4231FF4A4231FF4A4231FF4A42
31FF4A4231FF4A4231FF4A4231FF4A4231FF4A4231FF4A4231FF4A4231FF4A42
31FF4A4231FF0000000000000000000000004A3931FF000000004A3929FF0000
00004A3931FF000000004A3931FF000000004A3931FF000000004A3929FF0000
00004A3931FF000000004A3931FF000000004A3931FF000000004A3931FF0000
00004A3931FF0000000000000000AD948CFF00000000AD948CFF00000000AD94
8CFF00000000AD948CFF00000000A57B6BFF000000009C7B6BFF00000000A57B
6BFF00000000A57B6BFF000000006B6352FF00000000735A52FF000000006B5A
52FF000000000000000000000000E7AD8CFFE7B58CFFE7B58CFFF7A573FFDEA5
7BFFDEAD84FFDEA57BFFE79C63FFE7946BFFE79463FFEF9C6BFFE79463FFD684
5AFFD68452FFD6845AFFDE7B4AFFE77B4AFFDE7B4AFFDE7B4AFFE77B4AFFDE7B
4AFF4A4231FF0000000000000000E7B58CFFFFDECEFFF7DECEFFFFDECEFFF7DE
C6FFFFD6BDFFF7D6BDFFF7CEB5FFF7CEB5FFF7CEB5FFF7BD9CFFF7BDA5FFF7BD
9CFFF7B58CFFF7B58CFFF7B58CFFF7A57BFFF7A573FFF7A57BFFF7A573FFE794
6BFF4A4231FF0000000000000000E7AD8CFFF7DEC6FFFFDEBDFFF7DEC6FFF7CE
ADFFEFCEB5FFF7CEADFFFFCE9CFFF7BD9CFFEFBD9CFFF7B58CFFF7B58CFFF7B5
8CFFF7A573FFF7A573FFF7A573FFEFA573FFF7A57BFFE79C63FFE7946BFFE79C
63FF4A4231FF0000000000000000F7A573FFF7A573FFF7A57BFFDEA57BFFDEA5
7BFFDEA57BFFE79463FFE7946BFFE79463FFE79C6BFFE79463FFD68452FFCE84
52FFD68452FFDE7B4AFFDE7B4AFFDE7B4AFFDE7B4AFFDE7B4AFF4A4231FF4A42
31FF4A4231FF0000000000000000CEBDB5FFFFFFFFFFFFFFFFFFFFFFFFFFEFBD
9CFFFFFFFFFFFFFFFFFFFFFFFFFFEFC69CFFFFFFFFFFF7EFEFFFF7F7F7FFEFBD
9CFFFFFFFFFFEFEFF7FFF7F7EFFFEFBD9CFFF7EFEFFFF7F7EFFFFFDECEFFE7BD
9CFF4A4231FF0000000000000000CEBDADFFFFFFFFFFEFF7EFFFF7EFEFFFE7BD
9CFFFFFFFFFFF7EFEFFFF7F7EFFFCEA58CFFF7EFEFFFEFF7EFFFF7DECEFFD6A5
84FFEFEFEFFFF7EFEFFFF7DEC6FFD6A584FFEFEFEFFFF7DECEFFF7CEB5FFCE9C
7BFF4A4231FF0000000000000000CEBDADFFFFFFFFFFF7EFEFFFEFEFEFFFD6A5
84FFFFFFFFFFEFF7EFFFFFDECEFFC69C7BFFF7EFEFFFFFDEC6FFF7DECEFFC69C
7BFFF7F7EFFFF7D6BDFFF7CEADFFC69C7BFFFFDECEFFF7CEADFFFFCE9CFFC69C
7BFF4A4231FF0000000000000000CEAD9CFFE7BD9CFFEFBD94FFCEA584FFD6AD
8CFFE7B594FFE7AD8CFFCE9C7BFFC69C7BFFE7BD94FFD6A584FFCE9C7BFF398C
D6FF428CD6FF398CD6FF1842CEFF1842CEFFE7BD94FFD6A58CFFC69C7BFFA57B
73FF4A4231FF0000000000000000C6B59CFFFFFFFFFFFFFFFFFFF7EFEFFFE7B5
94FFFFFFFFFFF7F7EFFFEFEFEFFFEFB594FFEFEFEFFFF7F7EFFFEFEFEFFF428C
D6FFF7F7EFFFF7EFEFFFFFE7CEFF1839CEFFFFE7CEFFF7DEC6FFFFE7CEFFE7B5
94FF4A4231FF0000000000000000C6ADA5FFFFFFFFFFF7EFEFFFEFF7EFFFD6A5
8CFFFFFFFFFFF7EFEFFFF7E7CEFFD6A58CFFEFEFEFFFF7EFEFFFFFE7C6FF398C
D6FFFFDECEFFF7D6BDFFFFDEBDFF1042CEFFFFDECEFFF7D6BDFFF7CEB5FFCE9C
7BFF4A4231FF0000000000000000C6AD9CFFFFFFFFFFF7F7EFFFF7DECEFFCE9C
7BFFEFF7EFFFFFDEC6FFF7D6BDFFCE9C7BFFEFF7EFFFFFDECEFFF7D6B5FF1839
CEFFFFDEBDFFF7D6BDFFF7CEADFF1842CEFFFFDEBDFFEFC6A5FFEFBD9CFFC69C
7BFF4A3931FF0000000000000000CEB59CFFE7B594FFD6A584FFC69C7BFFCE9C
7BFFE7B594FFCEA58CFFCE9C7BFFC69C7BFFEFB594FFCEA58CFFCE9C7BFF1842
CEFF1042CEFF1842CEFF1842CEFF1042D6FFE7AD8CFFC69C7BFFAD948CFFA57B
6BFF4A4231FF0000000000000000C6ADA5FFFFFFFFFFF7F7EFFFF7EFEFFFE7B5
94FFF7F7EFFFF7F7EFFFEFEFEFFFE7BD94FFF7EFEFFFFFE7CEFFF7DECEFFEFBD
94FFFFDECEFFFFE7CEFFFFDEBDFFEFB594FFF7DEC6FFFFDEC6FFF7CEADFFE7B5
9CFF4A4231FF0000000000000000C6B59CFFF7EFEFFFEFEFEFFFF7F7EFFFCEA5
8CFFF7EFEFFFF7DEC6FFFFDECEFFD6A584FFF7DECEFFF7D6BDFFFFDEBDFFC69C
7BFFFFDECEFFF7D6BDFFF7CEB5FFC69C7BFFFFD6BDFFEFCEB5FFFFCE9CFFCE9C
7BFF4A3931FF0000000000000000D6A58CFFF7F7EFFFEFEFEFFFF7DEBDFFCE9C
7BFFEFF7EFFFF7D6C6FFF7CEADFFC69C7BFFFFE7CEFFF7D6BDFFFFCEA5FFC69C
7BFFF7DEBDFFF7CEB5FFF7BD9CFFC69C7BFFF7CEB5FFF7BD9CFFE7BD94FFCE9C
7BFF4A4231FF0000000000000000CEA58CFFF7D6B5FFE7B594FFD6A58CFFC69C
7BFFE7AD8CFFCE9C7BFFAD948CFF9C7B6BFFE7AD8CFFCE9C7BFFAD948CFF9C7B
6BFFE7AD8CFFC69C7BFFAD948CFF9C7B6BFFE7B58CFFC69C7BFFAD948CFFA57B
73FF4A3931FF0000000000000000D6A58CFF4A4231FF4A4231FF4A4231FF4A42
31FF4A4231FF4A4231FF4A4231FF4A4231FF4A4231FF4A4231FF4A4231FF4A42
31FF4A4231FF4A4231FF4A4231FF4A4231FF4A4231FF4A4231FF4A4231FF4A42
31FF4A4231FF0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000CEBDADFFCEBDB5FFD6BD
ADFFCEBDADFFCEBDADFFCEBDADFFD6BDB5FFCEBDADFFCEAD9CFFC6B5A5FFCEAD
9CFFC6B59CFFC6AD9CFFC6B59CFFCEAD9CFFC6B59CFFD6A58CFFCEA584FFD6A5
8CFFAD948CFFAD9484FFAD948CFF0000000000000000D6BDADFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFEFEFEFFFF7F7EFFF4A4231FF0000000000000000CEBDADFFFFFFFFFFFFFF
FFFFF7EFEFFFB5BDBDFFAD948CFF6B7B8CFF6B848CFFBDBDBDFFF7EFEFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7EFFFF7EF
EFFFEFF7EFFFFFD6C6FF4A4231FF0000000000000000CEBDB5FFFFFFFFFFFFFF
FFFFBDBDBDFF6B848CFF6B7B8CFF8C9CA5FFAD948CFF6B5A52FFB5BDBDFFFFFF
FFFFFFFFFFFFF7AD8CFFF7B58CFFF7B58CFFF7A573FFF7A57BFFEFA573FFF7A5
73FFEFEFEFFFFFDEC6FF4A4231FF0000000000000000CEBDADFFFFFFFFFFFFFF
FFFF6B7B8CFF6B5A52FF736352FF6B848CFF6B5A52FFBDBDBDFF6B7B8CFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFF7F7EFFFEFEFEFFFF7F7
EFFFEFEFEFFFF7D6B5FF4A4231FF0000000000000000D6BDADFFFFFFFFFFFFFF
FFFF736352FF4A3931FFBDBDBDFFDED6D6FFBDBDBDFF8C9CA5FF6B848CFFFFFF
FFFFFFFFFFFFFFB58CFFF7AD8CFFF7B58CFFF7A573FFEFA573FFF7A573FFF7A5
73FFF7EFEFFFF7CEADFF4A4231FF0000000000000000CEBDADFFFFFFFFFFFFFF
FFFF4A3931FF4A4231FFDED6D6FFB5B5BDFF849CA5FF6B7B8CFF6B6352FFFFFF
FFFFFFFFFFFFEFF7EFFFF7EFEFFFF7F7EFFFEFEFEFFFF7EFEFFFEFEFEFFFF7F7
EFFFEFEFEFFFF7BD9CFF4A4231FF0000000000000000CEADA5FFFFFFFFFFFFFF
FFFFBDBDBDFF000000FFBDBDBDFF8C9CA5FF6B848CFF735A52FF849CA5FFF7EF
EFFFF7F7EFFFF7EFEFFFF7EFEFFFEFEFEFFFF7EFEFFFEFF7EFFFF7EFEFFFEFEF
EFFFFFE7CEFFF7BDA5FF4A4231FF0000000000000000C6AD9CFFFFFFFFFFFFFF
FFFFF7F7EFFFDECECEFF6B5A52FF6B6352FF735A52FF1842D6FFBDBDBDFFF7F7
EFFFEFEFEFFFEFEFE7FFF7F7EFFFEFEFEFFFF7F7EFFFF7EFEFFFF7DEC6FFFFDE
C6FFF7DECEFFEFB594FF4A4231FF0000000000000000CEAD9CFFFFFFFFFFFFFF
FFFFB5CEDEFF1842CEFF1842CEFFDED6D6FFF7F7EFFF1842CEFF1839CEFFD6D6
CEFFF7EFEFFFC69C7BFFCE9C7BFF9C7B6BFF9C736BFF9C7B6BFF9C7B6BFF9C7B
6BFFF7E7C6FFFFB58CFF4A4231FF0000000000000000C6AD9CFFFFFFFFFFFFFF
FFFF1842CEFF84ADC6FF398CD6FF1842CEFF1884BDFF1842CEFF188CC6FF1842
CEFFF7F7EFFFF7EFEFFFEFEFEFFFF7F7EFFFFFDEC6FFFFE7CEFFFFDECEFFFFD6
C6FFF7DEC6FFF7A573FF4A4231FF0000000000000000CEB5A5FFFFFFFFFFFFFF
FFFF1842CEFF39ADEFFF428CD6FF428CD6FF1842CEFF188CBDFF1842CEFF315A
73FFF7EFEFFFC69C7BFFA57B6BFF9C7B6BFF9C7B6BFF9C7B6BFF9C7B6BFF9C73
6BFFF7DEC6FFF7A573FF4A4231FF0000000000000000C6AD9CFFFFFFFFFFFFFF
FFFF1842CEFF188CBDFF428CD6FF428CD6FF1842CEFF188CC6FF2142CEFF3963
7BFFF7F7EFFFFFDECEFFF7DEC6FFFFDECEFFFFDECEFFFFDEC6FFF7DEBDFFFFDE
C6FFF7D6B5FFF7A57BFF4A4231FF0000000000000000C6AD9CFFFFFFFFFFF7F7
EFFFDED6CEFF1842CEFF1842CEFF1842CEFF1842CEFF396373FF39637BFFCEBD
ADFFFFDECEFF9C7B6BFFA57B6BFF9C7B6BFF9C7B6BFF9C736BFF9C7B6BFF9C73
6BFFF7CEB5FFE79463FF4A4231FF0000000000000000D6A58CFFF7F7EFFFF7EF
EFFFF7EFEFFFF7F7EFFFF7F7EFFFF7F7EFFFF7F7EFFFF7EFEFFFFFDECEFFFFE7
C6FFF7DECEFFFFDECEFFF7DEBDFFFFDEC6FFF7DEC6FFFFD6BDFFF7CEADFFF7CE
B5FFF7CEADFFE79463FF4A4231FF0000000000000000CEA584FFF7EFEFFFF7DE
C6FFF7D6C6FFF7DEC6FFF7CEBDFFF7D6B5FFF7C6ADFFEFC6ADFFF7BD9CFFEFBD
9CFFE7B594FFE7B58CFFF7AD8CFFF7A573FFF7A573FFEFA573FFF7A57BFFE794
63FFE79463FFEF9C6BFF4A4231FF0000000000000000D6A58CFF4A4231FF4A42
31FF4A4231FF4A4231FF4A4231FF4A4231FF4A4231FF4A4231FF4A4231FF4A42
31FF4A4231FF4A4231FF4A4231FF4A4231FF4A4231FF4A4231FF4A4231FF4A42
31FF4A4231FF4A4231FF4A4231FF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000849CA5FF849CA5FF849CA5FF8C9C
A5FF6B7B8CFF0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000DEC6B5FFCEBD
ADFFD6BDADFFCEBDB5FFCEBDADFF8C9CA5FF8CC6D6FFC6EFFFFFC6F7FFFFADE7
F7FF8CC6D6FF6B7B8CFFCEAD9CFFC6B5A5FFCEAD9CFFC6AD9CFFC6ADA5FF0000
00000000000000000000000000000000000000000000CEBDADFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFF7EFEFFF849CA5FFC6F7FFFF6B7B8CFF6B7B8CFF8C9C
A5FF8CC6CEFF31637BFFCEAD9CFFF7F7EFFFEFEFEFFFF7F7EFFFF7EFEFFF849C
A5FF0000000000000000000000000000000000000000D6BDADFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF8C9CA5FF8CBDD6FFADF7FFFF6B848CFF84ADC6FF8CC6
D6FF6BCEF7FF6B7B8CFF31637BFFFFDEC6FFEFEFEFFFF7F7EFFFB5CED6FF395A
7BFF0000000000000000000000000000000000000000CEBDADFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF849CA5FFADE7F7FFADE7EFFF8CBDD6FF8CC6CEFF8CC6
CEFF84ADC6FF84ADC6FF6B848CFFFFDEC6FFEFEFEFFFB5CED6FF1842CEFF428C
D6FF0000000000000000000000000000000000000000D6BDB5FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF6B848CFF6B7B8CFF6B7B8CFF396373FF39637BFF395A
7BFF396373FF6B7B8CFFAD948CFFFFDEBDFFA5ADF7FF1842CEFF428CD6FFCEA5
8CFF0000000000000000000000000000000000000000CEBDADFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7EFFFF7F7EFFFFFDECEFFF7DEC6FFFFD6
B5FFEFC6ADFFF7D6BDFFFFDEC6FFA5ADF7FF398CD6FF428CD6FFFFE7C6FF9C7B
6BFF0000000000000000000000000000000000000000CEBDB5FFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEF
EFFFF7F7EFFFF7EFEFFFB5CED6FF1842CEFF1842CEFFB5CED6FFFFDECEFF9C7B
6BFF0000000000000000000000000000000000000000D6BDADFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7EFEFFFF7EF
EFFFEFEFEFFFA5ADF7FF398CD6FF1842CEFFBDBDBDFFFFDECEFFF7D6BDFF6B5A
52FF0000000000000000000000000000000000000000CEBDADFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7EFEFFFEFEFEFFFF7F7
EFFFA5B5F7FF428CD6FF1842CEFF84ADBDFFFFDECEFFFFE7C6FFF7C6ADFF6B63
52FF0000000000000000000000000000000000000000CEBDADFFFFFFFFFFFFFF
FFFFA5ADFFFFB5CED6FFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFF7F7E7FFA5AD
F7FF398CD6FF1842CEFF8C9CA5FFDED6CEFFF7DECEFFF7DEBDFFF7BD9CFF6B5A
52FF0000000000000000000000000000000000000000CEBDB5FFF7F7EFFFA5AD
F7FF428CD6FF398CD6FFA5ADF7FFFFFFFFFFF7EFEFFFF7F7EFFFA5ADF7FF428C
D6FF1842CEFF398CD6FFFFDEC6FFF7E7CEFFFFD6BDFFF7DEC6FFEFBD9CFF6B63
52FF0000000000000000000000000000000000000000E7BDADFFA5E7F7FF1842
CEFF1842CEFF1842CEFFADB5F7FFA5ADF7FFEFF7EFFFA5ADF7FF398CD6FF1842
CEFF1842CEFFE7D6CEFFFFDECEFFF7D6BDFFF7DEC6FFF7CEADFFE7AD8CFF6B5A
52FF0000000000000000000000000000000000000000CEAD9CFFFFFFFFFFADB5
F7FF1842CEFF1842CEFF1842CEFFA5ADF7FFA5ADF7FF428CD6FF1842CEFF1842
CEFFBDBDBDFFFFE7C6FFF7D6C6FFF7DEBDFFF7D6C6FFF7C6ADFFE7B58CFF4A42
31FF0000000000000000000000000000000000000000C6B59CFFFFFFFFFFFFFF
FFFFBDCED6FF1842CEFF1842CEFF1842CEFF428CD6FF1842CEFF1842CEFF428C
D6FFFFDECEFFF7DECEFFF7DEBDFFFFD6C6FFF7D6B5FFEFC6ADFFF7B58CFF4A39
31FF0000000000000000000000000000000000000000CEAD9CFFFFFFFFFFFFFF
FFFFF7EFEFFFBDD6DEFF1842CEFF2142CEFF1842CEFF1842CEFF1842CEFFDED6
CEFFF7DEC6FFFFDEBDFFF7D6C6FFF7D6B5FFF7CEB5FFEFC6A5FFF7A573FF4A39
31FF0000000000000000000000000000000000000000C6AD9CFFFFFFFFFFF7F7
EFFFEFEFEFFFF7EFEFFFB5CED6FF1842CEFF1842CEFF2142CEFFD6C6ADFFF7D6
BDFFF7D6BDFFF7CEADFFEFC6ADFFF7C6ADFFF7BD9CFFE7BD94FFF7A57BFF4A42
31FF0000000000000000000000000000000000000000CEAD9CFFEFF7EFFFFFD6
C6FFF7D6BDFFEFC6A5FFF7CEADFF8C9CA5FF1842CEFFAD9C8CFFE7B594FFE7AD
8CFFE7AD8CFFE7AD8CFFF7B58CFFF7B58CFFEFA573FFF7A57BFFEF9463FF4A42
31FF0000000000000000000000000000000000000000CEAD8CFF9C736BFF6B5A
52FF6B6352FF735A52FF6B5A52FF6B6352FFA57B6BFF6B5A52FF736352FF6B5A
52FF4A4231FF4A4231FF4A3931FF4A4231FF4A3931FF4A4231FF4A4231FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000008CC6D6FF8CBD
D6FF8CC6D6FF8CC6CEFF8CBDD6FF8CC6CEFF8CC6D6FF8CBDD6FF8CC6CEFF94BD
D6FF7BADC6FF84ADC6FF7BADC6FF84ADC6FF7BADBDFF84ADC6FF7BADC6FF84AD
BDFF7BADC6FF00000000000000000000000000000000000000008CC6CEFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFF395A7BFF000000000000000000000000000000000000000094BDD6FFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFF39637BFF00000000000000000000000000000000000000008CC6D6FFFFFF
FFFFCEF7FFFFC6EFFFFFC6F7FFFFCEF7FFFFC6EFFFFFC6F7FFFFC6F7FFFFC6F7
FFFFC6F7FFFFC6F7FFFFC6F7FFFFC6F7FFFFC6F7FFFFC6F7FFFFC6F7FFFFC6F7
FFFF395A7BFF00000000000000000000000000000000000000008CC6CEFFC6EF
FFFFA5F7FFFFA5F7FFFFADEFFFFFA5F7FFFFA5F7FFFFADF7FFFFA5EFFFFFADF7
FFFFA5EFFFFFADF7FFFFA5EFFFFFADF7FFFFA5EFFFFFADF7FFFFA5EFFFFFADF7
FFFF396373FF00000000000000000000000000000000000000008CC6D6FFC6F7
FFFFADF7FFFFA5F7F7FFADF7FFFFA5F7F7FFADEFFFFFA5F7F7FFADF7FFFFA5F7
F7FFADF7FFFFA5F7F7FFADF7FFFFA5F7F7FFADF7FFFFA5F7FFFFADF7FFFFA5F7
FFFF315A73FF00000000000000000000000000000000000000008CC6CEFFC6EF
FFFFA5EFFFFFADF7FFFFA5EFFFFFADF7FFFFA5F7FFFFA5F7FFFFADF7FFFFA5EF
FFFFA5F7FFFFADF7FFFFA5EFFFFFA5F7FFFFADF7FFFFA5EFFFFFA5F7F7FFADF7
FFFF39637BFF00000000000000000000000000000000000000007BADBDFF94E7
FFFF8CE7F7FFA5F7FFFFADF7F7FFA5F7FFFFADEFF7FFA5F7FFFFADF7F7FFA5F7
FFFFADF7F7FFA5EFFFFFADF7F7FFA5F7FFFFADF7F7FFA5F7FFFFADF7FFFFA5F7
FFFF395A73FF000000000000000000000000000000000000000084ADBDFF8CE7
FFFF94E7F7FFA5F7FFFFADEFFFFFA5F7FFFFA5F7FFFFADF7FFFFA5F7FFFFA5EF
FFFFADF7FFFFA5F7FFFFA5F7FFFFADF7FFFFA5EFFFFFADF7F7FFA5EFFFFFADF7
FFFF31637BFF00000000000000000000000000000000000000007BADC6FF84D6
F7FF8CE7FFFF8CE7F7FF8CE7F7FF94E7F7FF8CDEFFFF8CE7F7FF94E7F7FF8CE7
F7FF8CE7FFFF94DEF7FF8CE7F7FF8CE7FFFF8CE7F7FF8CE7FFFF94E7F7FF8CE7
FFFF395A73FF000000000000000000000000000000000000000084ADBDFF63C6
F7FF94E7F7FF8CE7FFFF94E7FFFF8CE7F7FF8CE7FFFF94E7F7FF8CDEFFFF94E7
FFFF8CE7F7FF94E7FFFF8CE7F7FF94DEFFFF8CE7F7FF94E7FFFF8CE7F7FF94E7
FFFF31637BFF00000000000000000000000000000000000000007BADC6FF52BD
F7FF7BD6F7FF94E7F7FF8CDEFFFF94E7F7FF8CE7FFFF8CE7F7FF94E7FFFF8CE7
F7FF8CE7FFFF8CE7F7FF94E7FFFF8CE7F7FF94E7FFFF8CDEF7FF8CE7FFFF94E7
F7FF395A73FF000000000000000000000000000000000000000084ADBDFF319C
CEFF39B5E7FF4ABDEFFF4AB5F7FF39B5DEFF39B5E7FF84D6F7FF8CE7F7FF8CDE
FFFF94E7F7FF8CE7FFFF94DEF7FF8CE7FFFF8CE7F7FF94E7FFFF8CE7F7FF94E7
FFFF31637BFF000000000000000000000000000000000000000084ADC6FF39B5
E7FF39B5DEFF39B5E7FF39B5E7FF39B5DEFF00A5DEFF6BCEF7FF7BD6F7FF84D6
F7FF7BD6F7FF84D6F7FF7BD6F7FF7BD6F7FF84D6F7FF7BD6F7FF7BD6F7FF84D6
F7FF315A7BFF000000000000000000000000000000000000000084ADBDFF6BCE
F7FF00A5DEFF39B5E7FF39B5DEFF39B5E7FF00A5DEFF39B5E7FF84D6F7FF7BD6
FFFF84DEF7FF7BD6F7FF84DEF7FF7BD6FFFF84DEF7FF7BD6F7FF84D6FFFF7BDE
F7FF39637BFF00000000000000000000000000000000000000007BADC6FF6BCE
F7FF39B5DEFF1884BDFF39B5E7FF39B5DEFF39ADEFFF00A5DEFF6BCEF7FF7BD6
F7FF7BD6F7FF84D6F7FF7BD6F7FF84D6F7FF7BD6F7FF84DEF7FF7BD6F7FF84D6
F7FF31637BFF000000000000000000000000000000000000000084ADBDFF63C6
F7FF6BCEF7FF52BDF7FF00A5DEFF1884BDFF08A5DEFF00A5DEFF219CEFFF6BCE
F7FF63C6F7FF84DEF7FF7BD6FFFF7BDEF7FF84D6F7FF7BD6FFFF7BD6F7FF84D6
F7FF39637BFF00000000000000000000000000000000000000007BADC6FF6BCE
F7FF63C6F7FF6BCEF7FF6BCEF7FF4ABDF7FF299CEFFF319CCEFF08A5DEFF319C
CEFF39ADEFFF39B5E7FF4AB5EFFF52BDF7FF63C6F7FF6BCEF7FF6BCEF7FF63CE
F7FF395A73FF000000000000000000000000000000000000000084ADC6FF3963
73FF395A7BFF396373FF395A7BFF395A73FF39637BFF396373FF39637BFF3963
73FF39637BFF39637BFF395A73FF39637BFF396373FF395A7BFF396373FF395A
7BFF39637BFF0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000008494A5FF849C
A5FF849CA5FF8C9CA5FF849CADFF849CA5FF8C9CA5FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000008C9CA5FFB5CEDEFFCEF7
FFFFC6F7FFFFC6EFFFFFADF7FFFFADE7F7FFB5CED6FF849CA5FF000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000008494A5FF84ADC6FFB5CED6FFB5CE
D6FFB5CEDEFFB5CED6FF8CBDCEFF8CC6D6FF8CBDCEFF84ADC6FF849CA5FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000008C9CA5FF849CA5FF8C9CADFF849C
A5FF8C9CA5FF849CA5FF8C9CA5FF8C9CA5FF6B848CFF6B7B8CFF6B848CFF6B7B
8CFF6B848CFF6B7B8CFF6B7B8CFF6B7B8CFF6B7B8CFF6B7B8CFF6B7B8CFF6B7B
8CFF6B7B8CFF000000000000000000000000849CADFFCEF7FFFFC6EFFFFFC6F7
FFFFC6EFFFFFC6F7FFFFC6F7FFFFADE7F7FFADE7F7FFADE7F7FFADE7F7FF7BD6
F7FF84DEF7FF7BD6F7FF84DEF7FF7BDEF7FF6BCEF7FF6BCEF7FF63CEF7FF6BCE
F7FF84ADC6FF6B7B8CFF0000000000000000849CA5FFC6EFFFFFC6F7FFFFC6EF
FFFFADE7F7FFADE7F7FFADDEF7FFADE7F7FF8CE7F7FF7BD6F7FF7BDEF7FF6BC6
F7FF63CEF7FF6BC6F7FF63CEF7FF52B5F7FF4AB5F7FF4AB5F7FF39B5DEFF39B5
E7FF319CCEFF39637BFF0000000000000000849CA5FFC6F7FFFFC6EFFFFFADF7
FFFFA5E7EFFFADE7F7FFA5E7EFFF8CE7F7FF84D6F7FF7BD6F7FF6BC6F7FF6BCE
F7FF6BC6F7FF6BCEF7FF4AB5EFFF52BDF7FF4ABDEFFF39B5DEFF39B5E7FF319C
CEFF31A5CEFF735A52FF00000000000000008C9CA5FFC6EFFFFFA5F7FFFFADE7
EFFFADE7F7FFA5E7EFFF94E7FFFF7BD6F7FF84D6FFFF7BD6F7FF6BCEF7FF63C6
F7FF6BCEF7FF4AB5EFFF52BDF7FF4AB5EFFF39B5E7FF39B5E7FF39B5E7FF399C
CEFF319CCEFF39637BFF0000000000000000849CA5FFC6F7FFFFADE7F7FFADDE
F7FFA5E7EFFFADE7F7FF8CE7F7FF84D6F7FF7BDEF7FF6BC6F7FF6BCEF7FF63CE
F7FF6BC6F7FF4ABDF7FF52B5EFFF4ABDF7FF39B5DEFF39B5E7FF39ADEFFF319C
CEFF188CC6FF523931FF00000000000000008C9CA5FFC6EFFFFFADE7EFFFA5E7
F7FFADE7EFFF94E7FFFF7BD6F7FF84D6F7FF63C6F7FF6BCEF7FF63C6F7FF6BCE
F7FF4AB5EFFF52BDF7FF4AB5EFFF39B5E7FF39B5DEFF39B5E7FF31ADEFFF399C
CEFF188CC6FF4A4231FF0000000000000000849CA5FFC6F7FFFFADE7F7FFADDE
EFFF8CE7FFFF7BD6F7FF7BD6F7FF84DEF7FF63C6F7FF6BCEF7FF6BC6F7FF4ABD
EFFF52B5F7FF4ABDEFFF39B5E7FF39B5E7FF39B5DEFF39A5F7FF39ADEFFF319C
CEFF1884BDFF524231FF00000000000000008C9CA5FFC6EFFFFFADE7F7FFA5E7
EFFF94E7FFFF7BD6F7FF84D6F7FF63C6F7FF6BCEF7FF6BCEF7FF4AB5EFFF52BD
F7FF4AB5F7FF39B5DEFF39B5E7FF39B5DEFF31ADF7FF39ADEFFF319CCEFF399C
CEFF188CC6FF4A4231FF0000000000000000849CA5FFADE7F7FFA5E7EFFF94E7
FFFF7BD6F7FF84D6F7FF63CEF7FF6BCEF7FF6BC6F7FF63CEF7FF52B5F7FF4ABD
EFFF39B5E7FF39B5DEFF39B5E7FF39A5EFFF39ADEFFF319CCEFF39A5CEFF1884
C6FF188CBDFF4A3931FF00000000000000008494A5FFADE7F7FF8CE7FFFF7BD6
F7FF84D6F7FF63CEF7FF6BC6F7FF6BCEF7FF63C6F7FF52BDF7FF4AB5EFFF39B5
E7FF39B5DEFF39B5E7FF31ADEFFF39ADF7FF319CCEFF399CD6FF319CCEFF188C
BDFF1884C6FF4A4231FF0000000000000000849CA5FFADE7F7FF7BD6F7FF84D6
F7FF7BDEF7FF6BC6F7FF63CEF7FF6BC6F7FF4ABDEFFF52B5EFFF4ABDF7FF39B5
DEFF39B5E7FF39A5EFFF39ADEFFF319CCEFF39A5CEFF319CCEFF39A5CEFF1884
C6FF188CBDFF000000FF0000000000000000849CA5FFADE7F7FF84D6F7FF7BDE
F7FF6BC6F7FF6BCEF7FF63C6F7FF6BCEF7FF52BDF7FF4AB5F7FF39B5DEFF39B5
E7FF39B5E7FF39ADEFFF31ADF7FF399CCEFF319CCEFF399CCEFF31A5CEFF1884
BDFF188CC6FF000000FF0000000000000000849CADFFADE7EFFF7BD6F7FF6BC6
F7FF4ABDF7FF4AB5EFFF52BDEFFF4AB5F7FF39B5DEFF39ADEFFF319CCEFF399C
CEFF319CCEFF319CCEFF399CCEFF31A5CEFF1884C6FF188CC6FF1884BDFF188C
C6FF1884BDFF000000FF00000000000000008C9CA5FFADE7F7FF4AB5F7FF4ABD
F7FF84ADBDFF39B5E7FF319CCEFF399CCEFF319CCEFF319CCEFF1884BDFF188C
C6FF1884BDFF188CC6FF188CBDFF1884C6FF188CBDFF1884BDFF188CC6FF1884
BDFF188CC6FF000000FF00000000000000006B7B8CFF396373FF39637BFF5239
29FF4A4231FF524231FF4A4231FF524231FF4A4231FF524231FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF00000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000
}
end
object SmallImages: TImageList
left = 40
top = 16
Bitmap = {
4C69060000001000000010000000000000000000000000000000000000000000
000000000000CEBDADFFC6ADA5FFC6AD9CFFC6ADA5FF00000000000000000000
0000000000000000000000000000000000000000000000000000000000008CBD
CEFFC6ADA5FFEFE7DEFFC6F7FFFFC6F7FFFFBDC6CEFFCEBDADFF000000000000
0000000000000000000000000000000000000000000000000000CEBDB5FFCEBD
ADFFC6EFFFFFC6F7FFFFC6EFFFFFADE7EFFF8CE7FFFF63CEF7FFC6AD9CFF8C9C
A5FF0000000000000000000000000000000000000000CEBDADFFC6D6DEFFC6F7
FFFFC6F7FFFFC6EFFFFFADEFFFFFA5E7EFFF7BD6F7FF6BC6F7FF63CEF7FF8CBD
D6FFC6AD9CFF84ADC6FF00000000C6AD9CFFCEB5ADFFC6F7FFFFC6EFFFFFC6EF
FFFFC6F7FFFFA5EFFFFFADE7EFFF7BD6F7FF63C6F7FF6BCEF7FF6BC6EFFF6BCE
F7FF4AB5EFFF8CADC6FF8C9CA5FFC6AD9CFFADF7FFFFA5E7F7FFADE7EFFFADE7
EFFF7BD6F7FF6BC6F7FF63CEF7FF6BCEF7FF6BCEEFFF4AADEFFF42B5EFFF4AAD
E7FF42B5EFFF29BDEFFFBD9C8CFFC6ADA5FFADE7EFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7EFE7FFFFF7EFFFFFEFE7FFFFF7
EFFFEFDEDEFF42B5EFFF94847BFFC6AD9CFFCEBDB5FFF7EFEFFFFFEFE7FFE7E7
DEFFFFEFEFFFFFEFE7FFF7F7EFFFFFEFE7FFF7EFEFFFFFEFE7FFF7DECEFFF7F7
E7FFFFD6C6FF94847BFF94847BFFC6ADA5FFF7CEB5FFDEC6ADFFF7EFEFFFFFEF
EFFFE7BD94FFE7B594FFC6ADA5FFC6AD9CFFC6ADA5FFC6AD9CFFE7E7DEFFFFDE
C6FFB59C8CFFE7AD84FF94847BFFC6A58CFFFFFFFFFFFFDEC6FFDEC6ADFFDEC6
ADFFDEBDADFFDECEC6FFDEC6ADFFDEC6B5FFDEC6ADFFC6ADA5FFC6AD9CFFB59C
8CFFE7AD8CFFFFD69CFF8C8484FFBDA594FFFFFFFFFFFFFFFFFFBDA58CFFDECE
C6FFFFF7EFFFF7EFEFFFFFF7EFFFF7EFEFFFFFDECEFFFFDEC6FFDEA57BFFB58C
73FFFFD69CFFFFCE94FF94847BFFC6A58CFFFFFFFFFFC6ADA5FFDECEC6FFF7EF
EFFFF7EFE7FFFFEFEFFFF7EFE7FFFFF7E7FFF7DEC6FFF7DEC6FFFFD6ADFFE7AD
84FFB58473FFFFB57BFFCE734AFFB59C8CFFC6ADA5FFDECEC6FFFFFFFFFFF7F7
E7FFFFDECEFFF7E7C6FFFFDECEFFF7DEC6FFFFD6ADFFFFDEB5FFFFD69CFFFFCE
94FFE79463FFC67B4AFFCE7342FFBD9C84FFF7D6BDFFFFFFFFFFFFDECEFFFFDE
ADFFFFD69CFFFFC68CFFFFC68CFFFFC694FFFFB57BFFFFB57BFFF7A57BFFEFA5
7BFFE79463FFD6845AFFB56331FFB59C8CFFB59C8CFFB58C73FFB58473FFB58C
73FF8C8484FFCE734AFFC6734AFFC67B42FFC6734AFFC6734AFFC6734AFFB563
31FFBD6331FFB56331FFBD6331FF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF4A3931FFFF00FFFF4A4231FFFF00
FFFF4A4231FFFF00FFFF4A4231FFFF00FFFF523931FFFF00FFFF4A4231FFFF00
FFFF524231FFFF00FFFF524231FFB59C8CFFFFFFFFFF94847BFFFFFFFFFF9484
84FFFFFFFFFF94847BFFFFFFFFFF948484FFFFFFFFFF52636BFFFFFFFFFF525A
6BFFFFFFFFFF52636BFFFF00FFFFF7A58CFFF7AD94FFF7A57BFFDEA57BFFDEA5
7BFFE7946BFFE79463FFE7946BFFD68452FFDE7B4AFFD68452FFCE7B4AFFCE73
4AFFC67B42FFCE734AFF524231FFEFAD94FFF7EFEFFFFFF7EFFFF7EFEFFFFFF7
EFFFF7F7EFFFF7EFEFFFF7AD8CFFF7A57BFFF7A57BFFF7A57BFFEFA57BFFF7A5
7BFFF7A57BFFF7A57BFF524231FFF7AD8CFFF7A58CFFEFA573FFF7A57BFFEFA5
73FFF7A57BFFE79463FFE79463FFDE946BFFD68452FFDE7B4AFFDE7B4AFFDE7B
4AFFDE7B4AFFDE7B4AFF524231FFBDADA5FFFFFFFFFFFFFFFFFFDEA57BFFFFFF
FFFFFFFFFFFFDEA57BFFFFFFFFFFFFFFFFFFDEA57BFFFFFFFFFFFFFFFFFFDEA5
7BFFFFF7EFFFF7EFEFFF4A4231FFC6ADA5FFFFFFFFFFFFFFFFFFB59C8CFFFFFF
FFFFFFFFFFFFB59C8CFFFFFFFFFFFFFFFFFFB59C8CFFFFFFFFFFFFF7EFFFB594
8CFFFFF7EFFFDECEC6FF4A4239FFC6AD9CFFD6AD94FFB59C8CFFBD8473FFDEA5
7BFFB59C8CFFB58C73FFDEA57BFFB59C8CFF42B5EFFF2994DEFF1842CEFF184A
CEFFDEA57BFF00000000524239FFC6ADA5FFFFFFFFFFFFFFFFFFDEA57BFFFFFF
FFFFFFFFFFFFDEA57BFFFFFFFFFFFFFFFFFF299CDEFFFFFFFFFFFFF7EFFF1842
C6FFFFF7EFFFDECECEFF4A4231FFC6AD9CFFFFFFFFFFFFFFFFFFB59C8CFFFFFF
FFFFFFFFFFFFB59C8CFFFFFFFFFFFFEFEFFF1842CEFFFFF7EFFFFFEFE7FF1842
CEFFFFF7EFFFCEBDADFF4A4231FFC6ADA5FFD6AD94FF00000000BD8C73FFDEA5
7BFFB59C8CFFBD8473FFDEA57BFF00000000214AC6FF1842CEFF184ACEFF1842
CEFFDEA57BFFBD9C8CFF4A4231FFC6B5A5FFFFFFFFFFFFFFFFFFCEAD94FFFFFF
FFFFFFFFFFFFDEA57BFFFFF7EFFFFFEFEFFFDEA57BFFFFF7EFFFFFEFE7FFDEA5
7BFFFFE7CEFFC6B5ADFF524239FFC6AD9CFFFFFFFFFFFFFFFFFFB59484FFFFFF
FFFFFFF7EFFF00000000F7EFEFFFF7EFEFFF00000000F7EFEFFFF7F7EFFF0000
0000FFDECEFFCEBDB5FF4A4231FFC6ADA5FFC6ADA5FF00000000BD8C73FFE7B5
94FFD6AD94FFB58473FFEFBD94FF00000000BD8473FFC6AD9CFFB59C8CFFBD84
73FFCEAD8CFFB59C8CFF524231FF000000004A4239FF524231FF4A4239FF5242
39FF4A4231FF524239FF4A4231FF4A4239FF524231FF4A4239FF524231FF4A42
39FF524231FF524239FF4A4231FF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000CEBDADFFCEBDB5FFCEBDADFFCEBDB5FFCEBD
ADFFCEBDB5FFC6ADA5FFC6AD9CFFC6ADA5FFC6AD9CFFC6ADA5FFC6A58CFFB59C
8CFFB59C84FFB5948CFFB59C8CFFCEBDB5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF526363FFC6BDADFFFFFFFFFFEFDEDEFF5A7B8CFF9484
7BFF5A7B8CFFBDC6CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
EFFFFFEFEFFFDED6CEFF4A3931FFCEBDB5FFFFFFFFFF4A6363FF637B8CFF8C9C
ADFF849CA5FF94847BFFEFE7DEFFFFFFFFFFF7F7EFFFFFFFFFFFF7EFEFFFF7EF
E7FFFFEFE7FFDECEC6FF4A4231FFCEBDADFFFFFFFFFF524239FF4A3931FFEFE7
DEFFBDC6CEFF94847BFFE7DEDEFFF7F7EFFFF7BDA5FFF7BD9CFFFFB57BFFF7A5
7BFFF7A57BFFCEBDB5FF4A4231FFC6ADA5FFFFFFFFFF52636BFF524239FFCEBD
B5FF94847BFF52636BFFFFFFFFFFFFEFEFFFF7F7E7FFF7EFEFFFFFF7EFFFF7EF
EFFFF7E7C6FFCEBDB5FF524231FFC6ADA5FFFFFFFFFFEFE7DEFF52636BFFB59C
84FF8C9CADFF525A63FFC6D6DEFFF7F7E7FFF7CEBDFFC6A58CFFB59C84FFB59C
84FFB58473FFCEBDB5FF4A4231FFBDAD9CFFFFF7EFFF107BBDFF8CADC6FF1842
CEFF1884BDFF184ACEFF1842CEFFFFF7EFFFFFDEC6FFF7DECEFFFFDECEFFF7D6
BDFFFFD6BDFFE7BD94FF4A3939FFC6AD9CFFEFE7DEFF1842C6FF4AB5EFFF299C
DEFF214ACEFF1884BDFF1842C6FFFFEFEFFFDEC6ADFFC6A594FFB59C84FFB59C
8CFFB58473FFEFBD9CFF4A4231FFC6A594FFF7F7EFFFBDC6CEFF1842CEFF214A
C6FF1842CEFF214ACEFFC6A58CFFFFE7CEFFF7DEC6FFF7D6BDFFF7D6C6FFFFDE
BDFFF7D6BDFFE7B58CFF4A4239FFB59C8CFFFFDEC6FFFFDEC6FFDECEC6FFE7C6
ADFFDEC6ADFFE7C6B5FFDEC6ADFFEFC6A5FFE7B59CFFE7BD94FFE7B594FFE7AD
8CFFE7B58CFFE7AD8CFF524231FFB59C84FF52636BFF4A4231FF4A4231FF5242
39FF4A4231FF4A4231FF524239FF4A4231FF524231FF4A4239FF524239FF4A42
31FF4A4239FF524239FF4A4239FF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000084ADC6FF8C9CA5FF849CADFF0000000000000000000000000000
000000000000000000000000000000000000DEC6ADFFCEBDB5FFCEBDADFFCEBD
B5FF8C9CA5FFADE7EFFFADE7F7FF8CC6D6FF526363FFC6ADA5FFC6AD9CFFC6A5
94FF00000000000000000000000000000000CEBDADFFFFFFFFFFFFFFFFFFFFFF
FFFF849CA5FF849CADFF94847BFF8CBDD6FF637B8CFFFFF7EFFFE7DEDEFFEFE7
DEFF525A63FF000000000000000000000000CEBDB5FFFFFFFFFFFFFFFFFF8C9C
ADFF7BD6F7FF8CE7FFFF7BD6F7FF63CEF7FF8C9CA5FF5A738CFFE7E7DEFFDECE
C6FFB59C84FF000000000000000000000000CEBDB5FFFFFFFFFFFFFFFFFF849C
A5FF637B8CFF637B8CFF637B8CFF637B8CFF5A7B8CFF8C9CADFF84ADBDFF1842
CEFFB59C8CFF000000000000000000000000CEBDADFFFFFFFFFFFFFFFFFFFFFF
FFFFF7EFEFFFFFEFEFFFF7F7EFFFEFDEDEFFEFE7DEFF8CADC6FF1842CEFF8C9C
A5FF948484FF000000000000000000000000C6AD9CFFFFFFFFFFFFFFFFFFFFEF
EFFFF7F7E7FFFFEFEFFFF7EFE7FFE7E7DEFF2994DEFF184ACEFF8C9CA5FFDED6
C6FF525A6BFF000000000000000000000000C6ADA5FFFFFFFFFFC6F7FFFFC6D6
D6FFFFEFE7FFF7EFEFFFEFE7DEFF8CADBDFF1842CEFF5A7B8CFFFFDECEFFE7C6
B5FF4A4231FF000000000000000000000000C6AD9CFFF7EFEFFF42ADEFFF4AB5
EFFF84ADC6FFC6D6D6FF84ADC6FF1842CEFF214ACEFFFFDEC6FFF7DEBDFFC6AD
A5FF4A4231FF000000000000000000000000C6AD9CFFFFF7EFFF2142C6FF1842
CEFF299CDEFF2994DEFF184AC6FF1842CEFFCEBDADFFFFDEC6FFDECEC6FFC6AD
A5FF4A4239FF000000000000000000000000C6ADA5FFF7F7EFFFC6D6D6FF1842
CEFF214ACEFF2142CEFF184ACEFF8C9CA5FFF7D6B5FFF7CEBDFFDEC6ADFFD6AD
8CFF524231FF000000000000000000000000C6AD9CFFFFEFE7FFFFF7EFFFEFE7
DEFF2142CEFF184ACEFF637B8CFFDECEC6FFF7CEB5FFDECEC6FFDEC6B5FFD6AD
94FF4A4239FF000000000000000000000000C6ADA5FFF7F7EFFFDECEC6FFDECE
C6FFDECEC6FF8C9CA5FFCEBDB5FFE7BD94FFC6ADA5FFC6AD9CFFD6AD8CFFBDA5
94FF524231FF000000000000000000000000D6AD94FF523931FF4A4231FF4A42
31FF4A4231FF52636BFF524231FF4A4239FF524231FF4A4239FF524231FF4A42
39FF000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000008CBDD6FF8CC6CEFF94C6D6FF8CBD
D6FF8CC6D6FF94C6D6FF8CBDD6FF8CC6CEFF94BDD6FF8CC6D6FF84ADBDFF84AD
C6FF84ADC6FF84ADC6FF000000000000000094BDCEFFC6F7FFFFC6EFFFFFC6F7
FFFFC6F7FFFFC6EFFFFFC6F7FFFFC6F7FFFFC6F7FFFFC6F7FFFFCEEFFFFFC6F7
FFFFCEF7FFFF5A7B8CFF00000000000000008CC6D6FFC6F7FFFFADEFFFFFADEF
F7FFADEFFFFFADEFF7FFADEFFFFFADEFFFFFADEFFFFFA5EFFFFFADEFFFFFA5EF
F7FFADEFFFFF5A7B8CFF000000000000000084ADBDFFADEFFFFFADEFFFFFA5EF
FFFFADEFFFFFA5EFFFFFADEFFFFFA5EFF7FFADEFFFFFA5EFF7FFADEFFFFFADEF
FFFFADF7FFFF525A6BFF000000000000000084ADC6FFADE7EFFFA5EFFFFFADF7
F7FFADEFFFFFADF7FFFFA5EFFFFFADEFFFFFADF7FFFFADEFFFFFA5EFF7FFADEF
FFFFA5EFFFFF526363FF000000000000000084ADC6FF8CE7F7FF8CE7FFFF8CE7
FFFF8CE7F7FF8CE7FFFF8CE7F7FF8CE7F7FF8CE7FFFF8CE7F7FF8CE7FFFF8CE7
FFFF8CE7FFFF526363FF000000000000000084ADC6FF6BC6F7FF8CE7F7FF8CE7
FFFF8CDEFFFF8CE7F7FF8CE7FFFF8CE7FFFF8CDEF7FF8CE7FFFF8CE7F7FF8CE7
FFFF8CE7F7FF525A6BFF00000000000000008CADBDFF42B5EFFF7BD6F7FF8CE7
FFFF8CE7F7FF8CE7FFFF8CDEFFFF8CE7F7FF8CE7FFFF8CE7FFFF8CE7FFFF8CE7
FFFF8CE7FFFF526363FF000000000000000084ADC6FF4AADEFFF29BDEFFF4AB5
EFFF42ADEFFF299CDEFF6BCEEFFF8CE7FFFF8CE7F7FF8CDEFFFF8CE7F7FF8CE7
FFFF8CE7FFFF525A63FF000000000000000084ADBDFF6BCEF7FF299CDEFF29BD
EFFF29BDEFFF299CDEFF29BDEFFF8CDEFFFF8CE7FFFF8CE7F7FF8CE7FFFF8CE7
F7FF8CE7FFFF52636BFF000000000000000084ADC6FF6BCEF7FF4AADEFFF299C
DEFF31BDF7FF29BDEFFF299CDEFF7BD6F7FF7BD6F7FF7BD6FFFF7BD6F7FF7BD6
F7FF7BD6F7FF526363FF00000000000000008CADC6FF7BD6F7FF6BCEEFFF4AB5
EFFF299CDEFF319CE7FF299CDEFF4AB5EFFF7BD6F7FF6BCEF7FF7BD6F7FF7BD6
F7FF7BDEFFFF52636BFF000000000000000084ADBDFF6BCEF7FF7BD6F7FF6BC6
F7FF4AB5E7FF2994DEFF299CDEFF1884BDFF299CDEFF4AADEFFF4AB5EFFF4AB5
EFFF4AADEFFF526363FF00000000000000008CADC6FF5A738CFF637B8CFF5A7B
8CFF637B8CFF637B8CFF5A636BFF525A63FF5A636BFF526363FF525A6BFF5263
63FF526363FF52636BFF00000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000008C9CA5FF849CA5FF8C9CADFF849C
A5FF8C9CA5FF0000000000000000000000000000000000000000000000000000
0000000000000000000000000000849CADFFADE7F7FFADEFFFFFADEFFFFFADF7
FFFF8CE7FFFF849CADFF00000000000000000000000000000000000000000000
00000000000000000000000000008C9CA5FF849CA5FF8C9CA5FF849CA5FF849C
A5FF8C9CA5FF8C9CA5FF849CA5FF8C9CA5FF849CADFF849CA5FF8C9CADFF849C
A5FF849CA5FF0000000000000000849CADFFCEF7FFFFC6F7FFFFC6EFFFFFC6F7
FFFFADEFFFFFADEFFFFFADEFFFFF8CE7FFFF8CE7FFFF7BD6F7FF6BCEF7FF63C6
F7FF6BCEF7FF5A738CFF00000000849CA5FFC6EFFFFFADEFFFFFADEFFFFFADEF
FFFFA5EFFFFF8CE7FFFF8CE7FFFF8CE7FFFF63C6EFFF6BCEF7FF4AADEFFF4AB5
EFFF299CDEFF5A7B8CFF00000000849CADFFC6F7FFFFADEFFFFFA5EFFFFFADEF
FFFF8CE7F7FF8CE7FFFF8CE7F7FF7BD6F7FF6BCEF7FF63C6F7FF4AB5E7FF2994
DEFF1884BDFF5A636BFF000000008C9CA5FFC6F7FFFFA5EFF7FFADF7FFFFADEF
F7FF8CE7FFFF8CE7FFFF7BD6F7FF63CEF7FF6BC6EFFF4AB5EFFF4AB5EFFF319C
DEFF1884BDFF526363FF00000000849CA5FFADEFFFFFADEFFFFFA5EFFFFF8CE7
FFFF8CE7F7FF7BD6F7FF6BC6F7FF6BCEF7FF4AADEFFF4AB5E7FF4AADEFFF299C
DEFF1884BDFF524231FF000000008C9CADFFA5E7EFFFADEFFFFF8CE7F7FF8CE7
FFFF7BD6F7FF63CEF7FF6BCEF7FF42ADE7FF4AB5EFFF4AB5EFFF2994DEFF299C
DEFF1884BDFF4A4239FF0000000094847BFFADE7F7FF8CE7FFFF8CE7FFFF7BD6
F7FF6BC6F7FF6BCEEFFF4AADEFFF4AB5EFFF4AB5E7FF2994DEFF299CE7FF2184
BDFF1884BDFF524231FF000000005A7B8CFFADE7EFFF63CEF7FF4AADE7FF4AB5
EFFF299CDEFF2994E7FF1884B5FF1884BDFF1884BDFF1884BDFF1884B5FF1884
BDFF1884BDFF000000FF000000005A7B8CFF63738CFF526363FF52636BFF5242
31FF524231FF524231FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF00000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000
}
end
object ToolImages: TImageList
Height = 12
Width = 12
left = 144
top = 16
Bitmap = {
4C69060000000C0000000C000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000008484
84FF848484FF848484FF848484FF848484FF848484FF848484FF848484FF8484
84FF848484FF848484FF000000FF848484FF000000FF00FFFFFFFFFFFFFF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF000000FF000000FF8484
84FFC6C6C6FF000000FF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF000000FF008484FF000000FF848484FF00FFFFFFC6C6C6FF000000FF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF000000FF008484FFC6C6C6FF000000FF8484
84FFFFFFFFFFFFFFFFFF008484FF000000FF00FFFFFFFFFFFFFF000000FF0084
84FFC6C6C6FFC6C6C6FF000000FF848484FF00FFFFFF008484FFC6C6C6FF0084
84FF000000FF000000FF008484FFC6C6C6FF008484FFC6C6C6FF000000FF8484
84FF008484FFC6C6C6FFC6C6C6FFC6C6C6FF008484FF008484FFC6C6C6FFC6C6
C6FFC6C6C6FF008484FF000000FF848484FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6
C6FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6C6FF000000FF8484
84FF848484FF848484FF848484FF848484FF848484FF848484FF848484FF8484
84FF848484FF848484FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000008484
84FF848484FF848484FF848484FF848484FF848484FF848484FF848484FF8484
84FF848484FF848484FF000000FF848484FF000000FF00FFFFFFFFFFFFFF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF000000FF000000FF8484
84FFC6C6C6FF000000FF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFF
FFFF000000FF000084FF000000FF848484FF00FFFFFFC6C6C6FF000000FF00FF
FFFFFFFFFFFF00FFFFFFFFFFFFFF000000FF000084FFC6C6C6FF000000FF8484
84FFFFFFFFFFFFFFFFFF000084FF000000FF0000FFFF0000FFFF000000FF0000
84FFC6C6C6FF0000FFFF0000FFFF848484FF00FFFFFF000084FFC6C6C6FF0000
84FF0000FFFF0000FFFF0000FFFFC6C6C6FF0000FFFF0000FFFF0000FFFF8484
84FF000084FFC6C6C6FFC6C6C6FFC6C6C6FF000084FF0000FFFF0000FFFF0000
FFFF0000FFFF0000FFFF000000FF848484FFC6C6C6FFC6C6C6FFC6C6C6FFC6C6
C6FFC6C6C6FFC6C6C6FF0000FFFF0000FFFF0000FFFFC6C6C6FF000000FF8484
84FF848484FF848484FF848484FF848484FF848484FF0000FFFF0000FFFF0000
FFFF0000FFFF0000FFFF000000FF000000FF000000FF000000FF000000FF0000
00FF0000FFFF0000FFFF0000FFFF000000FF0000FFFF0000FFFF0000FFFF0000
0000000000000000000000000000000000000000FFFF0000FFFF000000000000
0000000000000000FFFF0000FFFF000000000000000000000000000000000000
0000848484FFC6C6C6FF848484FF848484FF848484FF00000000000000000000
0000000000000000000000000000848484FFFFFFFFFF848484FFC6C6C6FFFFFF
FFFFFFFFFFFF848484FF00000000000000000000000000000000848484FFFFFF
FFFFFFFFFFFFFFFFFFFF000000FFC6C6C6FF848484FFFFFFFFFF848484FF0000
00000000000000000000848484FFFFFFFFFFFFFFFFFF848484FF848400FF0000
00FF848400FFC6C6C6FF848484FF000000000000000000000000848484FFFFFF
FFFFFFFFFFFF848484FF000000FFFFFF00FF848484FF848484FF848484FF0000
0000C6C6C6FFC6C6C6FF848484FFFFFFFFFFFFFFFFFF848484FF000000FFFFFF
FFFF848484FFC6C6C6FF848484FFC6C6C6FF000000FF000000FF848484FFFFFF
FFFFFFFFFFFF848484FF848400FF000000FF848400FF848484FF848484FF0000
00FF848484FF0000000000000000000000FFFFFFFFFFFFFFFFFF848484FF8484
84FF848484FF000000FF00000000848484FF0000000000000000000000000000
0000000000FF000000FF000000FF000000FF000000FF00000000000000000000
000000000000000000000000000000000000848484FFC6C6C6FF848484FFC6C6
C6FF000000FF0000000000000000000000000000000000000000000000008484
84FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C6FF848484FF000000000000
00000000000000000000848484FFC6C6C6FF848484FFC6C6C6FF848484FFC6C6
C6FF848484FF848484FF000000FF000000000000000000000000000000000000
0000848484FFC6C6C6FF848484FF848484FF848484FF00000000000000000000
0000000000000000000000000000848484FFFFFFFFFF848484FFC6C6C6FFFFFF
FFFFFFFFFFFF848484FF00000000000000000000000000000000848484FFFFFF
FFFFFFFFFFFFFFFFFFFF000000FFC6C6C6FF848484FFFFFFFFFF848484FF0000
00000000000000000000848484FFFFFFFFFFFFFFFFFF848484FF848400FF0000
00FF848400FFC6C6C6FF848484FF000000000000000000000000848484FFFFFF
FFFFFFFFFFFF848484FF000000FFFFFF00FF848484FF848484FF848484FF0000
0000C6C6C6FFC6C6C6FF848484FFFFFFFFFFFFFFFFFF848484FF0000FFFF0000
FFFF0000FFFF0000FFFF848484FFC6C6C6FF000000FF000000FF848484FFFFFF
FFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFF0000FFFFFFFFFFFF0000FFFF0000
00FF848484FF0000000000000000000000FFFFFFFFFF0000FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF0000FFFF848484FF0000000000000000000000000000
0000000000FF0000FFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF0000FFFF0000
000000000000000000000000000000000000848484FF0000FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF0000FFFF000000000000000000000000000000008484
84FFFFFFFFFF0000FFFFFFFFFFFF0000FFFF0000FFFFFFFFFFFF0000FFFF0000
00000000000000000000848484FFC6C6C6FF848484FFC6C6C6FF0000FFFF0000
FFFF0000FFFF0000FFFF000000FF000000000000000000000000000000000084
84FF848484FF848484FF848484FF000000000000000000000000000000000000
00000000000000000000008484FFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C6FF8484
84FF000000000000000000000000000000000000000000000000000000FF0000
00FF848484FFC6C6C6FF008484FF000000FF0000000000000000000000000000
00000000000000000000848484FFC6C6C6FFFFFFFFFFFFFFFFFF008484FF0000
00FF00000000000000000000000000000000000000FF00000000000000FF0000
00FF848484FFC6C6C6FF000000FF000000FF00000000000000FF00000000C6C6
C6FF000000FF000000FF848484FFC6C6C6FFFFFFFFFFFFFFFFFF848484FF0000
00FF000000FF000000FFC6C6C6FF00000000000000FFFFFFFFFF000000FF0000
00FF848484FFC6C6C6FF000000FF000000FFFFFFFFFF000000FF000000000000
0000000000FFFFFFFFFF848484FFC6C6C6FFC6C6C6FF848484FF848484FF0000
00FFFFFFFFFF000000FF000000000000000000000000000000FFFFFFFFFF0000
00FF000000FF000000FF000000FFFFFFFFFF000000FF00000000000000000000
00000000000000000000848484FF848484FF848484FF848484FF848484FF0000
00FF000000000000000000000000000000000000000000000000000000000000
0000000000FF000000FF00000000000000000000000000000000000000000000
000000000000C6C6C6FF848484FF000000FF000000FF000000FF000000FF0000
00FF848484FF0000000000000000000000000000000000000000000000000084
84FF848484FF848484FF848484FF000000000000000000000000000000000000
00000000000000000000008484FFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C6FF8484
84FF000000000000000000000000000000000000000000000000000000FF0000
00FF848484FFC6C6C6FF008484FF000000FF0000000000000000000000000000
00000000000000000000848484FFC6C6C6FFFFFFFFFFFFFFFFFF008484FF0000
00FF00000000000000000000000000000000000000FF00000000000000FF0000
00FF848484FFC6C6C6FF000000FF000000FF00000000000000FF00000000C6C6
C6FF000000FF000000FF848484FFC6C6C6FFFFFFFFFFFFFFFFFF0000FFFF0000
FFFF0000FFFF0000FFFFC6C6C6FF00000000000000FFFFFFFFFF000000FF0000
00FF848484FF0000FFFFFFFFFFFF0000FFFF0000FFFFFFFFFFFF0000FFFF0000
0000000000FFFFFFFFFF848484FFC6C6C6FFC6C6C6FF0000FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF0000FFFF0000000000000000000000FFFFFFFFFF0000
00FF000000FF0000FFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF0000FFFF0000
00000000000000000000848484FF848484FF848484FF0000FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF0000FFFF000000000000000000000000000000000000
0000000000FF0000FFFFFFFFFFFF0000FFFF0000FFFFFFFFFFFF0000FFFF0000
000000000000C6C6C6FF848484FF000000FF000000FF000000FF0000FFFF0000
FFFF0000FFFF0000FFFF00000000
}
end
object OpenPictureDialog1: TOpenPictureDialog
Title = 'Open existing file'
left = 136
top = 64
end
end

View File

@ -0,0 +1,941 @@
LazarusResources.Add('TJvNavPaneDemoMainFrm','FORMDATA',[
'TPF0'#21'TJvNavPaneDemoMainFrm'#20'JvNavPaneDemoMainFrm'#4'Left'#2'i'#6'Heig'
+'ht'#3#212#1#3'Top'#2'm'#5'Width'#3#6#2#18'HorzScrollBar.Page'#3#5#2#18'Vert'
+'ScrollBar.Page'#3#211#1#7'Caption'#6#21'JvNavigationPane Demo'#8'DockSite'#9
+#11'Font.Height'#2#245#9'Font.Name'#6#6'Tahoma'#8'OnCreate'#7#10'FormCreate'
+#0#10'TPopupMenu'#10'PopupMenu1'#7'OnPopup'#7#15'PopupMenu1Popup'#4'left'#2
+'\'#3'top'#2'@'#0#9'TMenuItem'#8'HideAll1'#7'Caption'#6#8'Hide All'#7'OnClic'
+'k'#7#13'HideAll1Click'#0#0#9'TMenuItem'#8'ShowAll1'#7'Caption'#6#8'Show All'
+#7'OnClick'#7#13'ShowAll1Click'#0#0#9'TMenuItem'#2'N1'#7'Caption'#6#1'-'#0#0
+#9'TMenuItem'#11'ChangeFont1'#7'Caption'#6#7'Font...'#7'OnClick'#7#16'Change'
+'Font1Click'#0#0#9'TMenuItem'#7'Colors1'#7'Caption'#6#6'Colors'#0#9'TMenuIte'
+'m'#9'Standard1'#7'Caption'#6#8'Standard'#7'Checked'#9#10'GroupIndex'#2#1#9
+'RadioItem'#9#7'OnClick'#7#11'SchemaClick'#0#0#9'TMenuItem'#5'Blue1'#3'Tag'#2
+#1#7'Caption'#6#4'Blue'#10'GroupIndex'#2#1#9'RadioItem'#9#7'OnClick'#7#11'Sc'
+'hemaClick'#0#0#9'TMenuItem'#7'Silver1'#3'Tag'#2#2#7'Caption'#6#6'Silver'#10
+'GroupIndex'#2#1#9'RadioItem'#9#7'OnClick'#7#11'SchemaClick'#0#0#9'TMenuItem'
+#6'Olive1'#3'Tag'#2#3#7'Caption'#6#5'Olive'#10'GroupIndex'#2#1#9'RadioItem'#9
+#7'OnClick'#7#11'SchemaClick'#0#0#0#9'TMenuItem'#16'BackgroundImage1'#7'Capt'
+'ion'#6#19'Background Image...'#7'OnClick'#7#21'BackgroundImage1Click'#0#0#9
+'TMenuItem'#2'N2'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#16'Dontallowresize1'#7
+'Caption'#6#18'Don''t allow resize'#7'OnClick'#7#21'Dontallowresize1Click'#0
+#0#9'TMenuItem'#2'N3'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#14'ShowToolPanel1'#7
+'Caption'#6#15'Show Tool Panel'#7'OnClick'#7#19'ShowToolPanel1Click'#0#0#9'T'
+'MenuItem'#16'ShowCloseButton1'#7'Caption'#6#17'Show Close Button'#7'OnClick'
+#7#21'ShowCloseButton1Click'#0#0#0#10'TImageList'#11'LargeImages'#6'Height'#2
+#20#5'Width'#2#24#4'left'#2'\'#3'top'#2#16#6'Bitmap'#10#14'-'#0#0'Li'#6#0#0#0
+#24#0#0#0#20#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#206#181#156#255#198#173#156#255#206#173#156#255#206
+#173#156#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#189#189#189#255#231#198#181#255#198#247#255#255#198#247#255#255#173#231
+#247#255#198#173#156#255#206#173#156#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#206#173#156#255#222#214#206#255#198#239#255#255#198#239#255
+#255#198#247#255#255#173#231#247#255'{'#214#247#255#140#198#214#255#173#148
+#132#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#189#189#189#255#206#189#181#255#198#247
+#255#255#198#239#255#255#198#247#255#255#198#247#255#255#198#239#255#255#140
+#231#255#255'{'#222#247#255'k'#198#247#255'k'#206#247#255#173#148#132#255#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#206#173#156#255#222#214#206#255#198#239#255#255#198#247#255#255#198
+#239#255#255#198#247#255#255#198#239#255#255#173#231#247#255#140#231#247#255
+#132#214#247#255'c'#206#247#255'k'#198#247#255'J'#189#247#255#189#189#189#255
+#132#156#165#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#206#173#156#255#198#247#255#255#198#247#255#255#198#239#255#255#198#247
+#255#255#165#231#247#255#148#231#255#255'{'#214#247#255'{'#214#247#255#132
+#214#247#255'{'#214#247#255'k'#198#247#255'k'#206#247#255'J'#181#239#255'R'
+#181#247#255'J'#189#247#255#173#148#132#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#198#173#156#255#198#247#255#255#173#231#247#255#165#231#247
+#255#148#231#247#255'{'#214#247#255'k'#198#247#255'c'#206#247#255'R'#181#239
+#255'J'#189#247#255'J'#181#247#255'R'#189#247#255'1'#181#222#255'9'#173#247
+#255'1'#165#239#255'!'#165#239#255'9'#165#239#255'9'#173#247#255#165'{k'#255
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#206#173#156#255'c'#198#247#255#247
+#239#239#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#247#247#231#255#247#239#239
+#255#247#247#239#255#247#239#239#255#173#231#247#255#173#231#239#255#148#198
+#214#255'1'#173#239#255#156'{k'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#214#173#132#255'{'#214#247#255#247#247#239#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#247#239#239#255#239#239#239#255#247#239#231#255#239#239#239#255#247
+#247#239#255#247#239#239#255#222#198#173#255'1'#165#247#255#156'{k'#255'JB1'
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#206#173#165#255#198#173#156#255#255#222
+#198#255#255#255#255#255#247#222#206#255#255#222#198#255#247#247#239#255#255
+#222#206#255#255#222#198#255#255#222#206#255#247#222#198#255#247#247#239#255
+#247#239#239#255#239#247#239#255#247#239#239#255#239#239#239#255#214#189#173
,#255#165'{k'#255#156'{k'#255'JB1'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#214#173
+#132#255#255#222#206#255#198#173#156#255#255#255#255#255#247#247#239#255#214
+#206#206#255#222#214#206#255#214#214#206#255#214#214#206#255#222#214#206#255
+#214#214#206#255#222#189#173#255#222#198#173#255#231#198#173#255#214#206#206
+#255#247#247#239#255#156'{k'#255#231#173#140#255#156'{k'#255'JB1'#255#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#214#165#140#255#255#255#255#255#255#231#206#255#198
+#173#156#255#255#255#255#255#255#255#255#255#206#165#132#255#214#165#140#255
+#214#165#132#255#173#148#140#255#173#148#140#255#173#148#140#255#173#148#140
+#255#247#239#239#255#247#247#239#255#156'sk'#255#231#189#148#255#255#206#165
+#255#156'{k'#255'JB1'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#206#156'{'#255#255
+#255#255#255#239#239#239#255#247#247#239#255#198#173#156#255#214#165#140#255
+#255#231#206#255#239#239#239#255#247#247#239#255#247#239#239#255#247#247#239
+#255#239#239#239#255#247#214#181#255#156'{k'#255#173#148#140#255#239#181#148
+#255#247#214#189#255#255#206#156#255#156'{k'#255'JB1'#255#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#173#148#132#255#247#239#239#255#239#247#239#255#247#239#239#255
+#214#165#132#255#239#247#239#255#247#239#239#255#239#239#239#255#247#239#239
+#255#239#239#239#255#239#239#239#255#255#231#198#255#255#222#206#255#255#206
+#165#255#156'{k'#255#255#206#156#255#255#206#156#255#247#198#140#255#156'{k'
+#255'JB1'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#173#148#140#255#247#247#239#255
+#247#239#239#255#206#165#132#255#247#247#239#255#247#239#239#255#239#239#239
+#255#247#247#231#255#239#239#239#255#247#247#239#255#255#222#198#255#247#214
+#198#255#247#222#189#255#247#214#181#255#247#198#140#255#156'{k'#255#247#181
+#140#255#247#165's'#255#156'{k'#255'JB1'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#173#148#132#255#247#239#239#255#198#173#156#255#239#239#239#255#247#239#239
+#255#239#239#239#255#247#247#239#255#247#222#198#255#255#222#206#255#247#222
+#198#255#247#214#198#255#247#214#181#255#247#214#189#255#255#206#156#255#247
+#198#140#255#255#173#140#255#156'{k'#255#231#148'k'#255#156'{k'#255'JB1'#255
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#173#148#132#255#198#181#156#255#247#247#239
+#255#247#239#239#255#239#247#239#255#255#222#198#255#247#214#189#255#247#214
+#189#255#247#214#181#255#247#214#189#255#247#206#173#255#255#206#156#255#255
+#206#165#255#247#189#140#255#231#181#148#255#247#165's'#255#231#148'k'#255
+#156'{k'#255#156'{k'#255'JB1'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#198#156'{'
+#255#255#222#198#255#239#239#239#255#255#222#198#255#247#214#189#255#255#206
+#156#255#247#198#140#255#231#181#148#255#247#173#140#255#247#181#140#255#247
+#165's'#255#239#165'{'#255#247#165's'#255#231#156'c'#255#231#148'c'#255#231
+#156'k'#255#231#148'c'#255#206'{J'#255#156'{k'#255'JB1'#255#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#206#156'{'#255#156'{k'#255#156'{k'#255#156'{k'#255#156'{k'#255
+#156'{k'#255#156'{k'#255#156'{k'#255#156'{k'#255#156'{k'#255#156'{k'#255#156
+'{k'#255#156'{k'#255#156'{k'#255#156'{k'#255#156'{k'#255#156'{k'#255#156'{k'
+#255#156'{k'#255'JB1'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'JB1'#255'J'
+'B1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'
+#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255
+'JB1'#255#0#0#0#0#0#0#0#0#0#0#0#0'J91'#255#0#0#0#0'J9)'#255#0#0#0#0'J91'#255
+#0#0#0#0'J91'#255#0#0#0#0'J91'#255#0#0#0#0'J9)'#255#0#0#0#0'J91'#255#0#0#0#0
+'J91'#255#0#0#0#0'J91'#255#0#0#0#0'J91'#255#0#0#0#0'J91'#255#0#0#0#0#0#0#0#0
+#173#148#140#255#0#0#0#0#173#148#140#255#0#0#0#0#173#148#140#255#0#0#0#0#173
+#148#140#255#0#0#0#0#165'{k'#255#0#0#0#0#156'{k'#255#0#0#0#0#165'{k'#255#0#0
+#0#0#165'{k'#255#0#0#0#0'kcR'#255#0#0#0#0'sZR'#255#0#0#0#0'kZR'#255#0#0#0#0#0
+#0#0#0#0#0#0#0#231#173#140#255#231#181#140#255#231#181#140#255#247#165's'#255
+#222#165'{'#255#222#173#132#255#222#165'{'#255#231#156'c'#255#231#148'k'#255
+#231#148'c'#255#239#156'k'#255#231#148'c'#255#214#132'Z'#255#214#132'R'#255
+#214#132'Z'#255#222'{J'#255#231'{J'#255#222'{J'#255#222'{J'#255#231'{J'#255
+#222'{J'#255'JB1'#255#0#0#0#0#0#0#0#0#231#181#140#255#255#222#206#255#247#222
+#206#255#255#222#206#255#247#222#198#255#255#214#189#255#247#214#189#255#247
+#206#181#255#247#206#181#255#247#206#181#255#247#189#156#255#247#189#165#255
+#247#189#156#255#247#181#140#255#247#181#140#255#247#181#140#255#247#165'{'
+#255#247#165's'#255#247#165'{'#255#247#165's'#255#231#148'k'#255'JB1'#255#0#0
+#0#0#0#0#0#0#231#173#140#255#247#222#198#255#255#222#189#255#247#222#198#255
+#247#206#173#255#239#206#181#255#247#206#173#255#255#206#156#255#247#189#156
+#255#239#189#156#255#247#181#140#255#247#181#140#255#247#181#140#255#247#165
+'s'#255#247#165's'#255#247#165's'#255#239#165's'#255#247#165'{'#255#231#156
+'c'#255#231#148'k'#255#231#156'c'#255'JB1'#255#0#0#0#0#0#0#0#0#247#165's'#255
+#247#165's'#255#247#165'{'#255#222#165'{'#255#222#165'{'#255#222#165'{'#255
+#231#148'c'#255#231#148'k'#255#231#148'c'#255#231#156'k'#255#231#148'c'#255
,#214#132'R'#255#206#132'R'#255#214#132'R'#255#222'{J'#255#222'{J'#255#222'{J'
+#255#222'{J'#255#222'{J'#255'JB1'#255'JB1'#255'JB1'#255#0#0#0#0#0#0#0#0#206
+#189#181#255#255#255#255#255#255#255#255#255#255#255#255#255#239#189#156#255
+#255#255#255#255#255#255#255#255#255#255#255#255#239#198#156#255#255#255#255
+#255#247#239#239#255#247#247#247#255#239#189#156#255#255#255#255#255#239#239
+#247#255#247#247#239#255#239#189#156#255#247#239#239#255#247#247#239#255#255
+#222#206#255#231#189#156#255'JB1'#255#0#0#0#0#0#0#0#0#206#189#173#255#255#255
+#255#255#239#247#239#255#247#239#239#255#231#189#156#255#255#255#255#255#247
+#239#239#255#247#247#239#255#206#165#140#255#247#239#239#255#239#247#239#255
+#247#222#206#255#214#165#132#255#239#239#239#255#247#239#239#255#247#222#198
+#255#214#165#132#255#239#239#239#255#247#222#206#255#247#206#181#255#206#156
+'{'#255'JB1'#255#0#0#0#0#0#0#0#0#206#189#173#255#255#255#255#255#247#239#239
+#255#239#239#239#255#214#165#132#255#255#255#255#255#239#247#239#255#255#222
+#206#255#198#156'{'#255#247#239#239#255#255#222#198#255#247#222#206#255#198
+#156'{'#255#247#247#239#255#247#214#189#255#247#206#173#255#198#156'{'#255
+#255#222#206#255#247#206#173#255#255#206#156#255#198#156'{'#255'JB1'#255#0#0
+#0#0#0#0#0#0#206#173#156#255#231#189#156#255#239#189#148#255#206#165#132#255
+#214#173#140#255#231#181#148#255#231#173#140#255#206#156'{'#255#198#156'{'
+#255#231#189#148#255#214#165#132#255#206#156'{'#255'9'#140#214#255'B'#140#214
+#255'9'#140#214#255#24'B'#206#255#24'B'#206#255#231#189#148#255#214#165#140
+#255#198#156'{'#255#165'{s'#255'JB1'#255#0#0#0#0#0#0#0#0#198#181#156#255#255
+#255#255#255#255#255#255#255#247#239#239#255#231#181#148#255#255#255#255#255
+#247#247#239#255#239#239#239#255#239#181#148#255#239#239#239#255#247#247#239
+#255#239#239#239#255'B'#140#214#255#247#247#239#255#247#239#239#255#255#231
+#206#255#24'9'#206#255#255#231#206#255#247#222#198#255#255#231#206#255#231
+#181#148#255'JB1'#255#0#0#0#0#0#0#0#0#198#173#165#255#255#255#255#255#247#239
+#239#255#239#247#239#255#214#165#140#255#255#255#255#255#247#239#239#255#247
+#231#206#255#214#165#140#255#239#239#239#255#247#239#239#255#255#231#198#255
+'9'#140#214#255#255#222#206#255#247#214#189#255#255#222#189#255#16'B'#206#255
+#255#222#206#255#247#214#189#255#247#206#181#255#206#156'{'#255'JB1'#255#0#0
+#0#0#0#0#0#0#198#173#156#255#255#255#255#255#247#247#239#255#247#222#206#255
+#206#156'{'#255#239#247#239#255#255#222#198#255#247#214#189#255#206#156'{'
+#255#239#247#239#255#255#222#206#255#247#214#181#255#24'9'#206#255#255#222
+#189#255#247#214#189#255#247#206#173#255#24'B'#206#255#255#222#189#255#239
+#198#165#255#239#189#156#255#198#156'{'#255'J91'#255#0#0#0#0#0#0#0#0#206#181
+#156#255#231#181#148#255#214#165#132#255#198#156'{'#255#206#156'{'#255#231
+#181#148#255#206#165#140#255#206#156'{'#255#198#156'{'#255#239#181#148#255
+#206#165#140#255#206#156'{'#255#24'B'#206#255#16'B'#206#255#24'B'#206#255#24
+'B'#206#255#16'B'#214#255#231#173#140#255#198#156'{'#255#173#148#140#255#165
+'{k'#255'JB1'#255#0#0#0#0#0#0#0#0#198#173#165#255#255#255#255#255#247#247#239
+#255#247#239#239#255#231#181#148#255#247#247#239#255#247#247#239#255#239#239
+#239#255#231#189#148#255#247#239#239#255#255#231#206#255#247#222#206#255#239
+#189#148#255#255#222#206#255#255#231#206#255#255#222#189#255#239#181#148#255
+#247#222#198#255#255#222#198#255#247#206#173#255#231#181#156#255'JB1'#255#0#0
+#0#0#0#0#0#0#198#181#156#255#247#239#239#255#239#239#239#255#247#247#239#255
+#206#165#140#255#247#239#239#255#247#222#198#255#255#222#206#255#214#165#132
+#255#247#222#206#255#247#214#189#255#255#222#189#255#198#156'{'#255#255#222
+#206#255#247#214#189#255#247#206#181#255#198#156'{'#255#255#214#189#255#239
+#206#181#255#255#206#156#255#206#156'{'#255'J91'#255#0#0#0#0#0#0#0#0#214#165
+#140#255#247#247#239#255#239#239#239#255#247#222#189#255#206#156'{'#255#239
+#247#239#255#247#214#198#255#247#206#173#255#198#156'{'#255#255#231#206#255
+#247#214#189#255#255#206#165#255#198#156'{'#255#247#222#189#255#247#206#181
+#255#247#189#156#255#198#156'{'#255#247#206#181#255#247#189#156#255#231#189
+#148#255#206#156'{'#255'JB1'#255#0#0#0#0#0#0#0#0#206#165#140#255#247#214#181
+#255#231#181#148#255#214#165#140#255#198#156'{'#255#231#173#140#255#206#156
+'{'#255#173#148#140#255#156'{k'#255#231#173#140#255#206#156'{'#255#173#148
+#140#255#156'{k'#255#231#173#140#255#198#156'{'#255#173#148#140#255#156'{k'
+#255#231#181#140#255#198#156'{'#255#173#148#140#255#165'{s'#255'J91'#255#0#0
+#0#0#0#0#0#0#214#165#140#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB'
+'1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'
+#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#206#189#173#255#206#189#181#255#214#189#173#255
+#206#189#173#255#206#189#173#255#206#189#173#255#214#189#181#255#206#189#173
+#255#206#173#156#255#198#181#165#255#206#173#156#255#198#181#156#255#198#173
+#156#255#198#181#156#255#206#173#156#255#198#181#156#255#214#165#140#255#206
+#165#132#255#214#165#140#255#173#148#140#255#173#148#132#255#173#148#140#255
+#0#0#0#0#0#0#0#0#214#189#173#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#239#239#239#255#247#247#239#255'JB1'#255#0#0#0#0#0#0#0#0#206
+#189#173#255#255#255#255#255#255#255#255#255#247#239#239#255#181#189#189#255
+#173#148#140#255'k{'#140#255'k'#132#140#255#189#189#189#255#247#239#239#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#247#247#239#255#247#239#239#255#239#247
+#239#255#255#214#198#255'JB1'#255#0#0#0#0#0#0#0#0#206#189#181#255#255#255#255
+#255#255#255#255#255#189#189#189#255'k'#132#140#255'k{'#140#255#140#156#165
+#255#173#148#140#255'kZR'#255#181#189#189#255#255#255#255#255#255#255#255#255
+#247#173#140#255#247#181#140#255#247#181#140#255#247#165's'#255#247#165'{'
+#255#239#165's'#255#247#165's'#255#239#239#239#255#255#222#198#255'JB1'#255#0
+#0#0#0#0#0#0#0#206#189#173#255#255#255#255#255#255#255#255#255'k{'#140#255'k'
+'ZR'#255'scR'#255'k'#132#140#255'kZR'#255#189#189#189#255'k{'#140#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#239
+#239#239#255#247#247#239#255#239#239#239#255#247#247#239#255#239#239#239#255
+#247#214#181#255'JB1'#255#0#0#0#0#0#0#0#0#214#189#173#255#255#255#255#255#255
+#255#255#255'scR'#255'J91'#255#189#189#189#255#222#214#214#255#189#189#189
+#255#140#156#165#255'k'#132#140#255#255#255#255#255#255#255#255#255#255#181
+#140#255#247#173#140#255#247#181#140#255#247#165's'#255#239#165's'#255#247
+#165's'#255#247#165's'#255#247#239#239#255#247#206#173#255'JB1'#255#0#0#0#0#0
+#0#0#0#206#189#173#255#255#255#255#255#255#255#255#255'J91'#255'JB1'#255#222
+#214#214#255#181#181#189#255#132#156#165#255'k{'#140#255'kcR'#255#255#255#255
+#255#255#255#255#255#239#247#239#255#247#239#239#255#247#247#239#255#239#239
+#239#255#247#239#239#255#239#239#239#255#247#247#239#255#239#239#239#255#247
+#189#156#255'JB1'#255#0#0#0#0#0#0#0#0#206#173#165#255#255#255#255#255#255#255
+#255#255#189#189#189#255#0#0#0#255#189#189#189#255#140#156#165#255'k'#132#140
+#255'sZR'#255#132#156#165#255#247#239#239#255#247#247#239#255#247#239#239#255
+#247#239#239#255#239#239#239#255#247#239#239#255#239#247#239#255#247#239#239
+#255#239#239#239#255#255#231#206#255#247#189#165#255'JB1'#255#0#0#0#0#0#0#0#0
+#198#173#156#255#255#255#255#255#255#255#255#255#247#247#239#255#222#206#206
+#255'kZR'#255'kcR'#255'sZR'#255#24'B'#214#255#189#189#189#255#247#247#239#255
+#239#239#239#255#239#239#231#255#247#247#239#255#239#239#239#255#247#247#239
+#255#247#239#239#255#247#222#198#255#255#222#198#255#247#222#206#255#239#181
+#148#255'JB1'#255#0#0#0#0#0#0#0#0#206#173#156#255#255#255#255#255#255#255#255
+#255#181#206#222#255#24'B'#206#255#24'B'#206#255#222#214#214#255#247#247#239
+#255#24'B'#206#255#24'9'#206#255#214#214#206#255#247#239#239#255#198#156'{'
+#255#206#156'{'#255#156'{k'#255#156'sk'#255#156'{k'#255#156'{k'#255#156'{k'
+#255#247#231#198#255#255#181#140#255'JB1'#255#0#0#0#0#0#0#0#0#198#173#156#255
+#255#255#255#255#255#255#255#255#24'B'#206#255#132#173#198#255'9'#140#214#255
+#24'B'#206#255#24#132#189#255#24'B'#206#255#24#140#198#255#24'B'#206#255#247
+#247#239#255#247#239#239#255#239#239#239#255#247#247#239#255#255#222#198#255
+#255#231#206#255#255#222#206#255#255#214#198#255#247#222#198#255#247#165's'
+#255'JB1'#255#0#0#0#0#0#0#0#0#206#181#165#255#255#255#255#255#255#255#255#255
+#24'B'#206#255'9'#173#239#255'B'#140#214#255'B'#140#214#255#24'B'#206#255#24
+#140#189#255#24'B'#206#255'1Zs'#255#247#239#239#255#198#156'{'#255#165'{k'
+#255#156'{k'#255#156'{k'#255#156'{k'#255#156'{k'#255#156'sk'#255#247#222#198
+#255#247#165's'#255'JB1'#255#0#0#0#0#0#0#0#0#198#173#156#255#255#255#255#255
+#255#255#255#255#24'B'#206#255#24#140#189#255'B'#140#214#255'B'#140#214#255
+#24'B'#206#255#24#140#198#255'!B'#206#255'9c{'#255#247#247#239#255#255#222
+#206#255#247#222#198#255#255#222#206#255#255#222#206#255#255#222#198#255#247
+#222#189#255#255#222#198#255#247#214#181#255#247#165'{'#255'JB1'#255#0#0#0#0
+#0#0#0#0#198#173#156#255#255#255#255#255#247#247#239#255#222#214#206#255#24
+'B'#206#255#24'B'#206#255#24'B'#206#255#24'B'#206#255'9cs'#255'9c{'#255#206
+#189#173#255#255#222#206#255#156'{k'#255#165'{k'#255#156'{k'#255#156'{k'#255
,#156'sk'#255#156'{k'#255#156'sk'#255#247#206#181#255#231#148'c'#255'JB1'#255
+#0#0#0#0#0#0#0#0#214#165#140#255#247#247#239#255#247#239#239#255#247#239#239
+#255#247#247#239#255#247#247#239#255#247#247#239#255#247#247#239#255#247#239
+#239#255#255#222#206#255#255#231#198#255#247#222#206#255#255#222#206#255#247
+#222#189#255#255#222#198#255#247#222#198#255#255#214#189#255#247#206#173#255
+#247#206#181#255#247#206#173#255#231#148'c'#255'JB1'#255#0#0#0#0#0#0#0#0#206
+#165#132#255#247#239#239#255#247#222#198#255#247#214#198#255#247#222#198#255
+#247#206#189#255#247#214#181#255#247#198#173#255#239#198#173#255#247#189#156
+#255#239#189#156#255#231#181#148#255#231#181#140#255#247#173#140#255#247#165
+'s'#255#247#165's'#255#239#165's'#255#247#165'{'#255#231#148'c'#255#231#148
+'c'#255#239#156'k'#255'JB1'#255#0#0#0#0#0#0#0#0#214#165#140#255'JB1'#255'JB1'
+#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255
+'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'#255'JB1'
+#255'JB1'#255'JB1'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#132#156#165#255#132#156#165#255#132#156#165#255#140
+#156#165#255'k{'#140#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#222#198#181#255#206#189
+#173#255#214#189#173#255#206#189#181#255#206#189#173#255#140#156#165#255#140
+#198#214#255#198#239#255#255#198#247#255#255#173#231#247#255#140#198#214#255
+'k{'#140#255#206#173#156#255#198#181#165#255#206#173#156#255#198#173#156#255
+#198#173#165#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#206#189#173
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#247#239
+#239#255#132#156#165#255#198#247#255#255'k{'#140#255'k{'#140#255#140#156#165
+#255#140#198#206#255'1c{'#255#206#173#156#255#247#247#239#255#239#239#239#255
+#247#247#239#255#247#239#239#255#132#156#165#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#214#189#173#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#140#156#165#255#140#189#214#255#173#247#255#255'k'#132#140
+#255#132#173#198#255#140#198#214#255'k'#206#247#255'k{'#140#255'1c{'#255#255
+#222#198#255#239#239#239#255#247#247#239#255#181#206#214#255'9Z{'#255#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#206#189#173#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#132#156#165#255#173#231#247#255#173#231
+#239#255#140#189#214#255#140#198#206#255#140#198#206#255#132#173#198#255#132
+#173#198#255'k'#132#140#255#255#222#198#255#239#239#239#255#181#206#214#255
+#24'B'#206#255'B'#140#214#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#214#189
+#181#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255'k'
+#132#140#255'k{'#140#255'k{'#140#255'9cs'#255'9c{'#255'9Z{'#255'9cs'#255'k{'
+#140#255#173#148#140#255#255#222#189#255#165#173#247#255#24'B'#206#255'B'#140
+#214#255#206#165#140#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#206#189#173
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#247#247#239#255#247#247#239#255#255#222#206#255#247#222#198#255#255
+#214#181#255#239#198#173#255#247#214#189#255#255#222#198#255#165#173#247#255
+'9'#140#214#255'B'#140#214#255#255#231#198#255#156'{k'#255#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#206#189#181#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#239#239#239#255#247#247#239#255#247#239#239
+#255#181#206#214#255#24'B'#206#255#24'B'#206#255#181#206#214#255#255#222#206
+#255#156'{k'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#214#189#173#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#247#239#239#255#247#239#239
+#255#239#239#239#255#165#173#247#255'9'#140#214#255#24'B'#206#255#189#189#189
+#255#255#222#206#255#247#214#189#255'kZR'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#206#189#173#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#247#239#239#255
+#239#239#239#255#247#247#239#255#165#181#247#255'B'#140#214#255#24'B'#206#255
+#132#173#189#255#255#222#206#255#255#231#198#255#247#198#173#255'kcR'#255#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#206#189#173#255#255#255#255#255#255#255
+#255#255#165#173#255#255#181#206#214#255#255#255#255#255#255#255#255#255#255
+#255#255#255#239#239#239#255#247#247#231#255#165#173#247#255'9'#140#214#255
+#24'B'#206#255#140#156#165#255#222#214#206#255#247#222#206#255#247#222#189
,#255#247#189#156#255'kZR'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#206#189
+#181#255#247#247#239#255#165#173#247#255'B'#140#214#255'9'#140#214#255#165
+#173#247#255#255#255#255#255#247#239#239#255#247#247#239#255#165#173#247#255
+'B'#140#214#255#24'B'#206#255'9'#140#214#255#255#222#198#255#247#231#206#255
+#255#214#189#255#247#222#198#255#239#189#156#255'kcR'#255#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#231#189#173#255#165#231#247#255#24'B'#206#255#24'B'#206
+#255#24'B'#206#255#173#181#247#255#165#173#247#255#239#247#239#255#165#173
+#247#255'9'#140#214#255#24'B'#206#255#24'B'#206#255#231#214#206#255#255#222
+#206#255#247#214#189#255#247#222#198#255#247#206#173#255#231#173#140#255'kZR'
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#206#173#156#255#255#255#255#255
+#173#181#247#255#24'B'#206#255#24'B'#206#255#24'B'#206#255#165#173#247#255
+#165#173#247#255'B'#140#214#255#24'B'#206#255#24'B'#206#255#189#189#189#255
+#255#231#198#255#247#214#198#255#247#222#189#255#247#214#198#255#247#198#173
+#255#231#181#140#255'JB1'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#198#181
+#156#255#255#255#255#255#255#255#255#255#189#206#214#255#24'B'#206#255#24'B'
+#206#255#24'B'#206#255'B'#140#214#255#24'B'#206#255#24'B'#206#255'B'#140#214
+#255#255#222#206#255#247#222#206#255#247#222#189#255#255#214#198#255#247#214
+#181#255#239#198#173#255#247#181#140#255'J91'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#206#173#156#255#255#255#255#255#255#255#255#255#247#239#239#255
+#189#214#222#255#24'B'#206#255'!B'#206#255#24'B'#206#255#24'B'#206#255#24'B'
+#206#255#222#214#206#255#247#222#198#255#255#222#189#255#247#214#198#255#247
+#214#181#255#247#206#181#255#239#198#165#255#247#165's'#255'J91'#255#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#198#173#156#255#255#255#255#255#247#247#239
+#255#239#239#239#255#247#239#239#255#181#206#214#255#24'B'#206#255#24'B'#206
+#255'!B'#206#255#214#198#173#255#247#214#189#255#247#214#189#255#247#206#173
+#255#239#198#173#255#247#198#173#255#247#189#156#255#231#189#148#255#247#165
+'{'#255'JB1'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#206#173#156#255#239
+#247#239#255#255#214#198#255#247#214#189#255#239#198#165#255#247#206#173#255
+#140#156#165#255#24'B'#206#255#173#156#140#255#231#181#148#255#231#173#140
+#255#231#173#140#255#231#173#140#255#247#181#140#255#247#181#140#255#239#165
+'s'#255#247#165'{'#255#239#148'c'#255'JB1'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#206#173#140#255#156'sk'#255'kZR'#255'kcR'#255'sZR'#255'kZR'#255'k'
+'cR'#255#165'{k'#255'kZR'#255'scR'#255'kZR'#255'JB1'#255'JB1'#255'J91'#255'J'
+'B1'#255'J91'#255'JB1'#255'JB1'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#140#198#214#255#140
+#189#214#255#140#198#214#255#140#198#206#255#140#189#214#255#140#198#206#255
+#140#198#214#255#140#189#214#255#140#198#206#255#148#189#214#255'{'#173#198
+#255#132#173#198#255'{'#173#198#255#132#173#198#255'{'#173#189#255#132#173
+#198#255'{'#173#198#255#132#173#189#255'{'#173#198#255#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#140#198#206#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255'9Z{'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#148#189#214#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255'9c{'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#140#198#214#255#255#255#255#255#206#247#255#255#198#239#255#255#198
+#247#255#255#206#247#255#255#198#239#255#255#198#247#255#255#198#247#255#255
+#198#247#255#255#198#247#255#255#198#247#255#255#198#247#255#255#198#247#255
+#255#198#247#255#255#198#247#255#255#198#247#255#255#198#247#255#255'9Z{'#255
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#140#198#206#255#198#239#255#255#165
+#247#255#255#165#247#255#255#173#239#255#255#165#247#255#255#165#247#255#255
+#173#247#255#255#165#239#255#255#173#247#255#255#165#239#255#255#173#247#255
+#255#165#239#255#255#173#247#255#255#165#239#255#255#173#247#255#255#165#239
+#255#255#173#247#255#255'9cs'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#140
+#198#214#255#198#247#255#255#173#247#255#255#165#247#247#255#173#247#255#255
+#165#247#247#255#173#239#255#255#165#247#247#255#173#247#255#255#165#247#247
+#255#173#247#255#255#165#247#247#255#173#247#255#255#165#247#247#255#173#247
+#255#255#165#247#255#255#173#247#255#255#165#247#255#255'1Zs'#255#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#140#198#206#255#198#239#255#255#165#239#255#255
,#173#247#255#255#165#239#255#255#173#247#255#255#165#247#255#255#165#247#255
+#255#173#247#255#255#165#239#255#255#165#247#255#255#173#247#255#255#165#239
+#255#255#165#247#255#255#173#247#255#255#165#239#255#255#165#247#247#255#173
+#247#255#255'9c{'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'{'#173#189#255
+#148#231#255#255#140#231#247#255#165#247#255#255#173#247#247#255#165#247#255
+#255#173#239#247#255#165#247#255#255#173#247#247#255#165#247#255#255#173#247
+#247#255#165#239#255#255#173#247#247#255#165#247#255#255#173#247#247#255#165
+#247#255#255#173#247#255#255#165#247#255#255'9Zs'#255#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#132#173#189#255#140#231#255#255#148#231#247#255#165#247#255
+#255#173#239#255#255#165#247#255#255#165#247#255#255#173#247#255#255#165#247
+#255#255#165#239#255#255#173#247#255#255#165#247#255#255#165#247#255#255#173
+#247#255#255#165#239#255#255#173#247#247#255#165#239#255#255#173#247#255#255
+'1c{'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'{'#173#198#255#132#214#247
+#255#140#231#255#255#140#231#247#255#140#231#247#255#148#231#247#255#140#222
+#255#255#140#231#247#255#148#231#247#255#140#231#247#255#140#231#255#255#148
+#222#247#255#140#231#247#255#140#231#255#255#140#231#247#255#140#231#255#255
+#148#231#247#255#140#231#255#255'9Zs'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#132#173#189#255'c'#198#247#255#148#231#247#255#140#231#255#255#148#231
+#255#255#140#231#247#255#140#231#255#255#148#231#247#255#140#222#255#255#148
+#231#255#255#140#231#247#255#148#231#255#255#140#231#247#255#148#222#255#255
+#140#231#247#255#148#231#255#255#140#231#247#255#148#231#255#255'1c{'#255#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'{'#173#198#255'R'#189#247#255'{'#214#247
+#255#148#231#247#255#140#222#255#255#148#231#247#255#140#231#255#255#140#231
+#247#255#148#231#255#255#140#231#247#255#140#231#255#255#140#231#247#255#148
+#231#255#255#140#231#247#255#148#231#255#255#140#222#247#255#140#231#255#255
+#148#231#247#255'9Zs'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#173#189
+#255'1'#156#206#255'9'#181#231#255'J'#189#239#255'J'#181#247#255'9'#181#222
+#255'9'#181#231#255#132#214#247#255#140#231#247#255#140#222#255#255#148#231
+#247#255#140#231#255#255#148#222#247#255#140#231#255#255#140#231#247#255#148
+#231#255#255#140#231#247#255#148#231#255#255'1c{'#255#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#132#173#198#255'9'#181#231#255'9'#181#222#255'9'#181#231#255
+'9'#181#231#255'9'#181#222#255#0#165#222#255'k'#206#247#255'{'#214#247#255
+#132#214#247#255'{'#214#247#255#132#214#247#255'{'#214#247#255'{'#214#247#255
+#132#214#247#255'{'#214#247#255'{'#214#247#255#132#214#247#255'1Z{'#255#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#173#189#255'k'#206#247#255#0#165#222
+#255'9'#181#231#255'9'#181#222#255'9'#181#231#255#0#165#222#255'9'#181#231
+#255#132#214#247#255'{'#214#255#255#132#222#247#255'{'#214#247#255#132#222
+#247#255'{'#214#255#255#132#222#247#255'{'#214#247#255#132#214#255#255'{'#222
+#247#255'9c{'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'{'#173#198#255'k'
+#206#247#255'9'#181#222#255#24#132#189#255'9'#181#231#255'9'#181#222#255'9'
+#173#239#255#0#165#222#255'k'#206#247#255'{'#214#247#255'{'#214#247#255#132
+#214#247#255'{'#214#247#255#132#214#247#255'{'#214#247#255#132#222#247#255'{'
+#214#247#255#132#214#247#255'1c{'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#132#173#189#255'c'#198#247#255'k'#206#247#255'R'#189#247#255#0#165#222#255
+#24#132#189#255#8#165#222#255#0#165#222#255'!'#156#239#255'k'#206#247#255'c'
+#198#247#255#132#222#247#255'{'#214#255#255'{'#222#247#255#132#214#247#255'{'
+#214#255#255'{'#214#247#255#132#214#247#255'9c{'#255#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0'{'#173#198#255'k'#206#247#255'c'#198#247#255'k'#206#247#255
+'k'#206#247#255'J'#189#247#255')'#156#239#255'1'#156#206#255#8#165#222#255'1'
+#156#206#255'9'#173#239#255'9'#181#231#255'J'#181#239#255'R'#189#247#255'c'
+#198#247#255'k'#206#247#255'k'#206#247#255'c'#206#247#255'9Zs'#255#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#173#198#255'9cs'#255'9Z{'#255'9cs'#255'9Z'
+'{'#255'9Zs'#255'9c{'#255'9cs'#255'9c{'#255'9cs'#255'9c{'#255'9c{'#255'9Zs'
+#255'9c{'#255'9cs'#255'9Z{'#255'9cs'#255'9Z{'#255'9c{'#255#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#148#165
+#255#132#156#165#255#132#156#165#255#140#156#165#255#132#156#173#255#132#156
+#165#255#140#156#165#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#140#156#165#255#181#206#222#255#206#247#255#255#198#247#255#255#198#239#255
+#255#173#247#255#255#173#231#247#255#181#206#214#255#132#156#165#255#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#148#165#255#132#173#198#255#181#206#214#255
,#181#206#214#255#181#206#222#255#181#206#214#255#140#189#206#255#140#198#214
+#255#140#189#206#255#132#173#198#255#132#156#165#255#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#140#156#165#255#132#156#165#255#140#156#173#255#132#156#165#255#140#156
+#165#255#132#156#165#255#140#156#165#255#140#156#165#255'k'#132#140#255'k{'
+#140#255'k'#132#140#255'k{'#140#255'k'#132#140#255'k{'#140#255'k{'#140#255'k'
+'{'#140#255'k{'#140#255'k{'#140#255'k{'#140#255'k{'#140#255'k{'#140#255#0#0#0
+#0#0#0#0#0#0#0#0#0#132#156#173#255#206#247#255#255#198#239#255#255#198#247
+#255#255#198#239#255#255#198#247#255#255#198#247#255#255#173#231#247#255#173
+#231#247#255#173#231#247#255#173#231#247#255'{'#214#247#255#132#222#247#255
+'{'#214#247#255#132#222#247#255'{'#222#247#255'k'#206#247#255'k'#206#247#255
+'c'#206#247#255'k'#206#247#255#132#173#198#255'k{'#140#255#0#0#0#0#0#0#0#0
+#132#156#165#255#198#239#255#255#198#247#255#255#198#239#255#255#173#231#247
+#255#173#231#247#255#173#222#247#255#173#231#247#255#140#231#247#255'{'#214
+#247#255'{'#222#247#255'k'#198#247#255'c'#206#247#255'k'#198#247#255'c'#206
+#247#255'R'#181#247#255'J'#181#247#255'J'#181#247#255'9'#181#222#255'9'#181
+#231#255'1'#156#206#255'9c{'#255#0#0#0#0#0#0#0#0#132#156#165#255#198#247#255
+#255#198#239#255#255#173#247#255#255#165#231#239#255#173#231#247#255#165#231
+#239#255#140#231#247#255#132#214#247#255'{'#214#247#255'k'#198#247#255'k'#206
+#247#255'k'#198#247#255'k'#206#247#255'J'#181#239#255'R'#189#247#255'J'#189
+#239#255'9'#181#222#255'9'#181#231#255'1'#156#206#255'1'#165#206#255'sZR'#255
+#0#0#0#0#0#0#0#0#140#156#165#255#198#239#255#255#165#247#255#255#173#231#239
+#255#173#231#247#255#165#231#239#255#148#231#255#255'{'#214#247#255#132#214
+#255#255'{'#214#247#255'k'#206#247#255'c'#198#247#255'k'#206#247#255'J'#181
+#239#255'R'#189#247#255'J'#181#239#255'9'#181#231#255'9'#181#231#255'9'#181
+#231#255'9'#156#206#255'1'#156#206#255'9c{'#255#0#0#0#0#0#0#0#0#132#156#165
+#255#198#247#255#255#173#231#247#255#173#222#247#255#165#231#239#255#173#231
+#247#255#140#231#247#255#132#214#247#255'{'#222#247#255'k'#198#247#255'k'#206
+#247#255'c'#206#247#255'k'#198#247#255'J'#189#247#255'R'#181#239#255'J'#189
+#247#255'9'#181#222#255'9'#181#231#255'9'#173#239#255'1'#156#206#255#24#140
+#198#255'R91'#255#0#0#0#0#0#0#0#0#140#156#165#255#198#239#255#255#173#231#239
+#255#165#231#247#255#173#231#239#255#148#231#255#255'{'#214#247#255#132#214
+#247#255'c'#198#247#255'k'#206#247#255'c'#198#247#255'k'#206#247#255'J'#181
+#239#255'R'#189#247#255'J'#181#239#255'9'#181#231#255'9'#181#222#255'9'#181
+#231#255'1'#173#239#255'9'#156#206#255#24#140#198#255'JB1'#255#0#0#0#0#0#0#0
+#0#132#156#165#255#198#247#255#255#173#231#247#255#173#222#239#255#140#231
+#255#255'{'#214#247#255'{'#214#247#255#132#222#247#255'c'#198#247#255'k'#206
+#247#255'k'#198#247#255'J'#189#239#255'R'#181#247#255'J'#189#239#255'9'#181
+#231#255'9'#181#231#255'9'#181#222#255'9'#165#247#255'9'#173#239#255'1'#156
+#206#255#24#132#189#255'RB1'#255#0#0#0#0#0#0#0#0#140#156#165#255#198#239#255
+#255#173#231#247#255#165#231#239#255#148#231#255#255'{'#214#247#255#132#214
+#247#255'c'#198#247#255'k'#206#247#255'k'#206#247#255'J'#181#239#255'R'#189
+#247#255'J'#181#247#255'9'#181#222#255'9'#181#231#255'9'#181#222#255'1'#173
+#247#255'9'#173#239#255'1'#156#206#255'9'#156#206#255#24#140#198#255'JB1'#255
+#0#0#0#0#0#0#0#0#132#156#165#255#173#231#247#255#165#231#239#255#148#231#255
+#255'{'#214#247#255#132#214#247#255'c'#206#247#255'k'#206#247#255'k'#198#247
+#255'c'#206#247#255'R'#181#247#255'J'#189#239#255'9'#181#231#255'9'#181#222
+#255'9'#181#231#255'9'#165#239#255'9'#173#239#255'1'#156#206#255'9'#165#206
+#255#24#132#198#255#24#140#189#255'J91'#255#0#0#0#0#0#0#0#0#132#148#165#255
+#173#231#247#255#140#231#255#255'{'#214#247#255#132#214#247#255'c'#206#247
+#255'k'#198#247#255'k'#206#247#255'c'#198#247#255'R'#189#247#255'J'#181#239
+#255'9'#181#231#255'9'#181#222#255'9'#181#231#255'1'#173#239#255'9'#173#247
+#255'1'#156#206#255'9'#156#214#255'1'#156#206#255#24#140#189#255#24#132#198
+#255'JB1'#255#0#0#0#0#0#0#0#0#132#156#165#255#173#231#247#255'{'#214#247#255
+#132#214#247#255'{'#222#247#255'k'#198#247#255'c'#206#247#255'k'#198#247#255
+'J'#189#239#255'R'#181#239#255'J'#189#247#255'9'#181#222#255'9'#181#231#255
+'9'#165#239#255'9'#173#239#255'1'#156#206#255'9'#165#206#255'1'#156#206#255
+'9'#165#206#255#24#132#198#255#24#140#189#255#0#0#0#255#0#0#0#0#0#0#0#0#132
+#156#165#255#173#231#247#255#132#214#247#255'{'#222#247#255'k'#198#247#255'k'
+#206#247#255'c'#198#247#255'k'#206#247#255'R'#189#247#255'J'#181#247#255'9'
+#181#222#255'9'#181#231#255'9'#181#231#255'9'#173#239#255'1'#173#247#255'9'
+#156#206#255'1'#156#206#255'9'#156#206#255'1'#165#206#255#24#132#189#255#24
+#140#198#255#0#0#0#255#0#0#0#0#0#0#0#0#132#156#173#255#173#231#239#255'{'#214
+#247#255'k'#198#247#255'J'#189#247#255'J'#181#239#255'R'#189#239#255'J'#181
,#247#255'9'#181#222#255'9'#173#239#255'1'#156#206#255'9'#156#206#255'1'#156
+#206#255'1'#156#206#255'9'#156#206#255'1'#165#206#255#24#132#198#255#24#140
+#198#255#24#132#189#255#24#140#198#255#24#132#189#255#0#0#0#255#0#0#0#0#0#0#0
+#0#140#156#165#255#173#231#247#255'J'#181#247#255'J'#189#247#255#132#173#189
+#255'9'#181#231#255'1'#156#206#255'9'#156#206#255'1'#156#206#255'1'#156#206
+#255#24#132#189#255#24#140#198#255#24#132#189#255#24#140#198#255#24#140#189
+#255#24#132#198#255#24#140#189#255#24#132#189#255#24#140#198#255#24#132#189
+#255#24#140#198#255#0#0#0#255#0#0#0#0#0#0#0#0'k{'#140#255'9cs'#255'9c{'#255
+'R9)'#255'JB1'#255'RB1'#255'JB1'#255'RB1'#255'JB1'#255'RB1'#255#0#0#0#255#0#0
+#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255
+#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#10'TImageList'#11'SmallImages'#4'left'#2'('#3'top'#2#16#6'Bitmap'#10
+#14#24#0#0'Li'#6#0#0#0#16#0#0#0#16#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#206#189#173#255#198#173#165#255#198#173#156#255#198#173#165#255
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#140#189#206#255#198#173#165#255#239#231#222#255#198#247#255#255#198#247
+#255#255#189#198#206#255#206#189#173#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#206#189#181#255#206#189#173#255#198#239#255#255
+#198#247#255#255#198#239#255#255#173#231#239#255#140#231#255#255'c'#206#247
+#255#198#173#156#255#140#156#165#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#206#189#173#255#198#214#222#255#198#247#255#255#198#247#255#255#198#239#255
+#255#173#239#255#255#165#231#239#255'{'#214#247#255'k'#198#247#255'c'#206#247
+#255#140#189#214#255#198#173#156#255#132#173#198#255#0#0#0#0#198#173#156#255
+#206#181#173#255#198#247#255#255#198#239#255#255#198#239#255#255#198#247#255
+#255#165#239#255#255#173#231#239#255'{'#214#247#255'c'#198#247#255'k'#206#247
+#255'k'#198#239#255'k'#206#247#255'J'#181#239#255#140#173#198#255#140#156#165
+#255#198#173#156#255#173#247#255#255#165#231#247#255#173#231#239#255#173#231
+#239#255'{'#214#247#255'k'#198#247#255'c'#206#247#255'k'#206#247#255'k'#206
+#239#255'J'#173#239#255'B'#181#239#255'J'#173#231#255'B'#181#239#255')'#189
+#239#255#189#156#140#255#198#173#165#255#173#231#239#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#247#239#231#255#255#247#239#255#255#239#231#255#255#247#239
+#255#239#222#222#255'B'#181#239#255#148#132'{'#255#198#173#156#255#206#189
+#181#255#247#239#239#255#255#239#231#255#231#231#222#255#255#239#239#255#255
+#239#231#255#247#247#239#255#255#239#231#255#247#239#239#255#255#239#231#255
+#247#222#206#255#247#247#231#255#255#214#198#255#148#132'{'#255#148#132'{'
+#255#198#173#165#255#247#206#181#255#222#198#173#255#247#239#239#255#255#239
+#239#255#231#189#148#255#231#181#148#255#198#173#165#255#198#173#156#255#198
+#173#165#255#198#173#156#255#231#231#222#255#255#222#198#255#181#156#140#255
+#231#173#132#255#148#132'{'#255#198#165#140#255#255#255#255#255#255#222#198
+#255#222#198#173#255#222#198#173#255#222#189#173#255#222#206#198#255#222#198
+#173#255#222#198#181#255#222#198#173#255#198#173#165#255#198#173#156#255#181
+#156#140#255#231#173#140#255#255#214#156#255#140#132#132#255#189#165#148#255
+#255#255#255#255#255#255#255#255#189#165#140#255#222#206#198#255#255#247#239
+#255#247#239#239#255#255#247#239#255#247#239#239#255#255#222#206#255#255#222
+#198#255#222#165'{'#255#181#140's'#255#255#214#156#255#255#206#148#255#148
+#132'{'#255#198#165#140#255#255#255#255#255#198#173#165#255#222#206#198#255
+#247#239#239#255#247#239#231#255#255#239#239#255#247#239#231#255#255#247#231
+#255#247#222#198#255#247#222#198#255#255#214#173#255#231#173#132#255#181#132
+'s'#255#255#181'{'#255#206'sJ'#255#181#156#140#255#198#173#165#255#222#206
+#198#255#255#255#255#255#247#247#231#255#255#222#206#255#247#231#198#255#255
+#222#206#255#247#222#198#255#255#214#173#255#255#222#181#255#255#214#156#255
+#255#206#148#255#231#148'c'#255#198'{J'#255#206'sB'#255#189#156#132#255#247
+#214#189#255#255#255#255#255#255#222#206#255#255#222#173#255#255#214#156#255
+#255#198#140#255#255#198#140#255#255#198#148#255#255#181'{'#255#255#181'{'
+#255#247#165'{'#255#239#165'{'#255#231#148'c'#255#214#132'Z'#255#181'c1'#255
+#181#156#140#255#181#156#140#255#181#140's'#255#181#132's'#255#181#140's'#255
+#140#132#132#255#206'sJ'#255#198'sJ'#255#198'{B'#255#198'sJ'#255#198'sJ'#255
+#198'sJ'#255#181'c1'#255#189'c1'#255#181'c1'#255#189'c1'#255#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255'J91'#255#255#0#255#255'JB'
+'1'#255#255#0#255#255'JB1'#255#255#0#255#255'JB1'#255#255#0#255#255'R91'#255
+#255#0#255#255'JB1'#255#255#0#255#255'RB1'#255#255#0#255#255'RB1'#255#181#156
+#140#255#255#255#255#255#148#132'{'#255#255#255#255#255#148#132#132#255#255
+#255#255#255#148#132'{'#255#255#255#255#255#148#132#132#255#255#255#255#255
+'Rck'#255#255#255#255#255'RZk'#255#255#255#255#255'Rck'#255#255#0#255#255#247
+#165#140#255#247#173#148#255#247#165'{'#255#222#165'{'#255#222#165'{'#255#231
+#148'k'#255#231#148'c'#255#231#148'k'#255#214#132'R'#255#222'{J'#255#214#132
+'R'#255#206'{J'#255#206'sJ'#255#198'{B'#255#206'sJ'#255'RB1'#255#239#173#148
+#255#247#239#239#255#255#247#239#255#247#239#239#255#255#247#239#255#247#247
+#239#255#247#239#239#255#247#173#140#255#247#165'{'#255#247#165'{'#255#247
+#165'{'#255#239#165'{'#255#247#165'{'#255#247#165'{'#255#247#165'{'#255'RB1'
+#255#247#173#140#255#247#165#140#255#239#165's'#255#247#165'{'#255#239#165's'
+#255#247#165'{'#255#231#148'c'#255#231#148'c'#255#222#148'k'#255#214#132'R'
+#255#222'{J'#255#222'{J'#255#222'{J'#255#222'{J'#255#222'{J'#255'RB1'#255#189
+#173#165#255#255#255#255#255#255#255#255#255#222#165'{'#255#255#255#255#255
+#255#255#255#255#222#165'{'#255#255#255#255#255#255#255#255#255#222#165'{'
+#255#255#255#255#255#255#255#255#255#222#165'{'#255#255#247#239#255#247#239
+#239#255'JB1'#255#198#173#165#255#255#255#255#255#255#255#255#255#181#156#140
+#255#255#255#255#255#255#255#255#255#181#156#140#255#255#255#255#255#255#255
+#255#255#181#156#140#255#255#255#255#255#255#247#239#255#181#148#140#255#255
+#247#239#255#222#206#198#255'JB9'#255#198#173#156#255#214#173#148#255#181#156
+#140#255#189#132's'#255#222#165'{'#255#181#156#140#255#181#140's'#255#222#165
+'{'#255#181#156#140#255'B'#181#239#255')'#148#222#255#24'B'#206#255#24'J'#206
+#255#222#165'{'#255#0#0#0#0'RB9'#255#198#173#165#255#255#255#255#255#255#255
+#255#255#222#165'{'#255#255#255#255#255#255#255#255#255#222#165'{'#255#255
+#255#255#255#255#255#255#255')'#156#222#255#255#255#255#255#255#247#239#255
+#24'B'#198#255#255#247#239#255#222#206#206#255'JB1'#255#198#173#156#255#255
+#255#255#255#255#255#255#255#181#156#140#255#255#255#255#255#255#255#255#255
+#181#156#140#255#255#255#255#255#255#239#239#255#24'B'#206#255#255#247#239
+#255#255#239#231#255#24'B'#206#255#255#247#239#255#206#189#173#255'JB1'#255
+#198#173#165#255#214#173#148#255#0#0#0#0#189#140's'#255#222#165'{'#255#181
+#156#140#255#189#132's'#255#222#165'{'#255#0#0#0#0'!J'#198#255#24'B'#206#255
+#24'J'#206#255#24'B'#206#255#222#165'{'#255#189#156#140#255'JB1'#255#198#181
+#165#255#255#255#255#255#255#255#255#255#206#173#148#255#255#255#255#255#255
+#255#255#255#222#165'{'#255#255#247#239#255#255#239#239#255#222#165'{'#255
+#255#247#239#255#255#239#231#255#222#165'{'#255#255#231#206#255#198#181#173
+#255'RB9'#255#198#173#156#255#255#255#255#255#255#255#255#255#181#148#132#255
+#255#255#255#255#255#247#239#255#0#0#0#0#247#239#239#255#247#239#239#255#0#0
+#0#0#247#239#239#255#247#247#239#255#0#0#0#0#255#222#206#255#206#189#181#255
+'JB1'#255#198#173#165#255#198#173#165#255#0#0#0#0#189#140's'#255#231#181#148
+#255#214#173#148#255#181#132's'#255#239#189#148#255#0#0#0#0#189#132's'#255
+#198#173#156#255#181#156#140#255#189#132's'#255#206#173#140#255#181#156#140
+#255'RB1'#255#0#0#0#0'JB9'#255'RB1'#255'JB9'#255'RB9'#255'JB1'#255'RB9'#255
+'JB1'#255'JB9'#255'RB1'#255'JB9'#255'RB1'#255'JB9'#255'RB1'#255'RB9'#255'JB1'
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#206#189#173#255#206#189#181#255#206#189#173
+#255#206#189#181#255#206#189#173#255#206#189#181#255#198#173#165#255#198#173
+#156#255#198#173#165#255#198#173#156#255#198#173#165#255#198#165#140#255#181
+#156#140#255#181#156#132#255#181#148#140#255#181#156#140#255#206#189#181#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255'Rcc'
+#255#198#189#173#255#255#255#255#255#239#222#222#255'Z{'#140#255#148#132'{'
+#255'Z{'#140#255#189#198#206#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#247#239#255#255#239#239#255#222#214
+#206#255'J91'#255#206#189#181#255#255#255#255#255'Jcc'#255'c{'#140#255#140
+#156#173#255#132#156#165#255#148#132'{'#255#239#231#222#255#255#255#255#255
+#247#247#239#255#255#255#255#255#247#239#239#255#247#239#231#255#255#239#231
+#255#222#206#198#255'JB1'#255#206#189#173#255#255#255#255#255'RB9'#255'J91'
+#255#239#231#222#255#189#198#206#255#148#132'{'#255#231#222#222#255#247#247
,#239#255#247#189#165#255#247#189#156#255#255#181'{'#255#247#165'{'#255#247
+#165'{'#255#206#189#181#255'JB1'#255#198#173#165#255#255#255#255#255'Rck'#255
+'RB9'#255#206#189#181#255#148#132'{'#255'Rck'#255#255#255#255#255#255#239#239
+#255#247#247#231#255#247#239#239#255#255#247#239#255#247#239#239#255#247#231
+#198#255#206#189#181#255'RB1'#255#198#173#165#255#255#255#255#255#239#231#222
+#255'Rck'#255#181#156#132#255#140#156#173#255'RZc'#255#198#214#222#255#247
+#247#231#255#247#206#189#255#198#165#140#255#181#156#132#255#181#156#132#255
+#181#132's'#255#206#189#181#255'JB1'#255#189#173#156#255#255#247#239#255#16
+'{'#189#255#140#173#198#255#24'B'#206#255#24#132#189#255#24'J'#206#255#24'B'
+#206#255#255#247#239#255#255#222#198#255#247#222#206#255#255#222#206#255#247
+#214#189#255#255#214#189#255#231#189#148#255'J99'#255#198#173#156#255#239#231
+#222#255#24'B'#198#255'J'#181#239#255')'#156#222#255'!J'#206#255#24#132#189
+#255#24'B'#198#255#255#239#239#255#222#198#173#255#198#165#148#255#181#156
+#132#255#181#156#140#255#181#132's'#255#239#189#156#255'JB1'#255#198#165#148
+#255#247#247#239#255#189#198#206#255#24'B'#206#255'!J'#198#255#24'B'#206#255
+'!J'#206#255#198#165#140#255#255#231#206#255#247#222#198#255#247#214#189#255
+#247#214#198#255#255#222#189#255#247#214#189#255#231#181#140#255'JB9'#255#181
+#156#140#255#255#222#198#255#255#222#198#255#222#206#198#255#231#198#173#255
+#222#198#173#255#231#198#181#255#222#198#173#255#239#198#165#255#231#181#156
+#255#231#189#148#255#231#181#148#255#231#173#140#255#231#181#140#255#231#173
+#140#255'RB1'#255#181#156#132#255'Rck'#255'JB1'#255'JB1'#255'RB9'#255'JB1'
+#255'JB1'#255'RB9'#255'JB1'#255'RB1'#255'JB9'#255'RB9'#255'JB1'#255'JB9'#255
+'RB9'#255'JB9'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#132#173#198#255#140#156#165#255#132#156#173#255#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#222#198#173#255#206
+#189#181#255#206#189#173#255#206#189#181#255#140#156#165#255#173#231#239#255
+#173#231#247#255#140#198#214#255'Rcc'#255#198#173#165#255#198#173#156#255#198
+#165#148#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#206#189#173#255#255#255#255#255
+#255#255#255#255#255#255#255#255#132#156#165#255#132#156#173#255#148#132'{'
+#255#140#189#214#255'c{'#140#255#255#247#239#255#231#222#222#255#239#231#222
+#255'RZc'#255#0#0#0#0#0#0#0#0#0#0#0#0#206#189#181#255#255#255#255#255#255#255
+#255#255#140#156#173#255'{'#214#247#255#140#231#255#255'{'#214#247#255'c'#206
+#247#255#140#156#165#255'Zs'#140#255#231#231#222#255#222#206#198#255#181#156
+#132#255#0#0#0#0#0#0#0#0#0#0#0#0#206#189#181#255#255#255#255#255#255#255#255
+#255#132#156#165#255'c{'#140#255'c{'#140#255'c{'#140#255'c{'#140#255'Z{'#140
+#255#140#156#173#255#132#173#189#255#24'B'#206#255#181#156#140#255#0#0#0#0#0
+#0#0#0#0#0#0#0#206#189#173#255#255#255#255#255#255#255#255#255#255#255#255
+#255#247#239#239#255#255#239#239#255#247#247#239#255#239#222#222#255#239#231
+#222#255#140#173#198#255#24'B'#206#255#140#156#165#255#148#132#132#255#0#0#0
+#0#0#0#0#0#0#0#0#0#198#173#156#255#255#255#255#255#255#255#255#255#255#239
+#239#255#247#247#231#255#255#239#239#255#247#239#231#255#231#231#222#255')'
+#148#222#255#24'J'#206#255#140#156#165#255#222#214#198#255'RZk'#255#0#0#0#0#0
+#0#0#0#0#0#0#0#198#173#165#255#255#255#255#255#198#247#255#255#198#214#214
+#255#255#239#231#255#247#239#239#255#239#231#222#255#140#173#189#255#24'B'
+#206#255'Z{'#140#255#255#222#206#255#231#198#181#255'JB1'#255#0#0#0#0#0#0#0#0
+#0#0#0#0#198#173#156#255#247#239#239#255'B'#173#239#255'J'#181#239#255#132
+#173#198#255#198#214#214#255#132#173#198#255#24'B'#206#255'!J'#206#255#255
+#222#198#255#247#222#189#255#198#173#165#255'JB1'#255#0#0#0#0#0#0#0#0#0#0#0#0
+#198#173#156#255#255#247#239#255'!B'#198#255#24'B'#206#255')'#156#222#255')'
+#148#222#255#24'J'#198#255#24'B'#206#255#206#189#173#255#255#222#198#255#222
+#206#198#255#198#173#165#255'JB9'#255#0#0#0#0#0#0#0#0#0#0#0#0#198#173#165#255
+#247#247#239#255#198#214#214#255#24'B'#206#255'!J'#206#255'!B'#206#255#24'J'
+#206#255#140#156#165#255#247#214#181#255#247#206#189#255#222#198#173#255#214
+#173#140#255'RB1'#255#0#0#0#0#0#0#0#0#0#0#0#0#198#173#156#255#255#239#231#255
+#255#247#239#255#239#231#222#255'!B'#206#255#24'J'#206#255'c{'#140#255#222
+#206#198#255#247#206#181#255#222#206#198#255#222#198#181#255#214#173#148#255
+'JB9'#255#0#0#0#0#0#0#0#0#0#0#0#0#198#173#165#255#247#247#239#255#222#206#198
+#255#222#206#198#255#222#206#198#255#140#156#165#255#206#189#181#255#231#189
+#148#255#198#173#165#255#198#173#156#255#214#173#140#255#189#165#148#255'RB1'
+#255#0#0#0#0#0#0#0#0#0#0#0#0#214#173#148#255'R91'#255'JB1'#255'JB1'#255'JB1'
+#255'Rck'#255'RB1'#255'JB9'#255'RB1'#255'JB9'#255'RB1'#255'JB9'#255#0#0#0#0#0
,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#140#189#214#255#140#198#206#255#148#198#214#255
+#140#189#214#255#140#198#214#255#148#198#214#255#140#189#214#255#140#198#206
+#255#148#189#214#255#140#198#214#255#132#173#189#255#132#173#198#255#132#173
+#198#255#132#173#198#255#0#0#0#0#0#0#0#0#148#189#206#255#198#247#255#255#198
+#239#255#255#198#247#255#255#198#247#255#255#198#239#255#255#198#247#255#255
+#198#247#255#255#198#247#255#255#198#247#255#255#206#239#255#255#198#247#255
+#255#206#247#255#255'Z{'#140#255#0#0#0#0#0#0#0#0#140#198#214#255#198#247#255
+#255#173#239#255#255#173#239#247#255#173#239#255#255#173#239#247#255#173#239
+#255#255#173#239#255#255#173#239#255#255#165#239#255#255#173#239#255#255#165
+#239#247#255#173#239#255#255'Z{'#140#255#0#0#0#0#0#0#0#0#132#173#189#255#173
+#239#255#255#173#239#255#255#165#239#255#255#173#239#255#255#165#239#255#255
+#173#239#255#255#165#239#247#255#173#239#255#255#165#239#247#255#173#239#255
+#255#173#239#255#255#173#247#255#255'RZk'#255#0#0#0#0#0#0#0#0#132#173#198#255
+#173#231#239#255#165#239#255#255#173#247#247#255#173#239#255#255#173#247#255
+#255#165#239#255#255#173#239#255#255#173#247#255#255#173#239#255#255#165#239
+#247#255#173#239#255#255#165#239#255#255'Rcc'#255#0#0#0#0#0#0#0#0#132#173#198
+#255#140#231#247#255#140#231#255#255#140#231#255#255#140#231#247#255#140#231
+#255#255#140#231#247#255#140#231#247#255#140#231#255#255#140#231#247#255#140
+#231#255#255#140#231#255#255#140#231#255#255'Rcc'#255#0#0#0#0#0#0#0#0#132#173
+#198#255'k'#198#247#255#140#231#247#255#140#231#255#255#140#222#255#255#140
+#231#247#255#140#231#255#255#140#231#255#255#140#222#247#255#140#231#255#255
+#140#231#247#255#140#231#255#255#140#231#247#255'RZk'#255#0#0#0#0#0#0#0#0#140
+#173#189#255'B'#181#239#255'{'#214#247#255#140#231#255#255#140#231#247#255
+#140#231#255#255#140#222#255#255#140#231#247#255#140#231#255#255#140#231#255
+#255#140#231#255#255#140#231#255#255#140#231#255#255'Rcc'#255#0#0#0#0#0#0#0#0
+#132#173#198#255'J'#173#239#255')'#189#239#255'J'#181#239#255'B'#173#239#255
+')'#156#222#255'k'#206#239#255#140#231#255#255#140#231#247#255#140#222#255
+#255#140#231#247#255#140#231#255#255#140#231#255#255'RZc'#255#0#0#0#0#0#0#0#0
+#132#173#189#255'k'#206#247#255')'#156#222#255')'#189#239#255')'#189#239#255
+')'#156#222#255')'#189#239#255#140#222#255#255#140#231#255#255#140#231#247
+#255#140#231#255#255#140#231#247#255#140#231#255#255'Rck'#255#0#0#0#0#0#0#0#0
+#132#173#198#255'k'#206#247#255'J'#173#239#255')'#156#222#255'1'#189#247#255
+')'#189#239#255')'#156#222#255'{'#214#247#255'{'#214#247#255'{'#214#255#255
+'{'#214#247#255'{'#214#247#255'{'#214#247#255'Rcc'#255#0#0#0#0#0#0#0#0#140
+#173#198#255'{'#214#247#255'k'#206#239#255'J'#181#239#255')'#156#222#255'1'
+#156#231#255')'#156#222#255'J'#181#239#255'{'#214#247#255'k'#206#247#255'{'
+#214#247#255'{'#214#247#255'{'#222#255#255'Rck'#255#0#0#0#0#0#0#0#0#132#173
+#189#255'k'#206#247#255'{'#214#247#255'k'#198#247#255'J'#181#231#255')'#148
+#222#255')'#156#222#255#24#132#189#255')'#156#222#255'J'#173#239#255'J'#181
+#239#255'J'#181#239#255'J'#173#239#255'Rcc'#255#0#0#0#0#0#0#0#0#140#173#198
+#255'Zs'#140#255'c{'#140#255'Z{'#140#255'c{'#140#255'c{'#140#255'Zck'#255'RZ'
+'c'#255'Zck'#255'Rcc'#255'RZk'#255'Rcc'#255'Rcc'#255'Rck'#255#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#140#156#165#255#132#156#165#255#140#156#173#255
+#132#156#165#255#140#156#165#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#156#173#255#173#231#247#255#173#239
+#255#255#173#239#255#255#173#247#255#255#140#231#255#255#132#156#173#255#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#140#156
+#165#255#132#156#165#255#140#156#165#255#132#156#165#255#132#156#165#255#140
+#156#165#255#140#156#165#255#132#156#165#255#140#156#165#255#132#156#173#255
+#132#156#165#255#140#156#173#255#132#156#165#255#132#156#165#255#0#0#0#0#0#0
+#0#0#132#156#173#255#206#247#255#255#198#247#255#255#198#239#255#255#198#247
+#255#255#173#239#255#255#173#239#255#255#173#239#255#255#140#231#255#255#140
+#231#255#255'{'#214#247#255'k'#206#247#255'c'#198#247#255'k'#206#247#255'Zs'
+#140#255#0#0#0#0#132#156#165#255#198#239#255#255#173#239#255#255#173#239#255
+#255#173#239#255#255#165#239#255#255#140#231#255#255#140#231#255#255#140#231
+#255#255'c'#198#239#255'k'#206#247#255'J'#173#239#255'J'#181#239#255')'#156
,#222#255'Z{'#140#255#0#0#0#0#132#156#173#255#198#247#255#255#173#239#255#255
+#165#239#255#255#173#239#255#255#140#231#247#255#140#231#255#255#140#231#247
+#255'{'#214#247#255'k'#206#247#255'c'#198#247#255'J'#181#231#255')'#148#222
+#255#24#132#189#255'Zck'#255#0#0#0#0#140#156#165#255#198#247#255#255#165#239
+#247#255#173#247#255#255#173#239#247#255#140#231#255#255#140#231#255#255'{'
+#214#247#255'c'#206#247#255'k'#198#239#255'J'#181#239#255'J'#181#239#255'1'
+#156#222#255#24#132#189#255'Rcc'#255#0#0#0#0#132#156#165#255#173#239#255#255
+#173#239#255#255#165#239#255#255#140#231#255#255#140#231#247#255'{'#214#247
+#255'k'#198#247#255'k'#206#247#255'J'#173#239#255'J'#181#231#255'J'#173#239
+#255')'#156#222#255#24#132#189#255'RB1'#255#0#0#0#0#140#156#173#255#165#231
+#239#255#173#239#255#255#140#231#247#255#140#231#255#255'{'#214#247#255'c'
+#206#247#255'k'#206#247#255'B'#173#231#255'J'#181#239#255'J'#181#239#255')'
+#148#222#255')'#156#222#255#24#132#189#255'JB9'#255#0#0#0#0#148#132'{'#255
+#173#231#247#255#140#231#255#255#140#231#255#255'{'#214#247#255'k'#198#247
+#255'k'#206#239#255'J'#173#239#255'J'#181#239#255'J'#181#231#255')'#148#222
+#255')'#156#231#255'!'#132#189#255#24#132#189#255'RB1'#255#0#0#0#0'Z{'#140
+#255#173#231#239#255'c'#206#247#255'J'#173#231#255'J'#181#239#255')'#156#222
+#255')'#148#231#255#24#132#181#255#24#132#189#255#24#132#189#255#24#132#189
+#255#24#132#181#255#24#132#189#255#24#132#189#255#0#0#0#255#0#0#0#0'Z{'#140
+#255'cs'#140#255'Rcc'#255'Rck'#255'RB1'#255'RB1'#255'RB1'#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#10'TImageList'#10'ToolImages'#6'Height'#2#12#5'Width'#2#12#4'left'#3#144
+#0#3'top'#2#16#6'Bitmap'#10#142#13#0#0'Li'#6#0#0#0#12#0#0#0#12#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#132#132#132#255#132#132#132#255#132#132#132#255#132#132#132#255
+#132#132#132#255#132#132#132#255#132#132#132#255#132#132#132#255#132#132#132
+#255#132#132#132#255#132#132#132#255#0#0#0#255#132#132#132#255#0#0#0#255#0
+#255#255#255#255#255#255#255#0#255#255#255#255#255#255#255#0#255#255#255#255
+#255#255#255#0#255#255#255#255#255#255#255#0#0#0#255#0#0#0#255#132#132#132
+#255#198#198#198#255#0#0#0#255#0#255#255#255#255#255#255#255#0#255#255#255
+#255#255#255#255#0#255#255#255#255#255#255#255#0#0#0#255#0#132#132#255#0#0#0
+#255#132#132#132#255#0#255#255#255#198#198#198#255#0#0#0#255#0#255#255#255
+#255#255#255#255#0#255#255#255#255#255#255#255#0#0#0#255#0#132#132#255#198
+#198#198#255#0#0#0#255#132#132#132#255#255#255#255#255#255#255#255#255#0#132
+#132#255#0#0#0#255#0#255#255#255#255#255#255#255#0#0#0#255#0#132#132#255#198
+#198#198#255#198#198#198#255#0#0#0#255#132#132#132#255#0#255#255#255#0#132
+#132#255#198#198#198#255#0#132#132#255#0#0#0#255#0#0#0#255#0#132#132#255#198
+#198#198#255#0#132#132#255#198#198#198#255#0#0#0#255#132#132#132#255#0#132
+#132#255#198#198#198#255#198#198#198#255#198#198#198#255#0#132#132#255#0#132
+#132#255#198#198#198#255#198#198#198#255#198#198#198#255#0#132#132#255#0#0#0
+#255#132#132#132#255#198#198#198#255#198#198#198#255#198#198#198#255#198#198
+#198#255#198#198#198#255#198#198#198#255#198#198#198#255#198#198#198#255#198
+#198#198#255#198#198#198#255#0#0#0#255#132#132#132#255#132#132#132#255#132
+#132#132#255#132#132#132#255#132#132#132#255#132#132#132#255#132#132#132#255
+#132#132#132#255#132#132#132#255#132#132#132#255#132#132#132#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#132#132#132#255#132#132#132#255#132#132#132#255#132#132#132#255#132
+#132#132#255#132#132#132#255#132#132#132#255#132#132#132#255#132#132#132#255
+#132#132#132#255#132#132#132#255#0#0#0#255#132#132#132#255#0#0#0#255#0#255
+#255#255#255#255#255#255#0#255#255#255#255#255#255#255#0#255#255#255#255#255
+#255#255#0#255#255#255#255#255#255#255#0#0#0#255#0#0#0#255#132#132#132#255
+#198#198#198#255#0#0#0#255#0#255#255#255#255#255#255#255#0#255#255#255#255
+#255#255#255#0#255#255#255#255#255#255#255#0#0#0#255#0#0#132#255#0#0#0#255
+#132#132#132#255#0#255#255#255#198#198#198#255#0#0#0#255#0#255#255#255#255
+#255#255#255#0#255#255#255#255#255#255#255#0#0#0#255#0#0#132#255#198#198#198
+#255#0#0#0#255#132#132#132#255#255#255#255#255#255#255#255#255#0#0#132#255#0
,#0#0#255#0#0#255#255#0#0#255#255#0#0#0#255#0#0#132#255#198#198#198#255#0#0
+#255#255#0#0#255#255#132#132#132#255#0#255#255#255#0#0#132#255#198#198#198
+#255#0#0#132#255#0#0#255#255#0#0#255#255#0#0#255#255#198#198#198#255#0#0#255
+#255#0#0#255#255#0#0#255#255#132#132#132#255#0#0#132#255#198#198#198#255#198
+#198#198#255#198#198#198#255#0#0#132#255#0#0#255#255#0#0#255#255#0#0#255#255
+#0#0#255#255#0#0#255#255#0#0#0#255#132#132#132#255#198#198#198#255#198#198
+#198#255#198#198#198#255#198#198#198#255#198#198#198#255#198#198#198#255#0#0
+#255#255#0#0#255#255#0#0#255#255#198#198#198#255#0#0#0#255#132#132#132#255
+#132#132#132#255#132#132#132#255#132#132#132#255#132#132#132#255#132#132#132
+#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#255#255#0#0#255#255#0#0
+#255#255#0#0#0#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#255#255#0#0#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255
+#255#0#0#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#132#132#255#198
+#198#198#255#132#132#132#255#132#132#132#255#132#132#132#255#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#132#132#255#255#255#255#255#132#132#132
+#255#198#198#198#255#255#255#255#255#255#255#255#255#132#132#132#255#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#132#132#132#255#255#255#255#255#255#255#255#255#255
+#255#255#255#0#0#0#255#198#198#198#255#132#132#132#255#255#255#255#255#132
+#132#132#255#0#0#0#0#0#0#0#0#0#0#0#0#132#132#132#255#255#255#255#255#255#255
+#255#255#132#132#132#255#132#132#0#255#0#0#0#255#132#132#0#255#198#198#198
+#255#132#132#132#255#0#0#0#0#0#0#0#0#0#0#0#0#132#132#132#255#255#255#255#255
+#255#255#255#255#132#132#132#255#0#0#0#255#255#255#0#255#132#132#132#255#132
+#132#132#255#132#132#132#255#0#0#0#0#198#198#198#255#198#198#198#255#132#132
+#132#255#255#255#255#255#255#255#255#255#132#132#132#255#0#0#0#255#255#255
+#255#255#132#132#132#255#198#198#198#255#132#132#132#255#198#198#198#255#0#0
+#0#255#0#0#0#255#132#132#132#255#255#255#255#255#255#255#255#255#132#132#132
+#255#132#132#0#255#0#0#0#255#132#132#0#255#132#132#132#255#132#132#132#255#0
+#0#0#255#132#132#132#255#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255
+#255#255#132#132#132#255#132#132#132#255#132#132#132#255#0#0#0#255#0#0#0#0
+#132#132#132#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#132#132#132#255#198#198#198#255#132#132#132#255#198#198#198#255#0#0#0
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#132#132#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#198#198#198#255#132
+#132#132#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#132#132#255#198#198#198#255
+#132#132#132#255#198#198#198#255#132#132#132#255#198#198#198#255#132#132#132
+#255#132#132#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132
+#132#132#255#198#198#198#255#132#132#132#255#132#132#132#255#132#132#132#255
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#132#132#255#255#255#255
+#255#132#132#132#255#198#198#198#255#255#255#255#255#255#255#255#255#132#132
+#132#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#132#132#255#255#255#255#255#255
+#255#255#255#255#255#255#255#0#0#0#255#198#198#198#255#132#132#132#255#255
+#255#255#255#132#132#132#255#0#0#0#0#0#0#0#0#0#0#0#0#132#132#132#255#255#255
+#255#255#255#255#255#255#132#132#132#255#132#132#0#255#0#0#0#255#132#132#0
+#255#198#198#198#255#132#132#132#255#0#0#0#0#0#0#0#0#0#0#0#0#132#132#132#255
+#255#255#255#255#255#255#255#255#132#132#132#255#0#0#0#255#255#255#0#255#132
+#132#132#255#132#132#132#255#132#132#132#255#0#0#0#0#198#198#198#255#198#198
+#198#255#132#132#132#255#255#255#255#255#255#255#255#255#132#132#132#255#0#0
+#255#255#0#0#255#255#0#0#255#255#0#0#255#255#132#132#132#255#198#198#198#255
+#0#0#0#255#0#0#0#255#132#132#132#255#255#255#255#255#255#255#255#255#0#0#255
+#255#255#255#255#255#0#0#255#255#0#0#255#255#255#255#255#255#0#0#255#255#0#0
+#0#255#132#132#132#255#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#0#0#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#0#0#255#255
+#132#132#132#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#255#255#0#0
+#255#255#255#255#255#255#255#255#255#255#0#0#255#255#0#0#255#255#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#132#132#255#0#0#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#0#0#255#255#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#132#132#132#255#255#255#255#255#0#0#255#255#255#255#255#255#0#0
+#255#255#0#0#255#255#255#255#255#255#0#0#255#255#0#0#0#0#0#0#0#0#0#0#0#0#132
+#132#132#255#198#198#198#255#132#132#132#255#198#198#198#255#0#0#255#255#0#0
+#255#255#0#0#255#255#0#0#255#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#132#132#255#132#132#132#255#132#132#132#255#132#132#132#255#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#132#255#255#255#255#255#255
,#255#255#255#255#255#255#255#198#198#198#255#132#132#132#255#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#132#132#132#255#198#198
+#198#255#0#132#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#132#132#132#255#198#198#198#255#255#255#255#255#255#255#255#255#0#132
+#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0
+#255#0#0#0#255#132#132#132#255#198#198#198#255#0#0#0#255#0#0#0#255#0#0#0#0#0
+#0#0#255#0#0#0#0#198#198#198#255#0#0#0#255#0#0#0#255#132#132#132#255#198#198
+#198#255#255#255#255#255#255#255#255#255#132#132#132#255#0#0#0#255#0#0#0#255
+#0#0#0#255#198#198#198#255#0#0#0#0#0#0#0#255#255#255#255#255#0#0#0#255#0#0#0
+#255#132#132#132#255#198#198#198#255#0#0#0#255#0#0#0#255#255#255#255#255#0#0
+#0#255#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#132#132#132#255#198#198#198
+#255#198#198#198#255#132#132#132#255#132#132#132#255#0#0#0#255#255#255#255
+#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#255#255#255#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#132#132#132#255#132#132#132#255#132#132#132#255#132#132
+#132#255#132#132#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#198#198#198#255#132#132#132#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#132#132#132#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#132#132#255#132#132#132#255#132#132#132#255#132#132#132
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#132#132#255
+#255#255#255#255#255#255#255#255#255#255#255#255#198#198#198#255#132#132#132
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#132
+#132#132#255#198#198#198#255#0#132#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#132#132#132#255#198#198#198#255#255#255#255#255#255
+#255#255#255#0#132#132#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#255#0#0#0#0#0#0#0#255#0#0#0#255#132#132#132#255#198#198#198#255#0#0#0#255#0
+#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0#198#198#198#255#0#0#0#255#0#0#0#255#132
+#132#132#255#198#198#198#255#255#255#255#255#255#255#255#255#0#0#255#255#0#0
+#255#255#0#0#255#255#0#0#255#255#198#198#198#255#0#0#0#0#0#0#0#255#255#255
+#255#255#0#0#0#255#0#0#0#255#132#132#132#255#0#0#255#255#255#255#255#255#0#0
+#255#255#0#0#255#255#255#255#255#255#0#0#255#255#0#0#0#0#0#0#0#255#255#255
+#255#255#132#132#132#255#198#198#198#255#198#198#198#255#0#0#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#0#0#255#255#0#0#0#0
+#0#0#0#0#0#0#0#255#255#255#255#255#0#0#0#255#0#0#0#255#0#0#255#255#0#0#255
+#255#255#255#255#255#255#255#255#255#0#0#255#255#0#0#255#255#0#0#0#0#0#0#0#0
+#0#0#0#0#132#132#132#255#132#132#132#255#132#132#132#255#0#0#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#0#0#255#255#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#255#255#255#255#255#255#0#0
+#255#255#0#0#255#255#255#255#255#255#0#0#255#255#0#0#0#0#0#0#0#0#198#198#198
+#255#132#132#132#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#255#255#0#0#255#255#0
+#0#255#255#0#0#255#255#0#0#0#0#0#0#18'TOpenPictureDialog'#18'OpenPictureDial'
+'og1'#5'Title'#6#18'Open existing file'#4'left'#3#136#0#3'top'#2'@'#0#0#0
]);

View File

@ -0,0 +1,482 @@
// $Id: JvNavPaneDemoMainForm.pas 10610 2006-05-19 13:35:08Z elahn $
unit JvNavPaneDemoMainForm;
{$mode objfpc}{$H+}
interface
uses
LCLIntf, LMessages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, {JvOutlookBar,} ComCtrls, CheckLst, //JvComponent,
JvNavigationPane, ImgList, Menus, {JvPageList, JclWin32, JvExControls,} ExtCtrls,
{JvExExtCtrls,} ExtDlgs, LResources;
type
TJvNavPaneDemoMainFrm = class(TForm)
PopupMenu1: TPopupMenu;
LargeImages: TImageList;
HideAll1: TMenuItem;
ShowAll1: TMenuItem;
N1: TMenuItem;
Dontallowresize1: TMenuItem;
ChangeFont1: TMenuItem;
SmallImages: TImageList;
Colors1: TMenuItem;
Standard1: TMenuItem;
Blue1: TMenuItem;
Silver1: TMenuItem;
Olive1: TMenuItem;
N2: TMenuItem;
ShowToolPanel1: TMenuItem;
ToolImages: TImageList;
ShowCloseButton1: TMenuItem;
N3: TMenuItem;
BackgroundImage1: TMenuItem;
OpenPictureDialog1: TOpenPictureDialog;
procedure FormCreate(Sender: TObject);
procedure Dontallowresize1Click(Sender: TObject);
procedure HideAll1Click(Sender: TObject);
procedure ShowAll1Click(Sender: TObject);
procedure ChangeFont1Click(Sender: TObject);
procedure SchemaClick(Sender: TObject);
procedure PopupMenu1Popup(Sender: TObject);
procedure ShowToolPanel1Click(Sender: TObject);
procedure ShowCloseButton1Click(Sender: TObject);
procedure BackgroundImage1Click(Sender: TObject);
private
JvNavPaneStyleManager1: TJvNavPaneStyleManager;
JvOutlookSplitter1: TJvOutlookSplitter;
{ Private declarations }
procedure DoToolMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: integer);
procedure DoToolMouseMove(Sender: TObject; Shift: TShiftState; X, Y: integer);
procedure DoToolPanelClose(Sender: TObject);
procedure DoToolButtonClick(Sender: TObject; Index: integer);
procedure DoToolEndDock(Sender, Target: TObject; X, Y: Integer);
public
{ Public declarations }
NP: TJvNavigationPane;
NT: TJvNavPaneToolPanel;
end;
var
JvNavPaneDemoMainFrm: TJvNavPaneDemoMainFrm;
implementation
uses
CommCtrl;
procedure TJvNavPaneDemoMainFrm.FormCreate(Sender: TObject);
var
Page: TJvNavPanelPage;
N: TTreeNode;
R: TRect;
i: integer;
tv: TTreeView;
dummy: integer;
begin
//Self.Height := 600;
//Self.Width := 800;
(*
object JvNavPaneStyleManager1: TJvNavPaneStyleManager
Theme = nptXPOlive
Left = 32
Top = 50
end
object JvOutlookSplitter1: TJvOutlookSplitter
Left = 0
Top = 0
Width = 7
Height = 434
Cursor = crSizeWE
Align = alLeft
ColorFrom = 7703937
ColorTo = 3823693
StyleManager = JvNavPaneStyleManager1
ParentStyleManager = False
end
*)
JvNavPaneStyleManager1 := TJvNavPaneStyleManager.Create(Self);
JvNavPaneStyleManager1.Theme := nptXPOlive;
JvOutlookSplitter1 := TJvOutlookSplitter.Create(Self);
JvOutlookSplitter1.Parent := Self;
JvOutlookSplitter1.Align := alLeft;
JvOutlookSplitter1.ColorFrom := TColor(7703937);
JvOutlookSplitter1.ColorTo := TColor(3823693);
JvOutlookSplitter1.StyleManager := JvNavPaneStyleManager1;
JvOutlookSplitter1.ParentStyleManager := False;
JvNavPaneStyleManager1.Theme := nptCustom;
// this is how to create a NavPane at run-time
// also shows how to create and insert pages as well as controls on pages
NP := TJvNavigationPane.Create(Self);
NP.Parent := Self;
NP.Cursor := crHandPoint;
NP.Width := 220;
// NP.BorderWidth := 2;
NP.Align := alLeft;
JvOutlookSplitter1.Left := 225;
JvOutlookSplitter1.MinSize := 220;
NP.DropDownMenu := PopupMenu1;
NP.SmallImages := SmallImages;
NP.LargeImages := LargeImages;
NP.AutoHeaders := True;
NP.StyleManager := JvNavPaneStyleManager1;
Page := TJvNavPanelPage.Create(Self);
Page.Caption := '&Mail';
Page.ImageIndex := 0;
Page.PageList := NP;
with TJvNavPanelDivider.Create(Self) do
begin
Caption := 'Favorite Folders';
Parent := Page;
Top := 100;
Align := alTop;
Enabled := false;
Cursor := crDefault;
StyleManager := JvNavPaneStyleManager1;
end;
tv := TTreeView.Create(Self);
with tv do
begin
Parent := Page;
Top := 200;
Align := alTop;
Font.Style := [];
BorderStyle := bsNone;
Items.Add(nil, 'Inbox');
Items.Add(nil, 'Unread Mail');
Items.Add(nil, 'For Follow Up [4]');
Items.Add(nil, 'Sent Items');
Height := 100;
end;
with TJvNavPanelDivider.Create(Self) do
begin
Caption := 'All Mail Folders';
Parent := Page;
Top := tv.Top + tv.Height; // 201; // old = 100
Align := alTop;
Cursor := crSizeNS;
StyleManager := JvNavPaneStyleManager1;
end;
with TTreeView.Create(Self) do
begin
Parent := Page;
Align := alClient;
BorderStyle := bsNone;
Font.Style := [];
N := Items.Add(nil, 'Mailbox - Chris Gray');
Items.AddChild(N, 'Deleted Items');
Items.AddChild(N, 'Drafts');
Items.AddChild(N, 'Inbox');
Items.AddChild(N, 'Junk E-mail');
Items.AddChild(N, 'Outbox');
Items.AddChild(N, 'Sent Items');
N := Items.AddChild(N, 'Search Folders');
Items.AddChild(N, 'For Follow Up [4]');
Items.AddChild(N, 'Large Mail');
Items.AddChild(N, 'Unread Mail');
FullExpand;
end;
Page := TJvNavPanelPage.Create(Self);
Page.Caption := '&Calendar';
Page.ImageIndex := 1;
Page.PageList := NP;
//TODO: replace
(*
// NB! TMonthCalendar messes up the form when you size the form smaller than one calendar width
with TMonthCalendar.Create(Self) do
begin
Parent := Page;
Align := alTop;
AutoSize := true;
AutoSize := false;
Date := SysUtils.Date;
MonthCal_GetMinReqRect(Handle, R);
end;
Constraints.MinHeight := R.Bottom - R.Top + 12;
Constraints.MinWidth := R.Right - R.Left + 12;
*)
with TJvNavPanelDivider.Create(Self) do
begin
Caption := 'My Calendars';
Parent := Page;
Top := 1500;
Align := alTop;
Cursor := crDefault;
Enabled := false;
StyleManager := JvNavPaneStyleManager1;
end;
with TCheckListBox.Create(Self) do
begin
Parent := Page;
Checked[Items.Add('Calendar')] := true;
Items.Add('Project Schedule');
Top := 1500;
Height := 32;
Align := alTop;
end;
with TJvNavPanelDivider.Create(Self) do
begin
Caption := 'Other Calendars';
Parent := Page;
Top := 1500;
Align := alTop;
Cursor := crSizeNS;
StyleManager := JvNavPaneStyleManager1;
end;
with TCheckListBox.Create(Self) do
begin
Parent := Page;
Checked[Items.Add('Alan Chong')] := Random(4) = 1;
Checked[Items.Add('Andreas Hausladen')] := Random(4) = 1;
Checked[Items.Add('Andr� Snepvangers')] := Random(4) = 1;
Checked[Items.Add('Michael Beck')] := Random(4) = 1;
Checked[Items.Add('Leroy Casterline')] := Random(4) = 1;
Checked[Items.Add('Chris Latta')] := Random(4) = 1;
Checked[Items.Add('Erwin Molendijk')] := Random(4) = 1;
Checked[Items.Add('James Lan')] := Random(4) = 1;
Checked[Items.Add('Ignacio Vazquez')] := Random(4) = 1;
Checked[Items.Add('Marcel Bestebroer')] := Random(4) = 1;
Checked[Items.Add('Jens Fudickar')] := Random(4) = 1;
Checked[Items.Add('Jose Perez')] := Random(4) = 1;
Checked[Items.Add('Marc Hoffmann')] := Random(4) = 1;
Checked[Items.Add('Fernando Silva')] := Random(4) = 1;
Checked[Items.Add('Robert Marquardt')] := Random(4) = 1;
Checked[Items.Add('Matthias Thoma')] := Random(4) = 1;
Checked[Items.Add('Olivier Sannier')] := Random(4) = 1;
Checked[Items.Add('Oliver Giesen')] := Random(4) = 1;
Checked[Items.Add('Dmitry Osinovsky')] := Random(4) = 1;
Checked[Items.Add('Peter Thornqvist')] := Random(4) = 1;
Checked[Items.Add('henri gourvest')] := Random(4) = 1;
Checked[Items.Add('Rob den Braasem')] := Random(4) = 1;
Checked[Items.Add('Remko Bonte')] := Random(4) = 1;
Checked[Items.Add('Christian Vogt')] := Random(4) = 1;
Checked[Items.Add('Warren Postma')] := Random(4) = 1;
Top := 1500;
Align := alClient;
end;
Page := TJvNavPanelPage.Create(Self);
Page.Caption := 'C&ontacts';
Page.ImageIndex := 2;
Page.PageList := NP;
with TListBox.Create(Self) do
begin
Parent := Page;
Align := alClient;
Items.Add('Alan Chong');
Items.Add('Andreas Hausladen');
Items.Add('Andr� Snepvangers');
Items.Add('Michael Beck');
Items.Add('Leroy Casterline');
Items.Add('Chris Latta');
Items.Add('Erwin Molendijk');
Items.Add('James Lan');
Items.Add('Ignacio Vazquez');
Items.Add('Marcel Bestebroer');
Items.Add('Jens Fudickar');
Items.Add('Jose Perez');
Items.Add('Marc Hoffmann');
Items.Add('Fernando Silva');
Items.Add('Robert Marquardt');
Items.Add('Matthias Thoma');
Items.Add('Olivier Sannier');
Items.Add('Oliver Giesen');
Items.Add('Dmitry Osinovsky');
Items.Add('Peter Thornqvist');
Items.Add('henri gourvest');
Items.Add('Rob den Braasem');
Items.Add('Remko Bonte');
Items.Add('Christian Vogt');
Items.Add('Warren Postma');
end;
Page := TJvNavPanelPage.Create(Self);
Page.Caption := '&Tasks';
Page.ImageIndex := 3;
Page.PageList := NP;
Page := TJvNavPanelPage.Create(Self);
Page.Caption := '&Notes';
Page.ImageIndex := 4;
Page.PageList := NP;
Page := TJvNavPanelPage.Create(Self);
Page.Caption := '&Folder List';
Page.ImageIndex := 5;
Page.PageList := NP;
{ with TJvOutlookSplitter.Create(Self) do
begin
Align := alNone;
Parent := Self;
Left := NP.Width + 100;
Align := alLeft;
Width := 7;
Cursor := crSizeWE;
end;
}
NP.ActivePageIndex := 0;
NT := TJvNavPaneToolPanel.Create(Self);
NT.DragKind := dkDock;
// NT.DragMode := dmAutomatic;
NT.Parent := Self;
NT.Align := alClient;
NT.Caption := 'Sample Tool Panel';
NT.StyleManager := JvNavPaneStyleManager1;
NT.Images := ToolImages;
NT.DropDownMenu := PopupMenu1;
for i := 0 to ToolImages.Count - 1 do
NT.Buttons.Add.ImageIndex := i;
NT.OnButtonClick := @DoToolButtonClick;
NT.OnMouseDown := @DoToolMouseDown;
NT.OnMouseMove := @DoToolMouseMove;
NT.OnEndDock := @DoToolEndDock;
NT.CloseButton := false;
NT.OnClose := @DoToolPanelClose;
// now, set the real start theme:
JvNavPaneStyleManager1.Theme := nptStandard;
// SESS
NT.ShowHint := true;
NT.Hint := 'Hello world !!';
end;
procedure TJvNavPaneDemoMainFrm.Dontallowresize1Click(Sender: TObject);
begin
Dontallowresize1.Checked := not Dontallowresize1.Checked;
NP.Resizable := not Dontallowresize1.Checked;
end;
procedure TJvNavPaneDemoMainFrm.HideAll1Click(Sender: TObject);
begin
NP.MaximizedCount := 0;
end;
procedure TJvNavPaneDemoMainFrm.ShowAll1Click(Sender: TObject);
begin
NP.MaximizedCount := NP.PageCount;
end;
procedure TJvNavPaneDemoMainFrm.ChangeFont1Click(Sender: TObject);
var
FD: TFontDialog;
begin
FD := TFontDialog.Create(nil);
try
FD.Font := NP.NavPanelFont;
if FD.Execute then
NP.NavPanelFont := FD.Font;
finally
FD.Free;
end;
end;
procedure TJvNavPaneDemoMainFrm.SchemaClick(Sender: TObject);
begin
JvNavPaneStyleManager1.Theme := TJvNavPanelTheme((Sender as TMenuItem).Tag);
(Sender as TMenuItem).Checked := true;
end;
procedure TJvNavPaneDemoMainFrm.DoToolPanelClose(Sender: TObject);
begin
if MessageDlg('Close this window?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
JvOutlookSplitter1.Visible := False;
NT.Visible := False;
NP.Align := alClient;
end;
end;
procedure TJvNavPaneDemoMainFrm.PopupMenu1Popup(Sender: TObject);
begin
ShowToolPanel1.Enabled := not NT.Visible;
ShowCloseButton1.Checked := NT.CloseButton;
end;
procedure TJvNavPaneDemoMainFrm.ShowToolPanel1Click(Sender: TObject);
begin
NP.Align := alLeft;
NP.Width := 220;
JvOutlookSplitter1.Visible := True;
JvOutlookSplitter1.Left := 225;
NT.Visible := True;
end;
procedure TJvNavPaneDemoMainFrm.DoToolButtonClick(Sender: TObject; Index: integer);
begin
ShowMessageFmt('You clicked button %d ', [Index]);
end;
procedure TJvNavPaneDemoMainFrm.ShowCloseButton1Click(Sender: TObject);
begin
ShowCloseButton1.Checked := not ShowCloseButton1.Checked;
NT.CloseButton := ShowCloseButton1.Checked;
end;
type
THackForm = class(TCustomForm);
procedure TJvNavPaneDemoMainFrm.DoToolEndDock(Sender, Target: TObject; X, Y: Integer);
begin
if (Target is TCustomForm) and (Target <> Self) then
begin
TCustomForm(Target).BorderStyle := bsSizeable;
//TODO:
//SetWindowLong(TCustomForm(Target).Handle, GWL_STYLE, GetWindowLong(TCustomForm(Target).Handle, GWL_STYLE) and not WS_CAPTION);
TCustomForm(Target).Width := TCustomForm(Target).Width + 1;
TCustomForm(Target).Width := TCustomForm(Target).Width - 1;
end
else
NT.Align := alClient;
end;
procedure TJvNavPaneDemoMainFrm.DoToolMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: integer);
begin
if phtGrabber in NT.GetHitTestInfoAt(X, Y) then
NT.BeginDrag(false);
end;
procedure TJvNavPaneDemoMainFrm.DoToolMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: integer);
begin
if phtGrabber in NT.GetHitTestInfoAt(X, Y) then
NT.Cursor := crSize
else
NT.Cursor := crDefault;
end;
procedure TJvNavPaneDemoMainFrm.BackgroundImage1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
NP.Background.Picture.LoadFromFile(OpenPictureDialog1.Filename);
NP.Background.Tile := True;
NT.Background.Picture.LoadFromFile(OpenPictureDialog1.Filename);
NT.Background.Tile := True;
end;
end;
initialization
{$i JvNavPaneDemoMainForm.lrs}
{$i JvNavPaneDemoMainForm.lrs}
{$i JvNavPaneDemoMainForm.lrs}
end.

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@ -0,0 +1,71 @@
<?xml version="1.0"?>
<CONFIG>
<Package Version="2">
<PathDelim Value="\"/>
<Name Value="JvCoreLaz"/>
<Author Value="Sergio Samayoa"/>
<CompilerOptions>
<Version Value="5"/>
<PathDelim Value="\"/>
<SearchPaths>
<IncludeFiles Value="..\resource\"/>
<OtherUnitFiles Value="..\run\"/>
<UnitOutputDirectory Value="..\lib\$(TargetCPU)-$(TargetOS)\"/>
</SearchPaths>
<CodeGeneration>
<Generate Value="Faster"/>
</CodeGeneration>
<Other>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Description Value="JVCL Core Components"/>
<Version Major="1"/>
<Files Count="7">
<Item1>
<Filename Value="..\run\JvTypes.pas"/>
<UnitName Value="JvTypes"/>
</Item1>
<Item2>
<Filename Value="..\run\JvComponent.pas"/>
<UnitName Value="JvComponent"/>
</Item2>
<Item3>
<Filename Value="..\run\JvConsts.pas"/>
<UnitName Value="JvConsts"/>
</Item3>
<Item4>
<Filename Value="..\run\JvExControls.pas"/>
<UnitName Value="JvExControls"/>
</Item4>
<Item5>
<Filename Value="..\run\JvExExtCtrls.pas"/>
<UnitName Value="JvExExtCtrls"/>
</Item5>
<Item6>
<Filename Value="..\run\JvJCLUtils.pas"/>
<UnitName Value="JvJCLUtils"/>
</Item6>
<Item7>
<Filename Value="..\run\JvJVCLUtils.pas"/>
<UnitName Value="JvJVCLUtils"/>
</Item7>
</Files>
<RequiredPkgs Count="2">
<Item1>
<PackageName Value="LCL"/>
</Item1>
<Item2>
<PackageName Value="FCL"/>
<MinVersion Major="1" Valid="True"/>
</Item2>
</RequiredPkgs>
<UsageOptions>
<UnitPath Value="$(PkgOutDir)\"/>
</UsageOptions>
<PublishOptions>
<Version Value="2"/>
<IgnoreBinaries Value="False"/>
</PublishOptions>
</Package>
</CONFIG>

View File

@ -0,0 +1,15 @@
{ This file was automatically created by Lazarus. Do not edit!
This source is only used to compile and install the package.
}
unit JvCoreLaz;
interface
uses
JvTypes, JvComponent, JvConsts, JvExControls, JvExExtCtrls, JvJCLUtils,
JvJVCLUtils;
implementation
end.

View File

@ -0,0 +1,63 @@
<?xml version="1.0"?>
<CONFIG>
<Package Version="2">
<PathDelim Value="\"/>
<Name Value="JvXPBarLaz"/>
<Author Value="Sergio Samayoa"/>
<CompilerOptions>
<Version Value="5"/>
<PathDelim Value="\"/>
<SearchPaths>
<IncludeFiles Value="..\resource\"/>
<OtherUnitFiles Value="..\run\"/>
<UnitOutputDirectory Value="..\lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<CodeGeneration>
<Generate Value="Faster"/>
</CodeGeneration>
<Other>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Description Value="JvXPBar (JVCL) conversion for Lazarus version 1.0
"/>
<License Value="As JVCL."/>
<Version Major="1"/>
<Files Count="4">
<Item1>
<Filename Value="..\run\JvXPCoreUtils.pas"/>
<UnitName Value="JvXPCoreUtils"/>
</Item1>
<Item2>
<Filename Value="..\run\JvXPBar.pas"/>
<UnitName Value="JvXPBar"/>
</Item2>
<Item3>
<Filename Value="..\run\JvXPCore.pas"/>
<UnitName Value="JvXPCore"/>
</Item3>
<Item4>
<Filename Value="JvXPBarReg.pp"/>
<HasRegisterProc Value="True"/>
<UnitName Value="JvXPBarReg"/>
</Item4>
</Files>
<Type Value="RunAndDesignTime"/>
<RequiredPkgs Count="2">
<Item1>
<PackageName Value="FCL"/>
<MinVersion Major="1" Valid="True"/>
</Item1>
<Item2>
<PackageName Value="LCL"/>
</Item2>
</RequiredPkgs>
<UsageOptions>
<UnitPath Value="$(PkgOutDir)\"/>
</UsageOptions>
<PublishOptions>
<Version Value="2"/>
<IgnoreBinaries Value="False"/>
</PublishOptions>
</Package>
</CONFIG>

View File

@ -0,0 +1,79 @@
LazarusResources.Add('TJVXPBAR','BMP',[
'BM'#246#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#24#0#0#0#24#0#0#0#1#0#24#0#0#0#0#0
+#192#6#0#0#18#11#0#0#18#11#0#0#0#0#0#0#0#0#0#0#192#0#224#0#224#192#0#224#192
+#0#224#192#0#224#192#0#224#192#0#224#192#0#224#192#0#224#192#0#224#192#0#224
+#192#0#224#192#0#224#192#0#224#160#0#224#160#0#224#160#255#255#0#255#0#0#255
+#0#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0#0#0#224#192#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#224#192#0#0#0#0#0#0#0#0#0#0#224#192#0#224#160#0
+#0#0#255#255#0#255#0#0#255#0#0#0#255#255#0#255#255#255#0#0#255#0#0#255#0#0#0
+#224#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192#192
+#192#192#192#192#192#192#192#0#224#192#0#0#0#0#224#192#0#224#192#0#0#0#0#224
+#192#0#224#160#255#255#0#255#0#0#0#255#255#255#0#0#255#0#0#0#255#255#255#0#0
+#255#0#0#0#224#224#128#128#128#128#128#128#128#128#128#128#128#128#128#128
+#128#128#128#128#128#128#128#128#128#128#0#224#192#0#0#0#0#224#192#0#224#192
+#0#0#0#0#224#192#0#224#192#255#255#0#255#0#0#0#255#255#255#0#0#255#0#0#0#255
+#255#255#0#0#255#0#0#0#224#224#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#224#192#0#0#0#0#0#0#0#0#0#0#224#192#0#224#192#0#0#0#255#255#0#255#0#0
+#255#0#0#255#0#0#255#0#0#0#255#255#255#0#0#255#0#0#0#224#224#0#224#224#0#224
+#224#0#224#192#0#224#192#0#224#192#0#224#192#0#224#192#0#224#192#0#224#192#0
+#224#192#0#224#192#0#224#192#0#224#192#0#224#192#0#224#192#255#255#0#255#0#0
+#255#0#0#255#0#0#255#0#0#0#255#255#255#0#0#255#0#0#0#224#224#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#255#255#0#255#0#0#255#0#0#255#0#0#255#0#0#0#255#255#255#0#0#255#0#0#0#224
+#224#0#0#0#255#255#255#128#128#128#128#128#128#128#128#128#128#128#128#128
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
+#128#128#128#128#128#128#128#255#255#0#255#0#0#255#0#0#255#0#0#255#0#0#255#0
+#0#255#0#0#255#0#0#0#224#224#0#0#0#255#255#255#247#223#214#247#223#214#247
+#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223
+#214#247#223#214#247#223#214#247#223#214#247#223#214#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#0#224#224#0#0#0#255
+#255#255#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223
+#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214
+#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#128
+#128#128#0#0#0#0#224#160#0#224#224#0#0#0#255#255#255#247#223#214#247#223#214
+#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247
+#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223
+#214#247#223#214#247#223#214#247#223#214#128#128#128#0#0#0#0#224#160#0#224
+#224#0#0#0#255#255#255#247#223#214#247#223#214#247#223#214#247#223#214#247
+#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223
+#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214
+#247#223#214#128#128#128#0#0#0#0#224#160#0#224#224#0#0#0#255#255#255#247#223
+#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214
+#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247
+#223#214#247#223#214#247#223#214#247#223#214#247#223#214#128#128#128#0#0#0#0
+#224#192#0#224#224#0#0#0#255#255#255#247#223#214#247#223#214#247#223#214#247
+#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223
+#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214
+#247#223#214#247#223#214#128#128#128#0#0#0#0#224#192#0#224#224#0#0#0#255#255
+#255#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214
+#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247
+#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#128#128
+#128#0#0#0#0#224#192#0#224#224#0#0#0#255#255#255#247#223#214#247#223#214#247
+#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223
+#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214#247#223#214
+#247#223#214#247#223#214#247#223#214#128#128#128#0#0#0#0#224#192#0#224#224#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#224#192#0#224#224#0
+#0#0#255#255#255#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228
+#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228
+#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'#128#128#128#0
+#0#0#0#224#192#0#224#224#0#0#0#255#255#255#228#167'~'#228#167'~'#228#167'~'
+#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'
+#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'#0#0#0#228#167'~'#228
+#167'~'#128#128#128#0#0#0#0#224#192#0#224#224#0#0#0#255#255#255#228#167'~'
+#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'
+#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'#0#0#0#0#0
,#0#0#0#0#228#167'~'#128#128#128#0#0#0#0#224#192#0#224#224#0#0#0#255#255#255
+#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'
+#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'#228#167'~'
+#228#167'~'#228#167'~'#228#167'~'#228#167'~'#128#128#128#0#0#0#0#224#192#0
+#192#224#0#224#224#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#0#0#0#0#224#192#0#224#192#0#192#224#0#192#224#0#224#224#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#224#192#0#224#192#0#224#192#0#192#224#0#192#224#0
+#192#224#0#224#224#0#224#224#0#224#224#0#224#224#0#224#224#0#224#224#0#224
+#224#0#224#224#0#224#224#0#224#224#0#224#224#0#224#224#0#224#224#0#224#224#0
+#224#224#0#224#224#0#224#224#0#224#224#0#224#192#0#224#192#0#224#192
]);

View File

@ -0,0 +1,21 @@
{ This file was automatically created by Lazarus. Do not edit!
This source is only used to compile and install the package.
}
unit JvXPBarLaz;
interface
uses
JvXPCoreUtils, JvXPBar, JvXPCore, JvXPBarReg, LazarusPackageIntf;
implementation
procedure Register;
begin
RegisterUnit('JvXPBarReg', @JvXPBarReg.Register);
end;
initialization
RegisterPackage('JvXPBarLaz', @Register);
end.

View File

@ -0,0 +1,24 @@
unit JvXPBarReg;
{$mode objfpc}{$H+}
interface
uses
Classes, LResources, SysUtils;
procedure Register;
implementation
uses JvXPBar;
procedure Register;
begin
RegisterComponents('JvXP',[TJvXPBar]);
end;
initialization
{$I JvXPBarLaz.lrs}
end.

View File

@ -0,0 +1,254 @@
LazarusResources.Add('JVXPCUSTOMWINXPBARCOLLAPSE0','BMP',[
'BM&'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#18#0#0#0#18#0#0#0#1#0#24#0#0#0#0#0#240#3
+#0#0#195#14#0#0#195#14#0#0#0#0#0#0#0#0#0#0#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#165'8'#0#165'8'#0#255#0#255#255#0
+#255#255#0#255#165'8'#0#165'8'#0#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#165'8'#0#165'8'#0#255#0#255#165'8'#0#165'8'#0#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#165'8'#0#165'8'#0#165'8'#0#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0
+#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#165'8'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#165'8'#0#165'8'#0#255#0#255#255#0#255#255#0#255#165'8'#0#165'8'#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#165'8'#0#165'8'#0#255#0
+#255#165'8'#0#165'8'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#165'8'#0#165'8'#0#165'8'#0#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#165'8'#0#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#0#0
]);
LazarusResources.Add('JVXPCUSTOMWINXPBARCOLLAPSE1','BMP',[
'BM&'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#18#0#0#0#18#0#0#0#1#0#24#0#0#0#0#0#240#3
+#0#0#195#14#0#0#195#14#0#0#0#0#0#0#0#0#0#0#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#165'8'#0#165'8'#0#255#0#255#255#0
+#255#255#0#255#165'8'#0#165'8'#1#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#165'8'#0#165'8'#0#255#0#255#165'8'#0#165'8'#0#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#165'8'#0#165'8'#0#165'8'#0#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0
+#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#165'8'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#165'8'#0#165'8'#0#255#0#255#255#0#255#255#0#255#165'8'#0#165'8'#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#165'8'#0#165'8'#0#255#0
+#255#165'8'#0#165'8'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#165'8'#0#165'8'#0#165'8'#0#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#165'8'#0#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#0#0
]);
LazarusResources.Add('JVXPCUSTOMWINXPBARCOLLAPSE2','BMP',[
'BM&'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#18#0#0#0#18#0#0#0#1#0#24#0#0#0#0#0#240#3
+#0#0#195#14#0#0#195#14#0#0#0#0#0#0#0#0#0#0#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#165'8'#0#165'8'#0#255#0#255#255#0#255#255#0#255#165'8'#0#165
+'8'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#165'8'#0#165'8'#0#255
+#0#255#165'8'#0#165'8'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#165'8'#0#165'8'#0#165'8'#0#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#165'8'#0#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0
+#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#165'8'#0#165
+'8'#0#255#0#255#255#0#255#255#0#255#165'8'#0#165'8'#0#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#165'8'#0#165'8'#0#255#0#255#165'8'#0#165'8'#0#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#165'8'#0#165
+'8'#0#165'8'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#165'8'#0#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0
+#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#0#0
]);
LazarusResources.Add('JVXPCUSTOMWINXPBAREXPAND0','BMP',[
'BM&'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#18#0#0#0#18#0#0#0#1#0#24#0#0#0#0#0#240#3
+#0#0#195#14#0#0#195#14#0#0#0#0#0#0#0#0#0#0#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#168'6'#8#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#165'8'#0#165'8'#0#165
+'8'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#165'8'#0#165'8'#0#255#0#255#165'8'#0#165'8'#0#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#173'3'#24#166'8'#2#255#0#255#255#0#255#255#0#255#165'8'
+#0#165'8'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#165'8'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#165'8'#0#165'8'#0#165'8'#0#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#166'7'#3#165'8'#0#255#0#255#165
+'8'#0#165'8'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#165'8'#0#182
+'./'#255#0#255#255#0#255#255#0#255#169'6'#11#169'5'#12#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0
+#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#0#0
]);
LazarusResources.Add('JVXPCUSTOMWINXPBAREXPAND1','BMP',[
'BM&'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#18#0#0#0#18#0#0#0#1#0#24#0#0#0#0#0#240#3
+#0#0#195#14#0#0#195#14#0#0#0#0#0#0#0#0#0#0#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#167'6'#7#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#166'8'#2#165'8'#0#165
+'8'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#165'8'#0#165'8'#0#255#0#255#165'8'#0#165'8'#0#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#165'8'#0#165'8'#0#255#0#255#255#0#255#255#0#255#165'8'#0
+#165'8'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#165'8'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#165'8'#0#165'8'#0#165'8'#0#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#165'8'#1#165'8'#1#255#0#255#165
+'8'#0#165'8'#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#165'8'#1#171
+'4'#18#255#0#255#255#0#255#255#0#255#166'7'#4#165'8'#1#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0
+#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255
+#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#0#0#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#0#0#255#0#255
+#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0
+#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255#255#0#255
+#255#0#255#255#0#255#0#0
]);
LazarusResources.Add('JVXPCUSTOMWINXPBAREXPAND2','BMP',[
'BM'#174#1#0#0#0#0#0#0'F'#0#0#0'('#0#0#0#18#0#0#0#18#0#0#0#1#0#8#0#0#0#0#0'h'
+#1#0#0#195#14#0#0#195#14#0#0#4#0#0#0#4#0#0#0#255#0#255#0#165'8'#0#0#255#255
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1#1#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#1#1#0#1#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1#1#0#0#0#1#1#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1#1#1#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#1#1#0#1#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1#1#0#0#0#1#1#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
]);

View File

@ -0,0 +1,923 @@
{-----------------------------------------------------------------------------
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: JvButton.PAS, released on 2001-02-28.
The Initial Developer of the Original Code is S�bastien Buysse [sbuysse att buypin dott com]
Portions created by S�bastien Buysse are Copyright (C) 2001 S�bastien Buysse.
All Rights Reserved.
Contributor(s): Michael Beck [mbeck att bigfoot dott com].
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
located at http://jvcl.sourceforge.net
Known Issues:
-----------------------------------------------------------------------------}
// $Id: JvButton.pas 11400 2007-06-28 21:24:06Z ahuser $
// 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 JvButton;
interface
uses
Classes, Controls, Graphics, JvComponent, JvConsts, JvTypes, LMessages, Menus;
type
TJvButtonMouseState = (bsMouseInside, bsMouseDown);
TJvButtonMouseStates = set of TJvButtonMouseState;
TJvCustomGraphicButton = class(TJvGraphicControl)
private
FStates: TJvButtonMouseStates;
FBuffer: TBitmap;
FFlat: Boolean;
FDropDownMenu: TPopupMenu;
FDown: Boolean;
FForceSameSize: Boolean;
FAllowAllUp: Boolean;
FGroupIndex: Integer;
FHotTrack: Boolean;
FHotFont: TFont;
FHotTrackFontOptions: TJvTrackFontOptions;
FOnDropDownMenu: TContextPopupEvent;
FDropArrow: Boolean;
FOnDropDownClose: TNotifyEvent;
function GetPattern: TBitmap;
procedure SetFlat(const Value: Boolean);
procedure SetDown(Value: Boolean);
procedure CMButtonPressed(var Msg: TCMButtonPressed); message CM_JVBUTTONPRESSED;
procedure CMForceSize(var Msg: TCMForceSize); message CM_FORCESIZE;
procedure CMSysColorChange(var Msg: TLMessage); message CM_SYSCOLORCHANGE;
procedure SetForceSameSize(const Value: Boolean);
procedure SetAllowAllUp(const Value: Boolean);
procedure SetGroupIndex(const Value: Integer);
procedure SetHotFont(const Value: TFont);
procedure SetHotTrackFontOptions(const Value: TJvTrackFontOptions);
procedure SetDropArrow(const Value: Boolean);
procedure SetDropDownMenu(const Value: TPopupMenu);
protected
procedure ButtonPressed(Sender: TJvCustomGraphicButton; AGroupIndex: Integer); virtual;
procedure ForceSize(Sender: TControl; AWidth, AHeight: Integer);
function DoDropDownMenu(Button: TMouseButton; Shift: TShiftState; X, Y: Integer): Boolean; virtual;
procedure DropDownClose;
procedure UpdateExclusive;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure MouseEnter(Control: TControl); override;
procedure MouseLeave(Control: TControl); override;
procedure Paint; override;
procedure PaintButton(ACanvas: TCanvas); virtual;
procedure PaintFrame(ACanvas: TCanvas); virtual;
function InsideBtn(X, Y: Integer): Boolean; virtual;
function WantKey(Key: Integer; Shift: TShiftState;
const KeyText: WideString): Boolean; override;
procedure EnabledChanged; override;
procedure FontChanged; override;
procedure RepaintBackground; virtual;
procedure TextChanged; override;
property AllowAllUp: Boolean read FAllowAllUp write SetAllowAllUp default False;
property GroupIndex: Integer read FGroupIndex write SetGroupIndex default 0;
property MouseStates: TJvButtonMouseStates read FStates write FStates default [];
property ForceSameSize: Boolean read FForceSameSize write SetForceSameSize default False;
property Pattern: TBitmap read GetPattern;
property Flat: Boolean read FFlat write SetFlat default False;
property HotTrack: Boolean read FHotTrack write FHotTrack default False;
property HotTrackFont: TFont read FHotFont write SetHotFont;
property HotTrackFontOptions: TJvTrackFontOptions read FHotTrackFontOptions write SetHotTrackFontOptions default
DefaultTrackFontOptions;
property Down: Boolean read FDown write SetDown default False;
property DropDownMenu: TPopupMenu read FDropDownMenu write SetDropDownMenu;
property DropArrow: Boolean read FDropArrow write SetDropArrow default False;
property OnDropDownMenu: TContextPopupEvent read FOnDropDownMenu write FOnDropDownMenu;
property OnDropDownClose: TNotifyEvent read FOnDropDownClose write FOnDropDownClose;
public
procedure Click; override;
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure DrawDropArrow(ACanvas: TCanvas; ArrowRect: TRect); virtual;
end;
(******************** NOT CONVERTED
TJvCustomButton = class(TJvExButton)
private
FDropDownMenu: TPopupMenu;
FHotTrack: Boolean;
FHotFont: TFont;
FFontSave: TFont;
FWordWrap: Boolean;
FForceSameSize: Boolean;
FHotTrackFontOptions: TJvTrackFontOptions;
FOnDropDownMenu: TContextPopupEvent;
FDropArrow: Boolean;
procedure SetHotFont(const Value: TFont);
procedure SetWordWrap(const Value: Boolean);
procedure SetForceSameSize(const Value: Boolean);
procedure CMForceSize(var Msg: TCMForceSize); message CM_FORCESIZE;
procedure SetHotTrackFontOptions(const Value: TJvTrackFontOptions);
procedure SetDropArrow(const Value: Boolean);
procedure SetDropDownMenu(const Value: TPopupMenu);
protected
function DoDropDownMenu(X, Y: Integer): Boolean; virtual;
procedure ForceSize(Sender: TControl; AWidth, AHeight: Integer);
procedure MouseEnter(Control: TControl); override;
procedure MouseLeave(Control: TControl); override;
procedure FontChanged; override;
procedure CreateParams(var Params: TCreateParams); override;
function GetRealCaption: string; dynamic;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
property WordWrap: Boolean read FWordWrap write SetWordWrap default True;
property ForceSameSize: Boolean read FForceSameSize write SetForceSameSize default False;
property DropArrow: Boolean read FDropArrow write SetDropArrow default False;
property DropDownMenu: TPopupMenu read FDropDownMenu write SetDropDownMenu;
property HotTrack: Boolean read FHotTrack write FHotTrack default False;
property HotTrackFont: TFont read FHotFont write SetHotFont;
property HotTrackFontOptions: TJvTrackFontOptions read FHotTrackFontOptions write SetHotTrackFontOptions default
DefaultTrackFontOptions;
property HintColor;
property OnParentColorChange;
property OnDropDownMenu: TContextPopupEvent read FOnDropDownMenu write FOnDropDownMenu;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Click;override;
procedure DrawDropArrow(Canvas: TCanvas; ArrowRect: TRect); virtual;
procedure SetBounds(ALeft: Integer; ATop: Integer; AWidth: Integer; AHeight: Integer); override;
end;
// TJvDropDownButton draws a DropDown button with the DropDown glyph
// (also themed). It ignores the properties Glyph and Flat
TJvDropDownButton = class(TSpeedButton)
protected
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
end;
******************** NOT CONVERTED *)
implementation
uses
Forms, JvJVCLUtils, LCLIntf, LCLType, SysUtils;
(******************** NOT CONVERTED
const
JvBtnLineSeparator = '|';
******************** NOT CONVERTED *)
var
GlobalPattern: TBitmap = nil;
function CreateBrushPattern: TBitmap;
var
X, Y: Integer;
begin
if GlobalPattern = nil then
begin
GlobalPattern := TBitmap.Create;
try
GlobalPattern.Width := 8; { must have this size }
GlobalPattern.Height := 8;
with GlobalPattern.Canvas do
begin
Brush.Style := bsSolid;
Brush.Color := clBtnFace;
FillRect(Rect(0, 0, GlobalPattern.Width, GlobalPattern.Height));
for Y := 0 to 7 do
for X := 0 to 7 do
if (Y mod 2) = (X mod 2) then { toggles between even/odd pixels }
Pixels[X, Y] := clWhite; { on even/odd rows }
end;
except
FreeAndNil(GlobalPattern);
end;
end;
Result := GlobalPattern;
end;
//=== { TJvCustomGraphicButton } =============================================
constructor TJvCustomGraphicButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := ControlStyle -
[csOpaque, csDoubleClicks ];
FStates := [];
SetBounds(0, 0, 40, 40);
FBuffer := TBitmap.Create;
FFlat := False;
FDropArrow := False;
FForceSameSize := False;
FHotFont := TFont.Create;
FHotTrackFontOptions := DefaultTrackFontOptions;
end;
destructor TJvCustomGraphicButton.Destroy;
begin
FBuffer.Free;
FHotFont.Free;
inherited Destroy;
end;
procedure TJvCustomGraphicButton.DrawDropArrow(ACanvas: TCanvas; ArrowRect: TRect);
var
I: Integer;
begin
if not Enabled then
ACanvas.Pen.Color := clInactiveCaption
else
ACanvas.Pen.Color := clWindowText;
for I := 0 to 3 do
begin
if ArrowRect.Left + I <= ArrowRect.Right - I then
begin
ACanvas.MoveTo(ArrowRect.Left + I, ArrowRect.Top + I);
ACanvas.LineTo(ArrowRect.Right - I, ArrowRect.Top + I);
end;
end;
end;
{ Handle speedkeys (Alt + key) }
function TJvCustomGraphicButton.WantKey(Key: Integer; Shift: TShiftState;
const KeyText: WideString): Boolean;
begin
Result := IsAccel(Key, Caption) and Enabled and (Shift * KeyboardShiftStates = [ssAlt]);
if Result then
Click
else
Result := inherited WantKey(Key, Shift, KeyText);
end;
procedure TJvCustomGraphicButton.EnabledChanged;
begin
inherited EnabledChanged;
if not Enabled then
FStates := [];
RepaintBackground;
end;
procedure TJvCustomGraphicButton.MouseEnter(Control: TControl);
begin
if csDesigning in ComponentState then
Exit;
if Enabled and not MouseOver then
begin
Include(FStates, bsMouseInside);
inherited MouseEnter(Control);
if Flat then
RepaintBackground;
if HotTrack then
Repaint;
end;
end;
procedure TJvCustomGraphicButton.MouseLeave(Control: TControl);
begin
if Enabled and MouseOver then
begin
Exclude(FStates, bsMouseInside);
inherited MouseLeave(Control);
if Flat then
RepaintBackground;
if HotTrack then
Repaint;
end;
end;
procedure TJvCustomGraphicButton.Paint;
var
ArrowRect: TRect;
begin
// FBuffer.Width := Width;
// FBuffer.Height := Height;
PaintFrame(Canvas);
PaintButton(Canvas);
if DropArrow and Assigned(DropDownMenu) then
begin
ArrowRect := Rect(Width - 16, Height div 2, Width - 9, Height div 2 + 9);
if bsMouseDown in FStates then
OffsetRect(ArrowRect, 1, 1);
DrawDropArrow(Canvas, ArrowRect);
end;
// BitBlt(Canvas.Handle, 0, 0, Width,Height, FBuffer.Canvas.Handle, 0, 0, SRCCOPY);
end;
procedure TJvCustomGraphicButton.PaintFrame(ACanvas: TCanvas);
begin
// do nothing
end;
procedure TJvCustomGraphicButton.PaintButton(ACanvas: TCanvas);
begin
if (bsMouseInside in FStates) and HotTrack then
ACanvas.Font := FHotFont
else
ACanvas.Font := Font;
end;
function TJvCustomGraphicButton.InsideBtn(X, Y: Integer): Boolean;
begin
Result := PtInRect(Rect(0, 0, Width, Height), Point(X, Y));
end;
procedure TJvCustomGraphicButton.MouseDown(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Tmp: TPoint;
begin
if not Enabled then
Exit;
inherited MouseDown(Button, Shift, X, Y);
if InsideBtn(X, Y) then
begin
FStates := [bsMouseDown, bsMouseInside];
RepaintBackground;
end;
SetCaptureControl(Self);
Tmp := ClientToScreen(Point(0, Height));
DoDropDownMenu(Button, Shift, Tmp.X, Tmp.Y);
end;
procedure TJvCustomGraphicButton.MouseMove(Shift: TShiftState;
X, Y: Integer);
begin
inherited MouseMove(Shift, X, Y);
if MouseCapture then
begin
if not InsideBtn(X, Y) then
begin
if bsMouseInside in FStates then
begin
Exclude(FStates, bsMouseInside);
RepaintBackground;
end;
end
else
begin
if not (bsMouseInside in FStates) then
begin
Include(FStates, bsMouseInside);
RepaintBackground;
end;
end;
end;
end;
procedure TJvCustomGraphicButton.MouseUp(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if GetCaptureControl = Self then
ReleaseCapture;
if not Enabled then
Exit;
inherited MouseUp(Button, Shift, X, Y);
Exclude(FStates, bsMouseDown);
// 26.09.2007 - SESS:
// Update bsMouseInside flag also.
if not InsideBtn(X, Y) and (bsMouseInside in FStates) then
Exclude(FStates, bsMouseInside);
RepaintBackground;
end;
function TJvCustomGraphicButton.DoDropDownMenu(Button: TMouseButton; Shift: TShiftState; X, Y: Integer): Boolean;
var
Msg: TMsg;
Handled: Boolean;
begin
Result := (Button = mbLeft) and (DropDownMenu <> nil);
if Result then
begin
DropDownMenu.PopupComponent := Self;
Handled := False;
if Assigned(FOnDropDownMenu) then
FOnDropDownMenu(Self, Point(X, Y), Handled);
if not Handled then
DropDownMenu.Popup(X, Y)
else
Exit;
{ wait 'til menu is done }
while PeekMessage(Msg, 0, LM_MOUSEFIRST, LM_MOUSELAST, PM_REMOVE) do
{nothing};
{ release button }
MouseUp(Button, Shift, X, Y);
DropDownClose;
end;
end;
procedure TJvCustomGraphicButton.SetFlat(const Value: Boolean);
begin
if FFlat <> Value then
begin
FFlat := Value;
if FFlat then
ControlStyle := ControlStyle - [csOpaque]
else
ControlStyle := ControlStyle + [csOpaque];
RepaintBackground;
end;
end;
procedure TJvCustomGraphicButton.Notification(AComponent: TComponent;
Operation: TOperation);
begin
inherited Notification(AComponent, Operation);
if (Operation = opRemove) and (AComponent = DropDownMenu) then
DropDownMenu := nil;
end;
procedure TJvCustomGraphicButton.SetDown(Value: Boolean);
begin
if GroupIndex = 0 then
Value := False;
if FDown <> Value then
begin
if FDown and not AllowAllUp then
Exit;
FDown := Value;
UpdateExclusive;
Invalidate;
end;
end;
procedure TJvCustomGraphicButton.SetForceSameSize(const Value: Boolean);
begin
if FForceSameSize <> Value then
begin
FForceSameSize := Value;
if FForceSameSize then
SetBounds(Left, Top, Width, Height);
end;
end;
procedure TJvCustomGraphicButton.SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
var
Form: TCustomForm;
Msg: TCMForceSize;
begin
inherited SetBounds(ALeft, ATop, AWidth, AHeight);
if ForceSameSize then
begin
Form := GetParentForm(Self);
if Assigned(Form) then
begin
Msg.Msg := CM_FORCESIZE;
Msg.Sender := Self;
Msg.NewSize.X := AWidth;
Msg.NewSize.Y := AHeight;
Form.Broadcast(Msg);
end;
end;
end;
procedure TJvCustomGraphicButton.CMForceSize(var Msg: TCMForceSize);
begin
with Msg do
ForceSize(Sender, NewSize.x, NewSize.y);
end;
function TJvCustomGraphicButton.GetPattern: TBitmap;
begin
Result := CreateBrushPattern;
end;
procedure TJvCustomGraphicButton.SetAllowAllUp(const Value: Boolean);
begin
if FAllowAllUp <> Value then
begin
FAllowAllUp := Value;
UpdateExclusive;
end;
end;
procedure TJvCustomGraphicButton.SetGroupIndex(const Value: Integer);
begin
if FGroupIndex <> Value then
begin
FGroupIndex := Value;
UpdateExclusive;
end;
end;
procedure TJvCustomGraphicButton.UpdateExclusive;
var
Msg: TCMButtonPressed;
begin
if (GroupIndex <> 0) and (Parent <> nil) then
begin
Msg.Msg := CM_JVBUTTONPRESSED;
Msg.Index := GroupIndex;
Msg.Control := Self;
Msg.Result := 0;
Parent.Broadcast(Msg);
end;
end;
procedure TJvCustomGraphicButton.CMButtonPressed(var Msg: TCMButtonPressed);
begin
ButtonPressed(TJvCustomGraphicButton(Msg.Control), Msg.Index);
end;
procedure TJvCustomGraphicButton.SetHotFont(const Value: TFont);
begin
FHotFont.Assign(Value);
end;
procedure TJvCustomGraphicButton.SetHotTrackFontOptions(const Value: TJvTrackFontOptions);
begin
if FHotTrackFontOptions <> Value then
begin
FHotTrackFontOptions := Value;
UpdateTrackFont(HotTrackFont, Font, HotTrackFontOptions);
end;
end;
procedure TJvCustomGraphicButton.SetDropArrow(const Value: Boolean);
begin
if FDropArrow <> Value then
begin
FDropArrow := Value;
Invalidate;
end;
end;
procedure TJvCustomGraphicButton.SetDropDownMenu(const Value: TPopupMenu);
begin
if FDropDownMenu <> Value then
begin
FDropDownMenu := Value;
if DropArrow then
Invalidate;
end;
end;
procedure TJvCustomGraphicButton.CMSysColorChange(var Msg: TLMessage);
begin
inherited;
RepaintBackground;
end;
procedure TJvCustomGraphicButton.FontChanged;
begin
inherited FontChanged;
UpdateTrackFont(HotTrackFont, Font, HotTrackFontOptions);
end;
procedure TJvCustomGraphicButton.TextChanged;
begin
inherited TextChanged;
RepaintBackground;
end;
procedure TJvCustomGraphicButton.Click;
begin
if GroupIndex <> 0 then
begin
if AllowAllUp then
Down := not Down
else
Down := True;
end;
try
inherited Click;
except
// Mantis 3097: In case there is an exception, we ensure here that the
// button is not left "down", and we reraise the exception as we can't
// handle it and don't want to ignore it.
Exclude(FStates, bsMouseDown);
RepaintBackground;
raise;
end;
end;
procedure TJvCustomGraphicButton.ButtonPressed(Sender: TJvCustomGraphicButton;
AGroupIndex: Integer);
begin
if AGroupIndex = GroupIndex then
if Sender <> Self then
begin
if Sender.Down and Down then
begin
FDown := False;
Exclude(FStates, bsMouseDown);
RepaintBackground;
end;
FAllowAllUp := Sender.AllowAllUp;
end;
end;
procedure TJvCustomGraphicButton.ForceSize(Sender: TControl; AWidth, AHeight: Integer);
begin
if Sender <> Self then
inherited SetBounds(Left, Top, AWidth, AHeight);
end;
(******************** NOT CONVERTED
//=== { TJvCustomButton } ====================================================
constructor TJvCustomButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FDropArrow := False;
FHotTrack := False;
FHotFont := TFont.Create;
FFontSave := TFont.Create;
// ControlStyle := ControlStyle + [csAcceptsControls];
FWordWrap := True;
FForceSameSize := False;
FHotTrackFontOptions := DefaultTrackFontOptions;
end;
destructor TJvCustomButton.Destroy;
begin
FHotFont.Free;
FFontSave.Free;
inherited Destroy;
end;
procedure TJvCustomButton.Click;
var
Tmp: TPoint;
begin
// Call ClientToScreen before the inherited Click as the OnClick handler might
// reset the parent, which is needed by ClientToScreen.
Tmp := ClientToScreen(Point(0, Height));
inherited Click;
DoDropDownMenu(Tmp.X, Tmp.Y);
end;
procedure TJvCustomButton.DrawDropArrow(Canvas: TCanvas; ArrowRect: TRect);
var
I: Integer;
begin
if not Enabled then
Canvas.Pen.Color := clInactiveCaption
else
Canvas.Pen.Color := clWindowText;
for I := 0 to (ArrowRect.Bottom - ArrowRect.Top) do
begin
if ArrowRect.Left + I <= ArrowRect.Right - I then
begin
Canvas.MoveTo(ArrowRect.Left + I, ArrowRect.Top + I);
Canvas.LineTo(ArrowRect.Right - I, ArrowRect.Top + I);
end;
end;
end;
procedure TJvCustomButton.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := Params.Style or BS_MULTILINE;
end;
procedure TJvCustomButton.SetHotTrackFontOptions(const Value: TJvTrackFontOptions);
begin
if FHotTrackFontOptions <> Value then
begin
FHotTrackFontOptions := Value;
UpdateTrackFont(HotTrackFont, Font, HotTrackFontOptions);
end;
end;
procedure TJvCustomButton.SetDropArrow(const Value: Boolean);
begin
if FDropArrow <> Value then
begin
FDropArrow := Value;
Invalidate;
end;
end;
procedure TJvCustomButton.SetHotFont(const Value: TFont);
begin
FHotFont.Assign(Value);
end;
procedure TJvCustomButton.SetDropDownMenu(const Value: TPopupMenu);
begin
if FDropDownMenu <> Value then
begin
FDropDownMenu := Value;
if DropArrow then
Invalidate;
end;
end;
procedure TJvCustomButton.MouseEnter(Control: TControl);
begin
if not MouseOver then
begin
if FHotTrack then
begin
FFontSave.Assign(Font);
Font.Assign(FHotFont);
end;
inherited MouseEnter(Control);
end;
end;
procedure TJvCustomButton.MouseLeave(Control: TControl);
begin
if MouseOver then
begin
if FHotTrack then
Font.Assign(FFontSave);
inherited MouseLeave(Control);
end;
end;
procedure TJvCustomButton.FontChanged;
begin
inherited FontChanged;
UpdateTrackFont(HotTrackFont, Font, HotTrackFontOptions);
end;
function TJvCustomButton.GetRealCaption: string;
begin
if WordWrap then
Result := StringReplace(Caption, JvBtnLineSeparator, Lf, [rfReplaceAll])
else
Result := Caption;
end;
procedure TJvCustomButton.SetWordWrap(const Value: Boolean);
begin
if FWordWrap <> Value then
begin
FWordWrap := Value;
Invalidate;
end;
end;
procedure TJvCustomButton.SetForceSameSize(const Value: Boolean);
begin
if FForceSameSize <> Value then
begin
FForceSameSize := Value;
if FForceSameSize then
SetBounds(Left, Top, Width, Height);
end;
end;
procedure TJvCustomButton.SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
var
Form: TCustomForm;
Msg: TCMForceSize;
begin
inherited SetBounds(ALeft, ATop, AWidth, AHeight);
if ForceSameSize then
begin
Form := GetParentForm(Self);
if Assigned(Form) then
begin
Msg.Msg := CM_FORCESIZE;
Msg.Sender := Self;
Msg.NewSize.X := AWidth;
Msg.NewSize.Y := AHeight;
Form.Broadcast(Msg);
end;
end;
end;
procedure TJvCustomButton.CMForceSize(var Msg: TCMForceSize);
begin
with Msg do
ForceSize(Sender, NewSize.x, NewSize.y);
end;
procedure TJvCustomButton.Notification(AComponent: TComponent;
Operation: TOperation);
begin
inherited Notification(AComponent, Operation);
if (Operation = opRemove) and (AComponent = FDropDownMenu) then
DropDownMenu := nil;
end;
******************** NOT CONVERTED *)
procedure TJvCustomGraphicButton.RepaintBackground;
var
R: TRect;
begin
if (Parent <> nil) and Parent.HandleAllocated then
begin
R := BoundsRect;
InvalidateRect(Parent.Handle, @R, True);
end;
Repaint;
end;
(******************** NOT CONVERTED
procedure TJvCustomButton.ForceSize(Sender: TControl; AWidth, AHeight: Integer);
begin
if Sender <> Self then
inherited SetBounds(Left, Top, AWidth, AHeight);
end;
function TJvCustomButton.DoDropDownMenu(X, Y: Integer): Boolean;
var
Msg: TMsg;
Handled: Boolean;
begin
Result := (DropDownMenu <> nil);
if Result then
begin
DropDownMenu.PopupComponent := Self;
case DropDownMenu.Alignment of
paRight:
Inc(X, Width);
paCenter:
Inc(X, Width div 2);
end;
Handled := False;
if Assigned(FOnDropDownMenu) then
FOnDropDownMenu(Self, Point(X, Y), Handled);
if not Handled then
DropDownMenu.Popup(X, Y)
else
Exit;
{ wait 'til menu is done }
while PeekMessage(Msg, 0, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE) do
{nothing};
end;
end;
//=== { TJvDropDownButton } ==================================================
constructor TJvDropDownButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Width := 16;
Height := 16;
end;
procedure TJvDropDownButton.Paint;
var
PaintRect: TRect;
DrawFlags: Integer;
DC: HDC;
Bmp: TBitmap;
begin
// adjust FState and FDragging
DC := Canvas.Handle;
Bmp := TBitmap.Create;
try
Bmp.Width := 1;
Bmp.Height := 1;
Canvas.Handle := Bmp.Canvas.Handle;
try
inherited Paint;
finally
Canvas.Handle := DC;
end;
finally
Bmp.Free;
end;
PaintRect := Rect(0, 0, Width, Height);
DrawFlags := DFCS_SCROLLCOMBOBOX or DFCS_ADJUSTRECT;
if FState in [bsDown, bsExclusive] then
DrawFlags := DrawFlags or DFCS_PUSHED;
{$IFDEF JVCLThemesEnabled}
if ThemeServices.ThemesEnabled then
DrawThemedFrameControl(Self, Canvas.Handle, PaintRect, DFC_SCROLL, DrawFlags)
else
{$ENDIF JVCLThemesEnabled}
begin
DrawFrameControl(Canvas.Handle, PaintRect, DFC_SCROLL, DrawFlags);
end;
end;
******************** NOT CONVERTED *)
procedure TJvCustomGraphicButton.DropDownClose;
begin
if Assigned(FOnDropDownClose) then
FOnDropDownClose(Self);
end;
finalization
FreeAndNil(GlobalPattern);
end.

View File

@ -0,0 +1,267 @@
{-----------------------------------------------------------------------------
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: JvComponent.PAS, released on 2000-09-22.
The Initial Developer of the Original Code is Joe Doe .
Portions created by Joe Doe are Copyright (C) 1999 Joe Doe.
Portions created by XXXX Corp. are Copyright (C) 1998, 1999 XXXX Corp.
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.sourceforge.net
Known Issues:
-----------------------------------------------------------------------------}
// $Id: JvComponent.pas 11400 2007-06-28 21:24:06Z ahuser $
// 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 JvComponent;
interface
uses
Classes, Controls, Forms, LMessages, JvExControls;
type
TJvGraphicControl = TJvExGraphicControl;
//******************** NOT CONVERTED
//TJvPubGraphicControl = TJvExPubGraphicControl;
TJvCustomControl = TJvExCustomControl;
//******************** NOT CONVERTED
//TJvWinControl = TJvExWinControl;
(******************** NOT CONVERTED
TJvForm = class(TJvExForm)
private
FIsFocusable: Boolean;
procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED;
procedure WMMouseActivate(var Msg: TMessage); message WM_MOUSEACTIVATE;
protected
public
constructor Create(AOwner: TComponent); override;
constructor CreateNew(AOwner: TComponent; Dummy: Integer = 0); override;
{$IFDEF USE_DXGETTEXT}
procedure RefreshTranslation; virtual;
{$ENDIF USE_DXGETTEXT}
function ShowModal: Integer; override;
{ ShowNoActivate() shows the form but does not activate it. }
procedure ShowNoActivate(CallActivate: Boolean = False);
published
property IsFocusable: Boolean read FIsFocusable write FIsFocusable default True;
end;
//=== { TJvPopupListBox } ====================================================
type
TJvPopupListBox = class(TJvExCustomListBox)
private
FSearchText: string;
FSearchTickCount: Longint;
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure CreateWnd; override;
procedure KeyPress(var Key: Char); override;
end;
******************** NOT CONVERTED *)
implementation
(******************** NOT CONVERTED
{$IFDEF COMPILER6_UP}
uses
RTLConsts;
{$ELSE}
uses
Consts;
{$ENDIF COMPILER6_UP}
//=== { TJvForm } ============================================================
constructor TJvForm.Create(AOwner: TComponent);
begin
// inherited Create(AOwner);
{$IFDEF CLR}
GlobalNameSpace.AcquireWriterLock(MaxInt);
{$ELSE}
GlobalNameSpace.BeginWrite;
{$ENDIF CLR}
try
CreateNew(AOwner, 0);
if (ClassType <> TJvForm) and not (csDesigning in ComponentState) then
begin
Include(FFormState, fsCreating);
try
if not InitInheritedComponent(Self, TJvForm) then
{$IFDEF CLR}
raise EResNotFound.CreateFmt(SResNotFound, [ClassName]);
{$ELSE}
raise EResNotFound.CreateResFmt(@SResNotFound, [ClassName]);
{$ENDIF CLR}
{$IFDEF USE_DXGETTEXT}
TranslateComponent(Self, cDomainName);
{$ENDIF USE_DXGETTEXT}
finally
Exclude(FFormState, fsCreating);
end;
{$IFNDEF CLR}
if OldCreateOrder then
{$ENDIF !CLR}
DoCreate;
end;
finally
{$IFDEF CLR}
GlobalNameSpace.ReleaseWriterLock;
{$ELSE}
GlobalNameSpace.EndWrite;
{$ENDIF CLR}
end;
end;
constructor TJvForm.CreateNew(AOwner: TComponent; Dummy: Integer);
begin
inherited CreateNew(AOwner, Dummy);
FIsFocusable := True;
end;
{$IFDEF USE_DXGETTEXT}
procedure TJvForm.RefreshTranslation;
begin
ReTranslateComponent(Self, cDomainName);
end;
{$ENDIF USE_DXGETTEXT}
procedure TJvForm.CMShowingChanged(var Message: TMessage);
var
NewParent: HWND;
begin
if Showing and (FormStyle <> fsMDIChild) then
begin
if FormStyle = fsStayOnTop then
begin
// restore StayOnTop
NewParent := Application.Handle;
if GetWindowLong(Handle, GWL_HWNDPARENT) <> Longint(NewParent) then
SetWindowLong(Handle, GWL_HWNDPARENT, Longint(NewParent));
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE);
end
else
begin
// Fixing the Window Ghosting "bug", only for forms that don't have a parent assigned (Mantis 4032)
if not Assigned(Parent) then
begin
NewParent := 0;
if Assigned(Screen.ActiveForm) and (Screen.ActiveForm <> Self) then
begin
if fsModal in Screen.ActiveForm.FormState then
NewParent := Screen.ActiveForm.Handle;
end;
if (NewParent = 0) and Assigned(Application.MainForm) and (Application.MainForm <> Self) then
NewParent := Application.MainForm.Handle;
if NewParent = 0 then
NewParent := Application.Handle;
if GetWindowLong(Handle, GWL_HWNDPARENT) <> Longint(NewParent) then
SetWindowLong(Handle, GWL_HWNDPARENT, Longint(NewParent));
end;
end;
end;
inherited;
end;
function TJvForm.ShowModal: Integer;
var
Msg: TMsg;
begin
while PeekMessage(Msg, 0, WM_ENABLE, WM_ENABLE, PM_REMOVE) do
DispatchMessage(Msg);
Result := inherited ShowModal;
end;
procedure TJvForm.WMMouseActivate(var Msg: TMessage);
begin
if IsFocusable then
inherited
else
Msg.Result := MA_NOACTIVATE;
end;
procedure TJvForm.ShowNoActivate(CallActivate: Boolean);
begin
if CallActivate then
Activate;
SetWindowPos(Handle, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_SHOWWINDOW or SWP_NOACTIVATE);
Visible := True;
end;
//=== { TJvPopupListBox } ====================================================
procedure TJvPopupListBox.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
Style := Style or WS_BORDER;
ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST;
AddBiDiModeExStyle(ExStyle);
WindowClass.Style := CS_SAVEBITS;
end;
end;
procedure TJvPopupListBox.CreateWnd;
begin
inherited CreateWnd;
Windows.SetParent(Handle, 0);
CallWindowProc(DefWndProc, Handle, WM_SETFOCUS, 0, 0);
end;
procedure TJvPopupListBox.KeyPress(var Key: Char);
var
TickCount: Int64;
begin
case Key of
BackSpace, Esc:
FSearchText := '';
#32..#255:
begin
TickCount := GetTickCount;
if TickCount < FSearchTickCount then
Inc(TickCount, $100000000); // (ahuser) reduces the overflow
if TickCount - FSearchTickCount >= 4000 then
FSearchText := '';
FSearchTickCount := TickCount;
if Length(FSearchText) < 32 then
FSearchText := FSearchText + Key;
{$IFNDEF CLR}
SendMessage(Handle, LB_SELECTSTRING, WPARAM(-1), LPARAM(PChar(FSearchText)));
{$ELSE}
SendTextMessage(Handle, LB_SELECTSTRING, WPARAM(-1), FSearchText);
{$ENDIF !CLR}
Key := #0;
end;
end;
inherited KeyPress(Key);
end;
******************** NOT CONVERTED *)
end.

View File

@ -0,0 +1,215 @@
{-----------------------------------------------------------------------------
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: JvConst.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.sourceforge.net
Known Issues:
-----------------------------------------------------------------------------}
// $Id: JvConsts.pas 11414 2007-07-11 21:15:58Z ahuser $
// 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 JvConsts;
interface
uses
Controls, Classes, LMessages, SysUtils;
//, Forms, Graphics, Windows,
const
{ JvEditor }
JvEditorCompletionChars = #8'0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm';
{ Various units }
DigitSymbols = ['0'..'9'];
SignSymbols = ['+', '-'];
IdentifierUppercaseLetters = ['A'..'Z'];
IdentifierLowercaseLetters = ['a'..'z'];
HexadecimalUppercaseLetters = ['A'..'F'];
HexadecimalLowercaseLetters = ['a'..'f'];
IdentifierLetters = IdentifierUppercaseLetters + IdentifierLowercaseLetters;
IdentifierFirstSymbols = ['_'] + IdentifierLetters;
IdentifierSymbols = IdentifierFirstSymbols + DigitSymbols;
HexadecimalSymbols = DigitSymbols + HexadecimalUppercaseLetters + HexadecimalLowercaseLetters;
{$IFDEF DELPHI5}
SDelphiKey = 'Software\Borland\Delphi\5.0';
{$ENDIF DELPHI5}
{$IFDEF BCB5}
SDelphiKey = 'Software\Borland\C++Builder\5.0';
{$ENDIF BCB5}
{$IFDEF DELPHI6}
SDelphiKey = 'Software\Borland\Delphi\6.0';
{$ENDIF DELPHI6}
{$IFDEF BCB6}
SDelphiKey = 'Software\Borland\C++Builder\6.0';
{$ENDIF BCB6}
{$IFDEF DELPHI7}
SDelphiKey = 'Software\Borland\Delphi\7.0';
{$ENDIF DELPHI7}
{$IFDEF DELPHI8}
SDelphiKey = 'Software\Borland\BDS\2.0';
{$ENDIF DELPHI8}
{$IFDEF DELPHI9}
SDelphiKey = 'Software\Borland\BDS\3.0';
{$ENDIF DELPHI9}
{$IFDEF DELPHI10}
SDelphiKey = 'Software\Borland\BDS\4.0';
{$ENDIF DELPHI10}
{$IFDEF DELPHI11}
SDelphiKey = 'Software\Borland\BDS\5.0';
{$ENDIF DELPHI11}
{ JvDataProvider constants }
{ Consumer attributes }
DPA_RenderDisabledAsGrayed = 1;
DPA_RendersSingleItem = 2;
DPA_ConsumerDisplaysList = 3;
CM_JVBASE = CM_BASE + 80; // warning VCL improves and comes nearer
{ Command message for JvSpeedbar editor }
CM_SPEEDBARCHANGED = CM_JVBASE + 0;
{ Command message for TJvSpeedButton }
CM_JVBUTTONPRESSED = CM_JVBASE + 1;
// (rom) disabled unused
{ Command messages for TJvWindowHook }
//CM_RECREATEWINDOW = CM_JVBASE + 2;
//CM_DESTROYHOOK = CM_JVBASE + 3;
{ Notify message for TJvxTrayIcon }
//CM_TRAYICON = CM_JVBASE + 4;
CM_FORCESIZE = CM_JVBASE + 5; // used in JvButton
{ Values for WParam for CM_SPEEDBARCHANGED message }
SBR_CHANGED = 0; { change buttons properties }
SBR_DESTROYED = 1; { destroy SpeedBar }
SBR_BTNSELECT = 2; { select button in SpeedBar }
SBR_BTNSIZECHANGED = 3; { button size changed }
{ TBitmap.GetTransparentColor from GRAPHICS.PAS use this value }
PaletteMask = $02000000;
// (outchy) now used
{$IFDEF COMPILER7_UP}
// (outchy) it was defined as $000000FF
DEFAULT_SYSCOLOR_MASK = clSystemColor; // $FF000000
{$ELSE}
DEFAULT_SYSCOLOR_MASK = $80000000;
{$ENDIF COMPILER7_UP}
{$IFDEF COMPILER5}
// Delphi colors not defined in Delphi 5
clMoneyGreen = TColor($C0DCC0);
clSkyBlue = TColor($F0CAA6);
clCream = TColor($F0FBFF);
clMedGray = TColor($A4A0A0);
// (outchy) = TColor(COLOR_XXXXXXXXXXX or $80000000);
clGradientActiveCaption = TColor(COLOR_GRADIENTACTIVECAPTION or DEFAULT_SYSCOLOR_MASK);
clGradientInactiveCaption = TColor(COLOR_GRADIENTINACTIVECAPTION or DEFAULT_SYSCOLOR_MASK);
clHotLight = TColor(COLOR_HOTLIGHT or DEFAULT_SYSCOLOR_MASK);
clMenuHighlight = TColor(COLOR_MENUHILIGHT or DEFAULT_SYSCOLOR_MASK);
clMenuBar = TColor(COLOR_MENUBAR or DEFAULT_SYSCOLOR_MASK);
{$ENDIF COMPILER5}
{$IFDEF COMPILER5}
{$IFDEF MSWINDOWS}
sLineBreak = #13#10;
{$ENDIF MSWINDOWS}
{$IFDEF UNIX}
sLineBreak = #10;
{$ENDIF UNIX}
{$ENDIF COMPILER5}
sLineBreakLen = Length(sLineBreak);
CrLf = #13#10;
Cr = #13;
Lf = #10;
Backspace = #8;
Tab = #9;
Esc = #27;
Del = #127;
CtrlC = ^C;
CtrlH = ^H;
CtrlI = ^I;
CtrlJ = ^J;
CtrlM = ^M;
CtrlV = ^V;
CtrlX = ^X;
{$IFDEF MSWINDOWS}
RegPathDelim = '\';
PathDelim = '\';
DriveDelim = ':';
PathSep = ';';
AllFilePattern = '*.*';
{$ENDIF MSWINDOWS}
{$IFDEF UNIX}
RegPathDelim = '_';
PathDelim = '/';
AllFilePattern = '*';
{$ENDIF UNIX}
(******************** NOT CONVERTED
//TODO: SESS - 25.09.2007 This doesnt compile in fpc
{const Separators is used in GetWordOnPos, JvUtils.ReplaceStrings and SubWord}
Separators: TSysCharSet = [#00, ' ', '-', #13, #10, '.', ',', '/', '\', '#', '"', '''',
':', '+', '%', '*', '(', ')', ';', '=', '{', '}', '[', ']', '{', '}', '<', '>'];
******************** NOT CONVERTED *)
DigitChars = ['0'..'9'];
var
crJVCLFirst: TCursor = 100;
crMultiDragLink: TCursor = 100;
crDragAlt: TCursor = 101;
crMultiDragAlt: TCursor = 102;
crMultiDragLinkAlt: TCursor = 103;
crHand: TCursor = 104;
crDragHand: TCursor = 105;
// this should be incremented to always contain the last default JVCL cursor index
crJVCLLast: TCursor = 105;
const
ROP_DSPDxax = $00E20746;
const
FOURCC_ACON = 'ACON';
FOURCC_IART = 'IART';
FOURCC_INAM = 'INAM';
FOURCC_INFO = 'INFO';
FOURCC_LIST = 'LIST';
FOURCC_RIFF = 'RIFF';
FOURCC_anih = 'anih';
FOURCC_fram = 'fram';
FOURCC_icon = 'icon';
FOURCC_rate = 'rate';
FOURCC_seq = 'seq ';
AF_ICON = $00000001;
AF_SEQUENCE = $00000002;
const
KeyboardShiftStates = [ssShift, ssAlt, ssCtrl];
MouseShiftStates = [ssLeft, ssRight, ssMiddle, ssDouble];
implementation
end.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,395 @@
{-----------------------------------------------------------------------------
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: JvExExtCtrls.pas, released on 2004-01-04
The Initial Developer of the Original Code is Andreas Hausladen [Andreas dott Hausladen att gmx dott de]
Portions created by Andreas Hausladen are Copyright (C) 2004 Andreas Hausladen.
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.sourceforge.net
Known Issues:
-----------------------------------------------------------------------------}
// $Id: JvExExtCtrls.pas 10613 2006-05-19 19:21:43Z jfudickar $
// Initial port to Lazarus by Sergio Samayoa - september 2007.
// Conversion is done in incremental way: as types / classes / routines
// are needed they are converted.
unit JvExExtCtrls;
{MACROINCLUDE JvExControls.macros}
{*****************************************************************************
* WARNING: Do not edit this file.
* This file is autogenerated from the source in devtools/JvExVCL/src.
* If you do it despite this warning your changes will be discarded by the next
* update of this file. Do your changes in the template files.
****************************************************************************}
{$D-} // do not step into this unit
interface
uses
Classes, Controls, ExtCtrls, Forms, Graphics, JvExControls, LCLIntf, LMessages;
type
//******************** NOT CONVERTED
//CONTROL_DECL_DEFAULT(Shape)
//******************** NOT CONVERTED
//CONTROL_DECL_DEFAULT(PaintBox)
//******************** NOT CONVERTED
//CONTROL_DECL_DEFAULT(Image)
//******************** NOT CONVERTED
//CONTROL_DECL_DEFAULT(Bevel)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(CustomPanel)
(******************** NOT CONVERTED
TJvExPubCustomPanel = class(TJvExCustomPanel)
COMMON_PUBLISHED
end;
******************** NOT CONVERTED *)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(CustomRadioGroup)
TJvExSplitter = class(TSplitter)
private
// TODO:
// FAboutJVCL: TJVCLAboutInfo;
FHintColor: TColor;
FMouseOver: Boolean;
FHintWindowClass: THintWindowClass;
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
FOnParentColorChanged: TNotifyEvent;
function BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer; overload;
function BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer; overload;
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
protected
procedure WndProc(var Msg: TLMessage); override;
procedure FocusChanged(AControl: TWinControl); dynamic;
procedure VisibleChanged; reintroduce; dynamic;
procedure EnabledChanged; reintroduce; dynamic;
procedure TextChanged; reintroduce; virtual;
procedure ColorChanged; reintroduce; dynamic;
procedure FontChanged; reintroduce; dynamic;
procedure ParentFontChanged; reintroduce; dynamic;
procedure ParentColorChanged; reintroduce; dynamic;
procedure ParentShowHintChanged; reintroduce; dynamic;
function WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean; reintroduce; virtual;
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
procedure MouseEnter(AControl: TControl); reintroduce; dynamic;
procedure MouseLeave(AControl: TControl); reintroduce; dynamic;
property MouseOver: Boolean read FMouseOver write FMouseOver;
property HintColor: TColor read FHintColor write FHintColor default clDefault;
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
function GetCaption: TCaption; virtual;
procedure SetCaption(Value: TCaption); virtual;
public
constructor Create(AOwner: TComponent); override;
property Caption: TCaption read GetCaption write SetCaption;
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
published
// TODO:
// property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
end;
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(CustomControlBar)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(ControlBar)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(Panel)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(RadioGroup)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(Page)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(Notebook)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(Header)
//******************** NOT CONVERTED
//CONTROL_DECL_DEFAULT(BoundLabel)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(CustomLabeledEdit)
//******************** NOT CONVERTED
//WINCONTROL_DECL_DEFAULT(LabeledEdit)
//******************** NOT CONVERTED - Exists in LCL?
//WINCONTROL_DECL_DEFAULT(CustomColorBox)
//******************** NOT CONVERTED - Exists in LCL?
//WINCONTROL_DECL_DEFAULT(ColorBox)
implementation
//******************** NOT CONVERTED
//CONTROL_IMPL_DEFAULT(Shape)
//******************** NOT CONVERTED
//CONTROL_IMPL_DEFAULT(PaintBox)
//******************** NOT CONVERTED
//CONTROL_IMPL_DEFAULT(Image)
//******************** NOT CONVERTED
//CONTROL_IMPL_DEFAULT(Bevel)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(CustomPanel)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(CustomRadioGroup)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(CustomControlBar)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(ControlBar)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(Panel)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(RadioGroup)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(Page)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(Notebook)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(Header)
//******************** NOT CONVERTED
//CONTROL_IMPL_DEFAULT(BoundLabel)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(CustomLabeledEdit)
//******************** NOT CONVERTED
//WINCONTROL_IMPL_DEFAULT(LabeledEdit)
//******************** NOT CONVERTED - Exists in LCL?
//WINCONTROL_IMPL_DEFAULT(CustomColorBox)
//******************** NOT CONVERTED - Exists in LCL?
//WINCONTROL_IMPL_DEFAULT(ColorBox)
constructor TJvExSplitter.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FHintColor := clDefault;
end;
function TJvExSplitter.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Longint = 0): Integer;
var
Mesg: TLMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExSplitter.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
var
Mesg: TLMessage;
begin
Mesg := CreateWMMessage(Msg, WParam, LParam);
inherited WndProc(Mesg);
Result := Mesg.Result;
end;
function TJvExSplitter.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
var
Mesg: TStructPtrMessage;
begin
Mesg := TStructPtrMessage.Create(Msg, WParam, LParam);
try
inherited WndProc(Mesg.Msg);
finally
Result := Mesg.Msg.Result;
Mesg.Free;
end;
end;
procedure TJvExSplitter.VisibleChanged;
begin
BaseWndProc(CM_VISIBLECHANGED);
end;
procedure TJvExSplitter.EnabledChanged;
begin
BaseWndProc(CM_ENABLEDCHANGED);
end;
procedure TJvExSplitter.TextChanged;
begin
BaseWndProc(CM_TEXTCHANGED);
end;
procedure TJvExSplitter.FontChanged;
begin
BaseWndProc(CM_FONTCHANGED);
end;
procedure TJvExSplitter.ColorChanged;
begin
BaseWndProc(CM_COLORCHANGED);
end;
procedure TJvExSplitter.ParentFontChanged;
begin
// LCL doesn't send this message but left it in case
//BaseWndProc(CM_PARENTFONTCHANGED);
end;
procedure TJvExSplitter.ParentColorChanged;
begin
BaseWndProc(CM_PARENTCOLORCHANGED);
if Assigned(OnParentColorChange) then
OnParentColorChange(Self);
end;
procedure TJvExSplitter.ParentShowHintChanged;
begin
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
end;
function TJvExSplitter.WantKey(Key: Integer; Shift: TShiftState; const KeyText: WideString): Boolean;
begin
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
end;
function TJvExSplitter.HitTest(X, Y: Integer): Boolean;
begin
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
end;
function TJvExSplitter.HintShow(var HintInfo: THintInfo): Boolean;
begin
GetHintColor(HintInfo, Self, FHintColor);
if FHintWindowClass <> nil then
HintInfo.HintWindowClass := FHintWindowClass;
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
end;
procedure TJvExSplitter.MouseEnter(AControl: TControl);
begin
FMouseOver := True;
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
BaseWndProc(CM_MOUSEENTER, 0, AControl);
end;
procedure TJvExSplitter.MouseLeave(AControl: TControl);
begin
FMouseOver := False;
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
end;
procedure TJvExSplitter.FocusChanged(AControl: TWinControl);
begin
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
end;
function TJvExSplitter.GetCaption: TCaption;
begin
Result := inherited Caption;
end;
// 25.09.2007 - SESS:
// I have done this because TextChanged wasn't fired as expected.
// I still don't shure if this problem is only for this reintroduced
// method because the way LCL treats Caption or will have the same
// problem with other reintroduced methods. So far, I tested some
// other events and seems not.
procedure TJvExSplitter.SetCaption(Value: TCaption);
begin
inherited Caption := Value;
TextChanged;
end;
procedure TJvExSplitter.WndProc(var Msg: TLMessage);
begin
if not DispatchIsDesignMsg(Self, Msg) then
case Msg.Msg of
{
// TODO: do we need this? I think not...
CM_DENYSUBCLASSING:
Msg.Result := Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil);
}
CM_DIALOGCHAR:
with TCMDialogChar(Msg) do
Result := Ord(WantKey(CharCode, KeyDataToShiftState(KeyData), WideChar(CharCode)));
CM_HINTSHOW:
with TCMHintShow(Msg) do
Result := Integer(HintShow(HintInfo^));
CM_HITTEST:
with TCMHitTest(Msg) do
Result := Integer(HitTest(XPos, YPos));
CM_MOUSEENTER:
MouseEnter(TControl(Msg.LParam));
CM_MOUSELEAVE:
MouseLeave(TControl(Msg.LParam));
CM_VISIBLECHANGED:
VisibleChanged;
CM_ENABLEDCHANGED:
EnabledChanged;
// LCL doesn't send this message but left it in case
CM_TEXTCHANGED:
TextChanged;
CM_FONTCHANGED:
FontChanged;
CM_COLORCHANGED:
ColorChanged;
CM_FOCUSCHANGED:
FocusChanged(TWinControl(Msg.LParam));
// LCL doesn't send this message but left it in case
//CM_PARENTFONTCHANGED:
// ParentFontChanged;
CM_PARENTCOLORCHANGED:
ParentColorChanged;
CM_PARENTSHOWHINTCHANGED:
ParentShowHintChanged;
else
inherited WndProc(Msg);
end;
end;
//============================================================================
end.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,943 @@
{-----------------------------------------------------------------------------
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: JvPageList.PAS, released on 2003-04-25.
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.
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.sourceforge.net
Known Issues:
-----------------------------------------------------------------------------}
// $Id: JvPageList.pas 11400 2007-06-28 21:24:06Z ahuser $
// 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;
interface
uses
Classes, Controls, Graphics, JvComponent, LCLIntf, LCLType, LMessages,
SysUtils;
type
EPageListError = class(Exception);
(******************** NOT CONVERTED
IPageList = interface
['{6BB90183-CFB1-4431-9CFD-E9A032E0C94C}']
function CanChange(AIndex: Integer): Boolean;
procedure SetActivePageIndex(AIndex: Integer);
function GetPageCount: Integer;
function GetPageCaption(AIndex: Integer): string;
procedure AddPage(const ACaption: string);
procedure DeletePage(Index: Integer);
procedure MovePage(CurIndex, NewIndex: Integer);
procedure PageCaptionChanged(Index: Integer; const NewCaption: string);
end;
******************** NOT CONVERTED *)
TJvCustomPageList = class;
TJvPagePaintEvent = procedure(Sender: TObject; ACanvas: TCanvas; ARect: TRect) of object;
TJvPageCanPaintEvent = procedure(Sender: TObject; ACanvas: TCanvas; ARect: TRect; var DefaultDraw: Boolean) of object;
{ 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
page list and custom painting }
TJvCustomPage = class(TJvCustomControl)
private
FPageList: TJvCustomPageList;
FPageIndex: Integer;
FOnBeforePaint: TJvPageCanPaintEvent;
FOnPaint: TJvPagePaintEvent;
FOnAfterPaint: TJvPagePaintEvent;
FOnHide: TNotifyEvent;
FOnShow: TNotifyEvent;
FData: TObject;
protected
procedure CreateParams(var Params: TCreateParams); override;
function DoEraseBackground(ACanvas: TCanvas; Param: Integer): Boolean; override;
procedure SetPageIndex(Value: Integer);virtual;
function GetPageIndex: Integer;virtual;
procedure SetPageList(Value: TJvCustomPageList);virtual;
procedure TextChanged; override;
procedure ShowingChanged; override;
procedure Paint; override;
procedure ReadState(Reader: TReader); override;
function DoBeforePaint(ACanvas: TCanvas; ARect: TRect): Boolean; dynamic;
procedure DoAfterPaint(ACanvas: TCanvas; ARect: TRect); dynamic;
procedure DoPaint(ACanvas: TCanvas; ARect: TRect); virtual;
procedure DoShow; virtual;
procedure DoHide; virtual;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property PageList: TJvCustomPageList read FPageList write SetPageList;
protected
property Left stored False;
property Top stored False;
property Width stored False;
property Height stored False;
property OnHide: TNotifyEvent read FOnHide write FOnHide;
property OnShow: TNotifyEvent read FOnShow write FOnShow;
property OnBeforePaint: TJvPageCanPaintEvent read FOnBeforePaint write FOnBeforePaint;
property OnPaint: TJvPagePaintEvent read FOnPaint write FOnPaint;
property OnAfterPaint: TJvPagePaintEvent read FOnAfterPaint write FOnAfterPaint;
public
property Data: TObject read FData write FData;
property PageIndex: Integer read GetPageIndex write SetPageIndex stored False;
end;
TJvCustomPageClass = class of TJvCustomPage;
TJvPageChangingEvent = procedure(Sender: TObject; PageIndex: Integer; var AllowChange: Boolean) of object;
{
TJvCustomPageList is a base class for components that implements the IPageList interface.
It works like TPageControl but does not have any tabs
}
TJvShowDesignCaption = (sdcNone, sdcTopLeft, sdcTopCenter, sdcTopRight, sdcLeftCenter, sdcCenter, sdcRightCenter, sdcBottomLeft, sdcBottomCenter, sdcBottomRight, sdcRunTime);
//TODO: 25.09.2007 - SESS - Find a better place...
TCMDesignHitTest = TLMMouse;
// TJvCustomPageList = class(TJvCustomControl, IUnknown, IPageList)
TJvCustomPageList = class(TJvCustomControl)
private
FPages: TList;
FActivePage: TJvCustomPage;
FPropagateEnable: Boolean;
FOnChange: TNotifyEvent;
FOnChanging: TJvPageChangingEvent;
FShowDesignCaption: TJvShowDesignCaption;
FHiddenPages: TList;
procedure CMDesignHitTest(var Msg: TCMDesignHitTest); message CM_DESIGNHITTEST;
procedure UpdateEnabled;
procedure SetPropagateEnable(const Value: Boolean);
procedure SetShowDesignCaption(const Value: TJvShowDesignCaption);
function GetPage(Index: Integer): TJvCustomPage;
protected
procedure EnabledChanged; override;
{ IPageList }
procedure AddPage(const ACaption: string);
procedure DeletePage(Index: Integer);
procedure MovePage(CurIndex, NewIndex: Integer);
function CanChange(AIndex: Integer): Boolean; virtual;
function GetActivePageIndex: Integer; virtual;
procedure SetActivePageIndex(AIndex: Integer); virtual;
function GetPageFromIndex(AIndex: Integer): TJvCustomPage; virtual;
function GetPageCount: Integer;virtual;
function GetPageCaption(AIndex: Integer): string; virtual;
procedure Paint; override;
procedure PageCaptionChanged(Index: Integer; const NewCaption: string); virtual;
procedure Change; dynamic;
procedure Loaded; override;
procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
procedure ShowControl(AControl: TControl); override;
function InternalGetPageClass: TJvCustomPageClass; virtual;
procedure SetActivePage(Page: TJvCustomPage); virtual;
procedure InsertPage(APage: TJvCustomPage); virtual;
procedure RemovePage(APage: TJvCustomPage); virtual;
property PageList: TList read FPages;
property HiddenPageList: TList read FHiddenPages;
property PropagateEnable: Boolean read FPropagateEnable write SetPropagateEnable;
property ShowDesignCaption: TJvShowDesignCaption read FShowDesignCaption write SetShowDesignCaption default sdcCenter;
property OnChange: TNotifyEvent read FOnChange write FOnChange;
property OnChanging: TJvPageChangingEvent read FOnChanging write FOnChanging;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function FindNextPage(CurPage: TJvCustomPage; GoForward: Boolean; IncludeDisabled: Boolean): TJvCustomPage;
procedure PrevPage;
procedure NextPage;
function HidePage(Page: TJvCustomPage): TJvCustomPage; virtual;
function ShowPage(Page: TJvCustomPage; PageIndex: Integer = -1): TJvCustomPage; virtual;
function GetPageClass: TJvCustomPageClass;
function GetVisiblePageCount: Integer;
property Height default 200;
property Width default 300;
property ActivePageIndex: Integer read GetActivePageIndex write SetActivePageIndex;
property ActivePage: TJvCustomPage read FActivePage write SetActivePage;
property Pages[Index: Integer]: TJvCustomPage read GetPage; default;
property PageCount: Integer read GetPageCount;
end;
(******************** NOT CONVERTED
TJvStandardPage = class(TJvCustomPage)
published
property BorderWidth;
property Caption;
property Color;
property DragMode;
property Enabled;
property Font;
property Constraints;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property PageIndex;
property OnContextPopup;
property OnDragDrop;
property OnDragOver;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnHide;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnResize;
property OnShow;
property OnStartDrag;
property OnBeforePaint;
property OnPaint;
property OnAfterPaint;
property OnMouseEnter;
property OnMouseLeave;
property OnParentColorChange;
{$IFDEF JVCLThemesEnabled}
property ParentBackground default False;
{$ENDIF JVCLThemesEnabled}
end;
TJvPageList = class(TJvCustomPageList)
protected
function InternalGetPageClass: TJvCustomPageClass; override;
public
property PageCount;
published
property ActivePage;
property PropagateEnable;
property ShowDesignCaption;
property Action;
property Align;
property Anchors;
property BiDiMode;
property BorderWidth;
property DragCursor;
property DragKind;
property OnStartDock;
property OnUnDock;
property OnEndDock;
property OnCanResize;
property OnDockDrop;
property OnDockOver;
property OnGetSiteInfo;
property Constraints;
property DragMode;
property Enabled;
property PopupMenu;
property ShowHint;
property Visible;
property OnMouseEnter;
property OnMouseLeave;
property OnParentColorChange;
property OnChange;
property OnChanging;
property OnConstrainedResize;
property OnContextPopup;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnMouseWheel;
property OnMouseWheelDown;
property OnMouseWheelUp;
property OnResize;
property OnStartDrag;
{$IFDEF JVCLThemesEnabled}
property ParentBackground default False;
{$ENDIF JVCLThemesEnabled}
end;
******************** NOT CONVERTED *)
implementation
uses
Forms;
function GetUniqueName(AOwner: TComponent; const AClassName: string): string;
var
i: Integer;
begin
i := 0;
if AOwner = nil then
begin
repeat
Inc(i);
Result := AClassName + IntToStr(i);
until FindGlobalComponent(Result) = nil;
end
else
repeat
Inc(i);
Result := AClassName + IntToStr(i);
until AOwner.FindComponent(Result) = nil;
end;
//=== { TJvCustomPage } ======================================================
constructor TJvCustomPage.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FPageIndex := -1;
Align := alClient;
ControlStyle := ControlStyle + [csOpaque, csAcceptsControls, csNoDesignVisible];
// IncludeThemeStyle(Self, [csParentBackground]);
Visible := False;
DoubleBuffered := True;
end;
procedure TJvCustomPage.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params.WindowClass do
Style := Style and not (CS_HREDRAW or CS_VREDRAW);
end;
destructor TJvCustomPage.Destroy;
begin
PageList := nil;
inherited Destroy;
end;
procedure TJvCustomPage.DoAfterPaint(ACanvas: TCanvas; ARect: TRect);
begin
if Assigned(FOnAfterPaint) then
FOnAfterPaint(Self, ACanvas, ARect);
end;
function TJvCustomPage.DoBeforePaint(ACanvas: TCanvas; ARect: TRect): Boolean;
begin
Result := True;
if Assigned(FOnBeforePaint) then
FOnBeforePaint(Self, ACanvas, ARect, Result);
end;
function GetDesignCaptionFlags(Value: TJvShowDesignCaption): Cardinal;
begin
case Value of
sdcTopLeft:
Result := DT_TOP or DT_LEFT;
sdcTopCenter:
Result := DT_TOP or DT_CENTER;
sdcTopRight:
Result := DT_TOP or DT_RIGHT;
sdcLeftCenter:
Result := DT_VCENTER or DT_LEFT;
sdcCenter:
Result := DT_VCENTER or DT_CENTER;
sdcRightCenter:
Result := DT_VCENTER or DT_RIGHT;
sdcBottomLeft:
Result := DT_BOTTOM or DT_LEFT;
sdcBottomCenter:
Result := DT_BOTTOM or DT_CENTER;
sdcBottomRight:
Result := DT_BOTTOM or DT_RIGHT;
else
Result := 0;
end;
end;
procedure TJvCustomPage.DoPaint(ACanvas: TCanvas; ARect: TRect);
var
S: string;
begin
with ACanvas do
begin
Font := Self.Font;
Brush.Style := bsSolid;
Brush.Color := Self.Color;
//SESS
//DrawThemedBackground(Self, Canvas, ARect);
DoEraseBackground(Canvas, 0);
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
begin
S := Caption;
if S = '' then
S := Name;
// make some space around the edges
InflateRect(ARect, -4, -4);
if not Enabled then
begin
SetBkMode(Handle, TRANSPARENT);
Canvas.Font.Color := clHighlightText;
//TODO: Use JCLUtils one?
DrawText(Handle, PChar(S), Length(S), ARect, GetDesignCaptionFlags(PageList.ShowDesignCaption) or DT_SINGLELINE);
OffsetRect(ARect, -1, -1);
Canvas.Font.Color := clGrayText;
end;
DrawText(Handle, PChar(S), Length(S), ARect, GetDesignCaptionFlags(PageList.ShowDesignCaption) or DT_SINGLELINE);
InflateRect(ARect, 4, 4);
end;
end;
end;
if Assigned(FOnPaint) then
FOnPaint(Self, ACanvas, ARect);
end;
function TJvCustomPage.GetPageIndex: Integer;
begin
if Assigned(FPageList) then
Result := FPageList.PageList.IndexOf(Self)
else
Result := FPageIndex;
end;
procedure TJvCustomPage.Paint;
var
R: TRect;
begin
R := ClientRect;
if DoBeforePaint(Canvas, R) then
DoPaint(Canvas, R);
DoAfterPaint(Canvas, R);
end;
procedure TJvCustomPage.ReadState(Reader: TReader);
begin
if Reader.Parent is TJvCustomPageList then
PageList := TJvCustomPageList(Reader.Parent);
inherited ReadState(Reader);
end;
procedure TJvCustomPage.SetPageList(Value: TJvCustomPageList);
begin
if FPageList <> Value then
begin
if Assigned(FPageList) then
FPageList.RemovePage(Self);
FPageList := Value;
Parent := FPageList;
if FPageList <> nil then
FPageList.InsertPage(Self);
end;
end;
procedure TJvCustomPage.SetPageIndex(Value: Integer);
var
OldIndex: Integer;
begin
if (Value <> PageIndex) then
begin
OldIndex := PageIndex;
if Assigned(FPageList) and (Value >= 0) and (Value < FPageList.PageCount) then
FPageList.PageList.Move(OldIndex, Value);
FPageIndex := Value;
end;
end;
function TJvCustomPage.DoEraseBackground(ACanvas: TCanvas; Param: Integer): Boolean;
begin
ACanvas.Brush.Color := Self.Color;
ACanvas.Brush.Style := bsSolid;
ACanvas.FillRect(Rect(0, 0, Width, Height));
Result := True;
end;
procedure TJvCustomPage.TextChanged;
begin
inherited TextChanged;
if csDesigning in ComponentState then
Invalidate;
end;
procedure TJvCustomPage.DoHide;
begin
if Assigned(FOnHide) then
FOnHide(Self);
end;
procedure TJvCustomPage.DoShow;
begin
if Assigned(FOnShow) then
FOnShow(Self);
end;
procedure TJvCustomPage.ShowingChanged;
begin
inherited ShowingChanged;
if Showing then
try
DoShow
except
Application.HandleException(Self);
end
else
if not Showing then
try
DoHide;
except
Application.HandleException(Self);
end;
end;
//=== { TJvCustomPageList } ==================================================
constructor TJvCustomPageList.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := ControlStyle + [csAcceptsControls];
// IncludeThemeStyle(Self, [csParentBackground]);
FPages := TList.Create;
FHiddenPages := TList.Create;
Height := 200;
Width := 300;
FShowDesignCaption := sdcCenter;
ActivePageIndex := -1;
end;
destructor TJvCustomPageList.Destroy;
var
I: Integer;
begin
for I := FPages.Count - 1 downto 0 do
TJvCustomPage(FPages[I]).FPageList := nil;
FPages.Free;
FHiddenPages.Free;
inherited Destroy;
end;
function TJvCustomPageList.CanChange(AIndex: Integer): Boolean;
begin
Result := (AIndex >= 0) and (AIndex < GetPageCount);
if Result and Assigned(FOnChanging) then
FOnChanging(Self, AIndex, Result);
end;
procedure TJvCustomPageList.Change;
begin
if Assigned(FOnChange) then
FOnChange(Self);
end;
procedure TJvCustomPageList.CMDesignHitTest(var Msg: TCMDesignHitTest);
var
Pt: TPoint;
begin
inherited;
Pt := SmallPointToPoint(Msg.Pos);
if Assigned(ActivePage) and PtInRect(ActivePage.BoundsRect, Pt) then
Msg.Result := 1;
end;
procedure TJvCustomPageList.GetChildren(Proc: TGetChildProc;
Root: TComponent);
var
I: Integer;
Control: TControl;
begin
for I := 0 to FPages.Count - 1 do
Proc(TComponent(FPages[I]));
for I := 0 to ControlCount - 1 do
begin
Control := Controls[I];
if not (Control is TJvCustomPage) and (Control.Owner = Root) then
Proc(Control);
end;
end;
function TJvCustomPageList.GetPageCaption(AIndex: Integer): string;
begin
if (AIndex >= 0) and (AIndex < GetPageCount) then
Result := TJvCustomPage(FPages[AIndex]).Caption
else
Result := '';
end;
function TJvCustomPageList.InternalGetPageClass: TJvCustomPageClass;
begin
Result := TJvCustomPage;
end;
function TJvCustomPageList.GetPageCount: Integer;
begin
if FPages = nil then
Result := 0
else
Result := FPages.Count;
end;
procedure TJvCustomPageList.InsertPage(APage: TJvCustomPage);
begin
if (APage <> nil) and (FPages.IndexOf(APage) = -1) then
FPages.Add(APage);
end;
procedure TJvCustomPageList.Loaded;
begin
inherited Loaded;
if (GetPageCount > 0) and (ActivePage = nil) then
ActivePage := Pages[0];
end;
procedure TJvCustomPageList.Paint;
begin
if (csDesigning in ComponentState) and (GetPageCount = 0) then
with Canvas do
begin
Pen.Color := clBlack;
Pen.Style := psDot;
Brush.Style := bsClear;
Rectangle(ClientRect);
end;
end;
procedure TJvCustomPageList.RemovePage(APage: TJvCustomPage);
var
I: Integer;
WNextPage: TJvCustomPage;
begin
WNextPage := FindNextPage(APage, True, not (csDesigning in ComponentState));
if WNextPage = APage then
WNextPage := nil;
APage.Visible := False;
APage.FPageList := nil;
FPages.Remove(APage);
SetActivePage(WNextPage);
// (ahuser) In some cases SetActivePage does not change FActivePage
// so we force FActivePage not to be "APage"
if (FActivePage = APage) or (FActivePage = nil) then
begin
FActivePage := nil;
for I := 0 to PageCount - 1 do
if Pages[I] <> APage then
begin
FActivePage := Pages[I];
Break;
end;
end;
end;
function TJvCustomPageList.GetPageFromIndex(AIndex: Integer): TJvCustomPage;
begin
if (AIndex >= 0) and (AIndex < GetPageCount) then
Result := TJvCustomPage(Pages[AIndex])
else
Result := nil;
end;
function TJvCustomPageList.GetVisiblePageCount: Integer;
var
i: Integer;
begin
Result := 0;
for i := 0 to PageCount - 1 do
if Pages[i].Visible then
Inc(Result);
end;
procedure TJvCustomPageList.SetActivePageIndex(AIndex: Integer);
begin
if (AIndex > -1) and (AIndex < PageCount) then
ActivePage := Pages[AIndex]
else
ActivePage := nil;
end;
procedure TJvCustomPageList.ShowControl(AControl: TControl);
begin
if AControl is TJvCustomPage then
ActivePage := TJvCustomPage(AControl);
inherited ShowControl(AControl);
end;
function TJvCustomPageList.GetPageClass: TJvCustomPageClass;
begin
Result := InternalGetPageClass;
end;
function TJvCustomPageList.HidePage(Page: TJvCustomPage): TJvCustomPage;
var
I: Integer;
begin
if (Page <> nil) and (Page.PageList = Self) then
begin
if ActivePage = Page then
NextPage;
if ActivePage = Page then
ActivePage := nil;
I := Page.PageIndex;
Page.PageList := nil;
Page.PageIndex := I;
Result := Page;
FHiddenPages.Add(Result);
end
else
Result := nil;
end;
function TJvCustomPageList.ShowPage(Page: TJvCustomPage; PageIndex: Integer): TJvCustomPage;
var
I: Integer;
begin
if (Page <> nil) and (Page.PageList = nil) then
begin
I := Page.PageIndex;
Page.PageList := Self;
Page.Parent := Self;
if PageIndex > -1 then
Page.PageIndex := PageIndex
else
if I > -1 then
Page.PageIndex := I;
Result := Page;
FHiddenPages.Remove(Result);
end
else
Result := nil;
end;
procedure TJvCustomPageList.SetActivePage(Page: TJvCustomPage);
var
ParentForm: TCustomForm;
//TODO: why?
//{$IFDEF COMPILER9_UP}
I: Integer;
//{$ENDIF COMPILER9_UP}
begin
// 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...
if not (csLoading in ComponentState) and not CanChange(FPages.IndexOf(Page)) then
Exit;
if GetPageCount = 0 then
FActivePage := nil;
if (Page = nil) or (Page.PageList <> Self) then
Exit
else
begin
ParentForm := GetParentForm(Self);
if (ParentForm <> nil) and (FActivePage <> nil) and
FActivePage.ContainsControl(ParentForm.ActiveControl) then
begin
ParentForm.ActiveControl := FActivePage;
if ParentForm.ActiveControl <> FActivePage then
begin
ActivePage := GetPageFromIndex(FActivePage.PageIndex);
Exit;
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;
if (ParentForm <> nil) and (FActivePage <> nil) and (ParentForm.ActiveControl = FActivePage) then
begin
if Page.CanFocus then
ParentForm.ActiveControl := Page
else
ParentForm.ActiveControl := Self;
end;
Page.Refresh;
if (FActivePage <> nil) and (FActivePage <> Page) then
FActivePage.Visible := False;
if (FActivePage <> Page) then
begin
FActivePage := Page;
if not (csLoading in ComponentState) then
Change;
end;
if (ParentForm <> nil) and (FActivePage <> nil) and
(ParentForm.ActiveControl = FActivePage) then
begin
FActivePage.SelectFirst;
end;
end;
end;
function TJvCustomPageList.GetActivePageIndex: Integer;
begin
if ActivePage <> nil then
Result := ActivePage.PageIndex
else
Result := -1;
end;
procedure TJvCustomPageList.NextPage;
begin
if (ActivePageIndex < PageCount - 1) and (PageCount > 1) then
ActivePageIndex := ActivePageIndex + 1
else
if PageCount > 0 then
ActivePageIndex := 0
else
ActivePageIndex := -1;
end;
procedure TJvCustomPageList.PrevPage;
begin
if ActivePageIndex > 0 then
ActivePageIndex := ActivePageIndex - 1
else
ActivePageIndex := PageCount - 1;
end;
procedure TJvCustomPageList.SetPropagateEnable(const Value: Boolean);
begin
if FPropagateEnable <> Value then
begin
FPropagateEnable := Value;
UpdateEnabled;
end;
end;
procedure TJvCustomPageList.EnabledChanged;
begin
inherited EnabledChanged;
UpdateEnabled;
end;
function TJvCustomPageList.FindNextPage(CurPage: TJvCustomPage;
GoForward, IncludeDisabled: Boolean): TJvCustomPage;
var
I, StartIndex: Integer;
begin
if PageCount <> 0 then
begin
StartIndex := FPages.IndexOf(CurPage);
if StartIndex < 0 then
if GoForward then
StartIndex := FPages.Count - 1
else
StartIndex := 0;
I := StartIndex;
repeat
if GoForward then
begin
Inc(I);
if I >= FPages.Count - 1 then
I := 0;
end
else
begin
if I <= 0 then
I := FPages.Count - 1;
Dec(I);
end;
Result := Pages[I];
if IncludeDisabled or Result.Enabled then
Exit;
until I = StartIndex;
end;
Result := nil;
end;
procedure TJvCustomPageList.SetShowDesignCaption(const Value: TJvShowDesignCaption);
begin
if FShowDesignCaption <> Value then
begin
FShowDesignCaption := Value;
//TODO:
(*
if HandleAllocated and (csDesigning in ComponentState) then
RedrawWindow(Handle, nil, 0, RDW_UPDATENOW or RDW_INVALIDATE or RDW_ALLCHILDREN);
*)
end;
end;
procedure TJvCustomPageList.UpdateEnabled;
procedure InternalSetEnabled(AControl: TWinControl);
var
I: Integer;
begin
for I := 0 to AControl.ControlCount - 1 do
begin
AControl.Controls[I].Enabled := Self.Enabled;
if AControl.Controls[I] is TWinControl then
InternalSetEnabled(TWinControl(AControl.Controls[I]));
end;
end;
begin
if PropagateEnable then
InternalSetEnabled(Self);
end;
function TJvCustomPageList.GetPage(Index: Integer): TJvCustomPage;
begin
if (Index >= 0) and (Index < FPages.Count) then
Result := TJvCustomPage(FPages[Index])
else
Result := nil;
end;
procedure TJvCustomPageList.DeletePage(Index: Integer);
begin
if (Index >= 0) and (Index < PageCount) then
Pages[Index].Free;
end;
procedure TJvCustomPageList.AddPage(const ACaption: string);
var
Page: TJvCustomPage;
begin
Page := GetPageClass.Create(Owner);
Page.Caption := ACaption;
Page.Name := GetUniqueName(Owner, Copy(Page.ClassName, 2, MaxInt));
Page.PageList := Self;
end;
procedure TJvCustomPageList.MovePage(CurIndex, NewIndex: Integer);
begin
FPages.Move(CurIndex, NewIndex);
end;
procedure TJvCustomPageList.PageCaptionChanged(Index: Integer;
const NewCaption: string);
begin
if (Index >= 0) and (Index < PageCount) then
Pages[Index].Caption := NewCaption;
end;
(**************
//===TJvPageList =============================================================
function TJvPageList.InternalGetPageClass: TJvCustomPageClass;
begin
Result := TJvStandardPage;
end;
*******************)
end.

View File

@ -0,0 +1,739 @@
{-----------------------------------------------------------------------------
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: JvTypes.PAS, released on 2001-02-28.
The Initial Developer of the Original Code is S�bastien Buysse [sbuysse att buypin dott com]
Portions created by S�bastien Buysse are Copyright (C) 2001 S�bastien Buysse.
All Rights Reserved.
Contributor(s): Michael Beck [mbeck att bigfoot dott com].
Peter Thornqvist
Oliver Giesen
Gustavo Bianconi
dejoy
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
located at http://jvcl.sourceforge.net
Known Issues:
-----------------------------------------------------------------------------}
// $Id: JvTypes.pas 11400 2007-06-28 21:24:06Z ahuser $
// 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 JvTypes;
interface
uses
Classes, Controls, Forms, Graphics, LMessages, SysUtils;
const
MaxPixelCount = 32767;
(********************
type
TJvBytes = Pointer;
IntPtr = Pointer;
********************)
type
PCaptionChar = PChar;
// used in JvSpeedButton, JvArrowButton, JvButton CM_JVBUTTONPRESSED
// asn: can also be used with CM_BUTTONPRESSED
TCMButtonPressed = packed record
Msg: Cardinal;
Index: Integer; { clx has Index and Control switched }
Control: TControl;
Result: Longint;
end;
(********************
THintString = string;
THintStringList = TStringList;
{ JvExVCL classes }
TInputKey = (ikAll, ikArrows, ikChars, ikButton, ikTabs, ikEdit, ikNative{, ikNav, ikEsc});
TInputKeys = set of TInputKey;
{$IFDEF CLR}
[StructLayout(LayoutKind.Sequential)]
{$ENDIF CLR}
TJvRGBTriple = packed record
rgbBlue: Byte;
rgbGreen: Byte;
rgbRed: Byte;
end;
const
NullHandle = 0;
// (rom) deleted fbs constants. They are already in JvConsts.pas.
type
TTimerProc = procedure(hwnd: THandle; Msg: Cardinal; idEvent: Cardinal; dwTime: Cardinal);
type
{$IFDEF COMPILER5}
EOSError = class(EWin32Error);
IInterface = IUnknown;
{$M+}
IInvokable = interface(IInterface)
end;
{$M-}
{$ENDIF COMPILER5}
{$IFDEF CLR}
IUnknown = IInterface;
{$ENDIF CLR}
// Base class for persistent properties that can show events.
// By default, Delphi and BCB don't show the events of a class
// derived from TPersistent unless it also derives from
// TComponent. However, up until version 5, you couldn't have
// a Component as a Sub Component of another one, thus preventing
// from having events for a sub property.
// The design time editor associated with TJvPersistent will display
// the events, thus mimicking a Sub Component.
{$IFDEF COMPILER6_UP}
TJvPersistent = class(TComponent)
public
constructor Create(AOwner: TComponent); override;
end;
{$ELSE}
TJvPersistent = class(TPersistent);
{$ENDIF COMPILER6_UP}
// Added by dejoy (2005-04-20)
// A lot of TJVxxx control persistent properties used TPersistent,
// So and a TJvPersistentProperty to do this job. make to support batch-update mode
// and property change notify.
TJvPropertyChangeEvent = procedure(Sender: TObject; const PropName: string) of object;
TJvPersistentProperty = class(TPersistent)//?? TJvPersistent
private
FUpdateCount: Integer;
FOnChanging: TNotifyEvent;
FOnChange: TNotifyEvent;
FOnChangingProperty: TJvPropertyChangeEvent;
FOnChangeProperty: TJvPropertyChangeEvent;
protected
procedure Changed; virtual;
procedure Changing; virtual;
procedure ChangedProperty(const PropName: string); virtual;
procedure ChangingProperty(const PropName: string); virtual;
procedure SetUpdateState(Updating: Boolean); virtual;
property UpdateCount: Integer read FUpdateCount;
public
procedure BeginUpdate; virtual;
procedure EndUpdate; virtual;
property OnChange: TNotifyEvent read FOnChange write FOnChange;
property OnChanging: TNotifyEvent read FOnChanging write FOnChanging;
property OnChangeProperty: TJvPropertyChangeEvent read FOnChangeProperty write FOnChangeProperty;
property OnChangingProperty: TJvPropertyChangeEvent read FOnChangingProperty write FOnChangingProperty;
end;
TJvRegKey = (hkClassesRoot, hkCurrentUser, hkLocalMachine, hkUsers,
hkPerformanceData, hkCurrentConfig, hkDynData);
TJvRegKeys = set of TJvRegKey;
// base JVCL Exception class to derive from
EJVCLException = class(Exception);
TJvLinkClickEvent = procedure(Sender: TObject; Link: string) of object;
// TOnRegistryChangeKey = procedure(Sender: TObject; RootKey: HKEY; Path: string) of object;
// TAngle = 0..360;
TJvOutputMode = (omFile, omStream);
// TLabelDirection = (sdLeftToRight, sdRightToLeft); // JvScrollingLabel
TJvDoneFileEvent = procedure(Sender: TObject; FileName: string; FileSize: Integer; Url: string) of object;
TJvDoneStreamEvent = procedure(Sender: TObject; Stream: TStream; StreamSize: Integer; Url: string) of object;
TJvHTTPProgressEvent = procedure(Sender: TObject; UserData, Position: Integer; TotalSize: Integer; Url: string; var Continue: Boolean) of object;
TJvFTPProgressEvent = procedure(Sender: TObject; Position: Integer; Url: string) of object;
// from JvComponent.pas
TJvClipboardCommand = (caCopy, caCut, caPaste, caClear, caUndo);
TJvClipboardCommands = set of TJvClipboardCommand;
********************)
// used in JvButton
TCMForceSize = record
Msg: Cardinal;
NewSize: TSmallPoint;
Sender: TControl;
Result: Longint;
end;
(********************
PJvRGBArray = ^TJvRGBArray;
TJvRGBArray = array [0..MaxPixelCount] of TJvRGBTriple;
PRGBQuadArray = ^TRGBQuadArray;
TRGBQuadArray = array [0..MaxPixelCount] of TRGBQuad;
PRGBPalette = ^TRGBPalette;
TRGBPalette = array [Byte] of TRGBQuad;
{ (rom) unused
TJvPoint = class(TPersistent)
protected
FX: Integer;
FY: Integer;
published
property X: Integer read FX write FX;
property Y: Integer read FY write FY;
end;
}
TJvErrorEvent = procedure(Sender: TObject; ErrorMsg: string) of object;
TJvWaveLocation = (frFile, frResource, frRAM);
TJvPopupPosition = (ppNone, ppForm, ppApplication);
// TJvDirMask = (dmFileNameChange, dmDirnameChange, dmAttributesChange, dmSizeChange, dmLastWriteChange, dmSecurityChange); //JvDirectorySpy
// TJvDirMasks = set of TJvDirMask;
// EJvDirectoryError = class(EJVCLException); // JvDirectorySpy
// TListEvent = procedure(Sender: TObject; Title: string; Handle: THandle) of object; // JvWindowsTitle
TJvProgressEvent = procedure(Sender: TObject; Current, Total: Integer) of object;
TJvNextPageEvent = procedure(Sender: TObject; PageNumber: Integer) of object;
TJvBitmapStyle = (bsNormal, bsCentered, bsStretched);
// TOnOpened = procedure(Sender: TObject; Value: string) of object; // archive
// TOnOpenCanceled = procedure(Sender: TObject) of object; // archive
{$IFDEF COMPILER5}
{ TStream seek origins }
// TSeekOrigin = (soFromBeginning, soFromCurrent, soFromEnd);
// (outchy)
// TStream.Seek can not be used with TSeekOrigin
// soFromBeginning, soFromCurrent and soFromEnd are defined in Classes.pas
TWMNCPaint = packed record
Msg: Cardinal;
RGN: HRGN;
Unused: Longint;
Result: Longint;
end;
// (outchy) defined in Windows.pas
// PInteger = ^Integer;
// PDouble = ^Double;
PBoolean = ^Boolean;
PWordBool = ^WordBool;
PCardinal = ^Cardinal;
// PByte = ^Byte;
TVarType = Word;
{$ENDIF COMPILER5}
TJvGradientStyle = (grFilled, grEllipse, grHorizontal, grVertical, grPyramid, grMount);
// TOnDelete = procedure(Sender: TObject; Path: string) of object;
TJvParentEvent = procedure(Sender: TObject; ParentWindow: THandle) of object;
// TOnImage = procedure(Sender: TObject; Image: TBitmap) of object; // JvClipboardViewer
// TOnText = procedure(Sender: TObject; Text: string) of object;
// TJvRestart = (rsLogoff, rsShutdown, rsReboot, rsRestart, rsRebootSystem, rsExitAndExecApp);
// TJvRunOption = (roNoBrowse, roNoDefault, roCalcDirectory, roNoLabel, roNoSeparateMem); // JvRunDlg
// TJvRunOptions = set of TJvRunOption; // JvRunDlg
// TJvFileKind = (ftFile, ftPrinter); // JvObjectPropertiesDlg
// TSHFormatDrive = function(Handle: THandle; Drive, ID, Options: Word): LongInt; stdcall; // JvFormatDrive
// TFormatOption = (shQuickFormat, shFull, shSystemFilesOnly); // JvFormatDrive
// TButtonStyle = (bsAbortRetryIgnore, bsOk, bsOkCancel, bsRetryCancel, bsYesNo, bsYesNoCancel); // JvMessageBox
// TButtonDisplay = (bdIconExclamation, bdIconWarning, bdIconInformation, bdIconAsterisk, bdIconQuestion, bdIconStop, bdIconError, bdIconHand); // JvMessageBox
// TDefault = (dbButton1, dbButton2, dbButton3, dbButton4); // JvMessageBox
// TModality = (bmApplModal, bmSystemModal, bmTaskModal); // JvMessageBox
// TButtonOption = (boDefaultDesktopOnly, boHelp, boRight, boRtlReading, boSetForeground, boTopMost); // JvMessageBox
// TButtonOptions = set of TButtonOption; // JvMessageBox
// TButtonResult = (brAbort, brCancel, brIgnore, brNo, brOk, brRetry, brYes); // JvMessageBox
// TMsgStyle = (msBeep, msIconAsterisk, msIconExclamation, msIconHand, msIconQuestion, msOk); // JvMessageBeep
TJvDiskRes = (dsSuccess, dsCancel, dsSkipfile, dsError);
TJvDiskStyle = (idfCheckFirst, idfNoBeep, idfNoBrowse, idfNoCompressed, idfNoDetails,
idfNoForeground, idfNoSkip, idfOemDisk, idfWarnIfSkip);
TJvDiskStyles = set of TJvDiskStyle;
TJvDeleteStyle = (idNoBeep, idNoForeground);
TJvDeleteStyles = set of TJvDeleteStyle;
// TOnOk = procedure(Sender: TObject; Password: string; var Accept: Boolean) of object; // JvPasswordForm
// TCoordChanged = procedure(Sender: TObject; Coord: string) of object;
TJvNotifyParamsEvent = procedure(Sender: TObject; Params: Pointer) of object;
TJvFileInfoRec = record
Attributes: DWORD;
DisplayName: string;
ExeType: Integer;
Icon: HICON;
Location: string;
TypeName: string;
SysIconIndex: Integer;
end;
TJvAnimation = (anLeftRight, anRightLeft, anRightAndLeft, anLeftVumeter, anRightVumeter);
TJvAnimations = set of TJvAnimation;
// TOnFound = procedure(Sender: TObject; Path: string) of object; // JvSearchFile
// TOnChangedDir = procedure(Sender: TObject; Directory: string) of object; // JvSearchFile
// TOnAlarm = procedure(Sender: TObject; Keyword: string) of object; // JvAlarm
{ TAlarm = record
Keyword: string;
DateTime: TDateTime;
end;
} // JvAlarm
// Bianconi - Moved from JvAlarms.pas
TJvTriggerKind =
(tkOneShot, tkEachSecond, tkEachMinute, tkEachHour, tkEachDay, tkEachMonth, tkEachYear);
// End of Bianconi
TJvFourCC = array [0..3] of Char;
PJvAniTag = ^TJvAniTag;
TJvAniTag = packed record
ckID: TJvFourCC;
ckSize: Longint;
end;
TJvAniHeader = packed record
dwSizeof: Longint;
dwFrames: Longint;
dwSteps: Longint;
dwCX: Longint;
dwCY: Longint;
dwBitCount: Longint;
dwPlanes: Longint;
dwJIFRate: Longint;
dwFlags: Longint;
end;
TJvChangeColorEvent = procedure(Sender: TObject; Foreground, Background: TColor) of object;
TJvLayout = (lTop, lCenter, lBottom);
TJvBevelStyle = (bsShape, bsLowered, bsRaised);
{for OnLoseFocus the AFocusControl argument will point at the control that
receives focus while for OnGetFocus it is the control that lost the focus}
TJvFocusChangeEvent = procedure(const ASender: TObject;
const AFocusControl: TWinControl) of object;
// JvJCLUtils
TTickCount = Cardinal;
{**** string handling routines}
TSetOfChar = TSysCharSet;
TCharSet = TSysCharSet;
TDateOrder = (doMDY, doDMY, doYMD);
TDayOfWeekName = (Sun, Mon, Tue, Wed, Thu, Fri, Sat);
TDaysOfWeek = set of TDayOfWeekName;
const
DefaultDateOrder = doDMY;
CenturyOffset: Byte = 60;
NullDate: TDateTime = 0; {-693594}
type
// JvDriveCtrls / JvLookOut
TJvImageSize = (isSmall, isLarge);
TJvImageAlign = (iaLeft, iaCentered);
TJvDriveType = (dtUnknown, dtRemovable, dtFixed, dtRemote, dtCDROM, dtRamDisk);
TJvDriveTypes = set of TJvDriveType;
********************)
type
// Defines how a property (like a HotTrackFont) follows changes in the component's normal Font
TJvTrackFontOption = (
hoFollowFont, // makes HotTrackFont follow changes to the normal Font
hoPreserveCharSet, // don't change HotTrackFont.Charset
hoPreserveColor, // don't change HotTrackFont.Color
hoPreserveHeight, // don't change HotTrackFont.Height (affects Size as well)
hoPreserveName, // don't change HotTrackFont.Name
hoPreservePitch, // don't change HotTrackFont.Pitch
hoPreserveStyle); // don't change HotTrackFont.Style
TJvTrackFontOptions = set of TJvTrackFontOption;
const
DefaultTrackFontOptions = [hoFollowFont, hoPreserveColor, hoPreserveStyle];
(********************
type
// from JvListView.pas
TJvSortMethod = (smAutomatic, smAlphabetic, smNonCaseSensitive, smNumeric, smDate, smTime, smDateTime, smCurrency);
TJvListViewColumnSortEvent = procedure(Sender: TObject; Column: Integer; var AMethod: TJvSortMethod) of object;
// from JvOfficeColorPanel.pas
TJvAddInControlSiteInfo = record
AddInControl: TControl;
BoundsRect: TRect;
SiteInfoData: TObject;
end;
TJvClickColorType =
(cctColors, cctNoneColor, cctDefaultColor, cctCustomColor, cctAddInControl, cctNone);
TJvHoldCustomColorEvent = procedure(Sender: TObject; AColor: TColor) of object;
TJvColorQuadLayOut = (cqlNone, cqlLeft, cqlRight, cqlClient);
TJvGetAddInControlSiteInfoEvent = procedure(Sender: TControl; var ASiteInfo: TJvAddInControlSiteInfo) of object;
// from JvColorProvider.pas
TColorType = (ctStandard, ctSystem, ctCustom);
TDefColorItem = record
Value: TColor;
Constant: string;
Description: string;
end;
const
ColCount = 20;
StandardColCount = 40;
SysColCount = 30;
{$IFDEF COMPILER5}
clSystemColor = TColor($80000000);
clHotLight = TColor(clSystemColor or COLOR_HOTLIGHT);
clGradientActiveCaption = TColor(clSystemColor or COLOR_GRADIENTACTIVECAPTION);
clGradientInactiveCaption = TColor(clSystemColor or COLOR_GRADIENTINACTIVECAPTION);
clMenuHighlight = TColor(clSystemColor or COLOR_MENUHILIGHT);
clMenuBar = TColor(clSystemColor or COLOR_MENUBAR);
{$ENDIF COMPILER5}
{$IFDEF COMPILER6}
{$IF not declared(clHotLight)}
{$MESSAGE ERROR 'You do not have installed Delphi 6 Update 2. Please install this before installing the JVCL. http://www.borland.com/downloads/registered/del6_reg_updates_prompt.html'}
{$IFEND}
{$ENDIF COMPILER6}
ColorValues: array [0 .. ColCount - 1] of TDefColorItem = (
(Value: clBlack; Constant: 'clBlack'; Description: RsClBlack),
(Value: clMaroon; Constant: 'clMaroon'; Description: RsClMaroon),
(Value: clGreen; Constant: 'clGreen'; Description: RsClGreen),
(Value: clOlive; Constant: 'clOlive'; Description: RsClOlive),
(Value: clNavy; Constant: 'clNavy'; Description: RsClNavy),
(Value: clPurple; Constant: 'clPurple'; Description: RsClPurple),
(Value: clTeal; Constant: 'clTeal'; Description: RsClTeal),
(Value: clGray; Constant: 'clGray'; Description: RsClGray),
(Value: clSilver; Constant: 'clSilver'; Description: RsClSilver),
(Value: clRed; Constant: 'clRed'; Description: RsClRed),
(Value: clLime; Constant: 'clLime'; Description: RsClLime),
(Value: clYellow; Constant: 'clYellow'; Description: RsClYellow),
(Value: clBlue; Constant: 'clBlue'; Description: RsClBlue),
(Value: clFuchsia; Constant: 'clFuchsia'; Description: RsClFuchsia),
(Value: clAqua; Constant: 'clAqua'; Description: RsClAqua),
(Value: clWhite; Constant: 'clWhite'; Description: RsClWhite),
(Value: clMoneyGreen; Constant: 'clMoneyGreen'; Description: RsClMoneyGreen),
(Value: clSkyBlue; Constant: 'clSkyBlue'; Description: RsClSkyBlue),
(Value: clCream; Constant: 'clCream'; Description: RsClCream),
(Value: clMedGray; Constant: 'clMedGray'; Description: RsClMedGray)
);
//added by dejoy (2005-04-20)
StandardColorValues: array [0 .. StandardColCount - 1] of TDefColorItem = (
(Value: $00000000; Constant: 'clBlack'; Description: RsClBlack),
(Value: $00003399; Constant: 'clBrown'; Description: RsClBrown),
(Value: $00003333; Constant: 'clOliveGreen'; Description: RsClOliveGreen),
(Value: $00003300; Constant: 'clDarkGreen'; Description: RsClDarkGreen),
(Value: $00663300; Constant: 'clDarkTeal'; Description: RsClDarkTeal),
(Value: $00800000; Constant: 'clDarkBlue'; Description: RsClDarkBlue),
(Value: $00993333; Constant: 'clIndigo'; Description: RsClIndigo),
(Value: $00333333; Constant: 'clGray80'; Description: RsClGray80),
(Value: $00000080; Constant: 'clDarkRed'; Description: RsClDarkRed),
(Value: $000066FF; Constant: 'clOrange'; Description: RsClOrange),
(Value: $00008080; Constant: 'clDarkYellow'; Description: RsClDarkYellow),
(Value: $00008000; Constant: 'clGreen'; Description: RsClGreen),
(Value: $00808000; Constant: 'clTeal'; Description: RsClTeal),
(Value: $00FF0000; Constant: 'clBlue'; Description: RsClBlue),
(Value: $00996666; Constant: 'clBlueGray'; Description: RsClBlueGray),
(Value: $00808080; Constant: 'clGray50'; Description: RsClGray50),
(Value: $000000FF; Constant: 'clRed'; Description: RsClRed),
(Value: $000099FF; Constant: 'clLightOrange'; Description: RsClLightOrange),
(Value: $0000CC99; Constant: 'clLime'; Description: RsClLime),
(Value: $00669933; Constant: 'clSeaGreen'; Description: RsClSeaGreen),
(Value: $00999933; Constant: 'clAqua'; Description: RsClAqua),
(Value: $00FF6633; Constant: 'clLightBlue'; Description: RsClLightBlue),
(Value: $00800080; Constant: 'clViolet'; Description: RsClViolet),
(Value: $00999999; Constant: 'clGray40'; Description: RsClGray40),
(Value: $00FF00FF; Constant: 'clPink'; Description: RsClPink),
(Value: $0000CCFF; Constant: 'clGold'; Description: RsClGold),
(Value: $0000FFFF; Constant: 'clYellow'; Description: RsClYellow),
(Value: $0000FF00; Constant: 'clBrightGreen'; Description: RsClBrightGreen),
(Value: $00FFFF00; Constant: 'clTurquoise'; Description: RsClTurquoise),
(Value: $00F0CAA6; Constant: 'clSkyBlue'; Description: RsClSkyBlue),
(Value: $00663399; Constant: 'clPlum'; Description: RsClPlum),
(Value: $00C0C0C0; Constant: 'clGray25'; Description: RsClGray25),
(Value: $00CC99FF; Constant: 'clRose'; Description: RsClRose),
(Value: $0099CCFF; Constant: 'clTan'; Description: RsClTan),
(Value: $0099FFFF; Constant: 'clLightYellow'; Description: RsClLightYellow),
(Value: $00CCFFCC; Constant: 'clLightGreen'; Description: RsClLightGreen),
(Value: $00FFFFCC; Constant: 'clLightTurquoise'; Description: RsClLightTurquoise),
(Value: $00FFCC99; Constant: 'clPaleBlue'; Description: RsClPaleBlue),
(Value: $00FF99CC; Constant: 'clLavender'; Description: RsClLavender),
(Value: $00FFFFFF; Constant: 'clWhite'; Description: RsClWhite)
);
SysColorValues: array [0 .. SysColCount - 1] of TDefColorItem = (
(Value: clScrollBar; Constant: 'clScrollBar'; Description: RsClScrollBar),
(Value: clBackground; Constant: 'clBackground'; Description: RsClBackground),
(Value: clActiveCaption; Constant: 'clActiveCaption'; Description: RsClActiveCaption),
(Value: clInactiveCaption; Constant: 'clInactiveCaption'; Description: RsClInactiveCaption),
(Value: clMenu; Constant: 'clMenu'; Description: RsClMenu),
(Value: clWindow; Constant: 'clWindow'; Description: RsClWindow),
(Value: clWindowFrame; Constant: 'clWindowFrame'; Description: RsClWindowFrame),
(Value: clMenuText; Constant: 'clMenuText'; Description: RsClMenuText),
(Value: clWindowText; Constant: 'clWindowText'; Description: RsClWindowText),
(Value: clCaptionText; Constant: 'clCaptionText'; Description: RsClCaptionText),
(Value: clActiveBorder; Constant: 'clActiveBorder'; Description: RsClActiveBorder),
(Value: clInactiveBorder; Constant: 'clInactiveBorder'; Description: RsClInactiveBorder),
(Value: clAppWorkSpace; Constant: 'clAppWorkSpace'; Description: RsClAppWorkSpace),
(Value: clHighlight; Constant: 'clHighlight'; Description: RsClHighlight),
(Value: clHighlightText; Constant: 'clHighlightText'; Description: RsClHighlightText),
(Value: clBtnFace; Constant: 'clBtnFace'; Description: RsClBtnFace),
(Value: clBtnShadow; Constant: 'clBtnShadow'; Description: RsClBtnShadow),
(Value: clGrayText; Constant: 'clGrayText'; Description: RsClGrayText),
(Value: clBtnText; Constant: 'clBtnText'; Description: RsClBtnText),
(Value: clInactiveCaptionText; Constant: 'clInactiveCaptionText'; Description: RsClInactiveCaptionText),
(Value: clBtnHighlight; Constant: 'clBtnHighlight'; Description: RsClBtnHighlight),
(Value: cl3DDkShadow; Constant: 'cl3DDkShadow'; Description: RsCl3DDkShadow),
(Value: cl3DLight; Constant: 'cl3DLight'; Description: RsCl3DLight),
(Value: clInfoText; Constant: 'clInfoText'; Description: RsClInfoText),
(Value: clInfoBk; Constant: 'clInfoBk'; Description: RsClInfoBk),
(Value: clGradientActiveCaption; Constant: 'clGradientActiveCaption'; Description: RsGradientActiveCaption),
(Value: clGradientInactiveCaption; Constant: 'clGradientInactiveCaption';Description: RsGradientInactiveCaption),
(Value: clHotLight; Constant: 'clHotLight'; Description: RsHotLight),
(Value: clMenuBar; Constant: 'clMenuBar'; Description: RsMenuBar),
(Value: clMenuHighlight; Constant: 'clMenuHighlight'; Description: RsMenuHighlight)
);
type
TJvSizeRect = packed record
Top: Integer;
Left: Integer;
Width: Integer;
Height: Integer;
end;
{$IFNDEF CLR}
TJvMessage = packed record
Msg: Integer;
case Integer of
0:
(
WParam: Integer;
LParam: Integer;
Result: Integer;
);
1:
(
WParamLo: Word;
WParamHi: Word;
LParamLo: Word;
LParamHi: Word;
ResultLo: Word;
ResultHi: Word;
);
2:
( // WM_NOPARAMS
Unused: array[0..3] of Word;
Handled: LongBool; // "Result"
);
3:
( // WM_SCROLL
Pos: Integer; // WParam
ScrollCode: Integer; // LParam
);
4:
( // WM_TIMER
TimerID: Integer; // WParam
TimerProc: TTimerProc;// LParam
);
5:
( // WM_MOUSEACTIVATE
TopLevel: HWND; // WParam
HitTestCode: Word; // LParamLo
MouseMsg: Word; // LParamHi
);
6:
( // WM_MOUSE(WHEEL) | WM_MOVE
case Integer of
0:
( // WM_MOUSE
Keys: Integer; // WParam
// LParam: Pos | (XPos, YPos)
case Integer of
0:
(
Position: TSmallPoint;
);
1:
(
XPos: Smallint;
YPos: Smallint;
)
);
1:
( // WM_MOUSEWHEEL
WheelDelta: Integer; // WParam
);
);
7:
( // WM_ACTIVATE
Active: Word; { WA_INACTIVE, WA_ACTIVE, WA_CLICKACTIVE } // WParamLo
Minimized: WordBool; // WParamHi
ActiveWindow: HWND; // LParam
);
8:
( // WM_COMMAND
ItemID: Word; // WParamLo
NotifyCode: Word; // WParamHi
Ctl: HWND; // LParam
);
9:
( // WM_GETICON
BigIcon: LongBool;
);
10:
( // CM_(FOCUS|CONTROL)CHANGED | CM_HINTSHOW
Reserved: Integer; // WParam
case Integer of
0:
( // CM_(CONTROL)CHANGED
Child: TControl; // LParam
);
1:
( // CM_FOCUSCHANGED | CM_FORCESIZE }
Sender: TControl; // LParam
);
2:
( //CM_HINTSHOW
HintInfo: PHintInfo;
)
);
11:
( // CM_CONTROLLISTCHANGE | CM_(CONTROL)CHANGED (| CM_BUTTONPRESSED for clx)
Control: TControl; // WParam
case Integer of
0:
( // CM_(CONTROL)CHANGED
Inserting: LongBool; // LParam
);
1: // CM_BUTTONPRESSED (clx)
(
Index: Integer;
)
);
12:
( // CM_HINTSHOWPAUSE
WasActive: LongBool;
Pause: PInteger;
);
13:
( // WM_KEY
CharCode: Word;
NotUsed: Word;
KeyData: Integer;
);
14:
( // WM_GETTEXT
TextMax: Integer;
Text: PChar
);
15:
( // WM_ERASEBKGND | WM_PAINT
DC: HDC;
);
16:
( // WM_KILLFOCUS
FocusedWnd: HWND;
);
17:
(
NewSize: TSmallPoint; //CM_FORCESIZE wParam
);
18:
( { alternative naming for VCL CM_BUTTONPRESSED }
GroupIndex: Integer;
Button: TControl;
);
end;
{$ENDIF !CLR}
***************)
implementation
(***************
{$IFDEF COMPILER6_UP}
constructor TJvPersistent.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
SetSubComponent(True);
Name := 'SubComponent';
end;
{$ENDIF COMPILER6_UP}
{ TJvPersistentProperty }
procedure TJvPersistentProperty.BeginUpdate;
begin
if FUpdateCount = 0 then
SetUpdateState(True);
Inc(FUpdateCount);
end;
procedure TJvPersistentProperty.Changed;
begin
if (FUpdateCount = 0) and Assigned(FOnChange) then
FOnChange(Self);
end;
procedure TJvPersistentProperty.ChangedProperty(const PropName: string);
begin
if Assigned(FOnChangeProperty) then
FOnChangeProperty(Self, PropName);
end;
procedure TJvPersistentProperty.Changing;
begin
if (FUpdateCount = 0) and Assigned(FOnChanging) then
FOnChanging(Self);
end;
procedure TJvPersistentProperty.ChangingProperty(const PropName: string);
begin
if Assigned(FOnChangingProperty) then
FOnChangingProperty(Self, PropName);
end;
procedure TJvPersistentProperty.EndUpdate;
begin
Dec(FUpdateCount);
if FUpdateCount = 0 then
SetUpdateState(False);
end;
procedure TJvPersistentProperty.SetUpdateState(Updating: Boolean);
begin
if Updating then
Changing
else
Changed;
end;
***************)
end.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,913 @@
{-----------------------------------------------------------------------------
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: JvXPCore.PAS, released on 2004-01-01.
The Initial Developer of the Original Code is Marc Hoffman.
Portions created by Marc Hoffman are Copyright (C) 2002 APRIORI business solutions AG.
Portions created by APRIORI business solutions AG are Copyright (C) 2002 APRIORI business solutions AG
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.sourceforge.net
Known Issues:
-----------------------------------------------------------------------------}
// $Id: JvXPCore.pas 11400 2007-06-28 21:24:06Z ahuser $
// Ported to Lazarus (no too hard after all) by Sergio Samayoa - september 2007.
// Still dont tested on linux.
unit JvXPCore;
{$mode objfpc}{$H+}
interface
uses
Classes, Controls, Forms, Graphics, LCLIntf, LCLType, LMessages;
(* 23.09.2007 - SESS - unused
const
{ color constants.
these constants are used as default colors for descendant controls
and may be replaced with other (common) values.
syntax: JvXPColor_[Control]_[Enabled: Enb, Dis]_[Type]_[Theme: WXP, OXP] }
{ button colors - WindowsXP }
dxColor_Btn_Enb_Border_WXP = TColor($00733800); // border line
dxColor_Btn_Dis_Border_WXP = TColor($00BDC7CE); // border line (disabled)
dxColor_Btn_Enb_Edges_WXP = TColor($00AD9E7B); // border edges
dxColor_Btn_Dis_Edges_WXP = TColor($00BDC7CE); // border edges (disabled)
dxColor_Btn_Enb_BgFrom_WXP = TColor($00FFFFFF); // background from
dxColor_Btn_Enb_BgTo_WXP = TColor($00E7EBEF); // background to
dxColor_Btn_Enb_CkFrom_WXP = TColor($00C6CFD6); // clicked from
dxColor_Btn_Enb_CkTo_WXP = TColor($00EBF3F7); // clicked to
dxColor_Btn_Enb_FcFrom_WXP = TColor($00FFE7CE); // focused from
dxColor_Btn_Enb_FcTo_WXP = TColor($00EF846D); // focused to
dxColor_Btn_Enb_HlFrom_WXP = TColor($00CEF3FF); // highlight from
dxColor_Btn_Enb_HlTo_WXP = TColor($000096E7); // highlight to
{ checkbox colors - WindowsXP }
dxColor_Chk_Enb_Border_WXP = TColor($00845118); // border line
dxColor_Chk_Enb_NmSymb_WXP = TColor($0021A621); // symbol normal
dxColor_Chk_Enb_GraSymb_WXP = TColor($0071C671); // symbol grayed
{ misc colors - WindowsXP }
dxColor_Msc_Dis_Caption_WXP = TColor($0094A6A5); // caption color (disabled)
dxColor_DotNetFrame = TColor($00F7FBFF); // $00E7EBEF;
dxColor_BorderLineOXP = TColor($00663300);
dxColor_BgOXP = TColor($00D6BEB5);
dxColor_BgCkOXP = TColor($00CC9999);
type
TJvXPCustomStyleControl = class;
TJvXPBoundLines = set of
(
blLeft, // left line
blTop, // top line
blRight, // right line
blBottom // bottom line
);
23.09.2007 - SESS - unused *)
type
TJvXPControlStyle = set of
(
csRedrawCaptionChanged, // (default)
csRedrawBorderChanged, //
csRedrawEnabledChanged, // (default)
csRedrawFocusedChanged, // (default)
csRedrawMouseDown, // (default)
csRedrawMouseEnter, // (default)
csRedrawMouseLeave, // (default)
csRedrawMouseMove, //
csRedrawMouseUp, // (default)
csRedrawParentColorChanged, // (default)
csRedrawParentFontChanged, //
csRedrawPosChanged, //
csRedrawResized //
);
type
TJvXPDrawState = set of
(
dsDefault, // default
dsHighlight, // highlighted
dsClicked, // clicked
dsFocused // focused
);
(* 23.09.2007 - SESS - unused
TJvXPGlyphLayout =
(
glBottom, // bottom glyph
glCenter, // centered glyph
glTop // top glyph
);
TJvXPTheme =
(
WindowsXP, // WindowsXP theme
OfficeXP // OfficeXP theme
);
{ baseclass for non-focusable component descendants. }
TJvXPCustomComponent = class(TComponent)
private
FVersion: string;
procedure SetVersion(const Value: string);
public
constructor Create(AOwner: TComponent); override;
published
property Version: string read FVersion write SetVersion stored False;
end;
23.09.2007 - SESS - unused *)
type
TJvXPWinControl = class(TWinControl)
published
property Color;
end;
{ baseclass for focusable control descendants. }
TJvXPCustomControl = class(TCustomControl)
private
FClicking: Boolean;
FDrawState: TJvXPDrawState;
FIsLocked: Boolean;
FIsSibling: Boolean;
FModalResult: TModalResult;
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
FVersion: string;
procedure SetVersion(const Value: string);
procedure CMFocusChanged(var Msg: TLMessage); message CM_FOCUSCHANGED;
procedure CMDialogChar(var Msg: TCMDialogChar); message CM_DIALOGCHAR;
procedure CMBorderChanged(var Msg: TLMessage); message CM_BORDERCHANGED;
procedure CMEnabledChanged(var Msg: TLMessage); message CM_ENABLEDCHANGED;
procedure CMMouseEnter(var Msg: TLMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Msg: TLMessage); message CM_MOUSELEAVE;
procedure CMParentColorChanged(var Msg: TLMessage); message CM_PARENTCOLORCHANGED;
//21.09.07 - SESS
//procedure CMParentFontChanged(var Msg: TLMessage); message CM_PARENTFONTCHANGED;
procedure CMTextChanged(var Msg: TLMessage); message CM_TEXTCHANGED;
procedure WMMouseMove(var Msg: TLMMouse); message LM_MOUSEMOVE;
procedure WMSize(var Msg: TLMSize); message LM_SIZE;
procedure WMWindowPosChanged(var Msg: TLMWindowPosChanged); message LM_WINDOWPOSCHANGED;
protected
ExControlStyle: TJvXPControlStyle;
procedure InternalRedraw; dynamic;
procedure HookBorderChanged; dynamic;
procedure HookEnabledChanged; dynamic;
procedure HookFocusedChanged; dynamic;
procedure HookMouseDown; dynamic;
procedure HookMouseEnter; dynamic;
procedure HookMouseLeave; dynamic;
procedure HookMouseMove(X: Integer = 0; Y: Integer = 0); dynamic;
procedure HookMouseUp; dynamic;
procedure HookParentColorChanged; dynamic;
procedure HookParentFontChanged; dynamic;
procedure HookPosChanged; dynamic;
procedure HookResized; dynamic;
procedure HookTextChanged; dynamic;
procedure BeginUpdate; dynamic;
procedure EndUpdate; dynamic;
procedure LockedInvalidate; dynamic;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure Click; override;
property ModalResult: TModalResult read FModalResult write FModalResult default 0;
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
public
constructor Create(AOwner: TComponent); override;
property Canvas;
property DrawState: TJvXPDrawState read FDrawState write FDrawState;
property IsLocked: Boolean read FIsLocked write FIsLocked;
property IsSibling: Boolean read FIsSibling write FIsSibling;
published
property Version: string read FVersion write SetVersion stored False;
end;
(* 23.09.2007 - SESS - unused
TJvXPUnlimitedControl = class(TJvXPCustomControl)
published
//property BevelInner;
//property BevelOuter;
//property BevelWidth;
//property BiDiMode;
//property Ctl3D;
//property DockSite;
//property ParentBiDiMode;
//property ParentCtl3D;
//property TabOrder;
//property TabStop;
//property UseDockManager default True;
property Align;
property Anchors;
//property AutoSize;
property Constraints;
property DragCursor;
property DragKind;
//21.09.07 - SESS resolver
//property OnCanResize;
property DragMode;
//property Enabled;
property Font;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property Visible;
//property OnDockDrop;
//property OnDockOver;
//property OnEndDock;
//property OnGetSiteInfo;
//property OnStartDock;
//property OnUnDock;
property OnClick;
property OnConstrainedResize;
property OnContextPopup;
property OnDragDrop;
property OnDragOver;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMouseDown;
property OnMouseEnter;
property OnMouseLeave;
property OnMouseMove;
property OnMouseUp;
property OnStartDrag;
end;
TJvXPStyle = class(TPersistent)
private
FTheme: TJvXPTheme;
FUseStyleManager: Boolean;
protected
Parent: TJvXPCustomStyleControl;
procedure SetTheme(Value: TJvXPTheme); virtual;
procedure SetUseStyleManager(Value: Boolean); virtual;
public
constructor Create(AOwner: TComponent);
function GetTheme: TJvXPTheme;
published
property Theme: TJvXPTheme read FTheme write SetTheme default WindowsXP;
property UseStyleManager: Boolean read FUseStyleManager write SetUseStyleManager default True;
end;
TJvXPStyleManager = class(TJvXPCustomComponent)
private
FControls: TList;
FTheme: TJvXPTheme;
FOnThemeChanged: TNotifyEvent;
procedure InvalidateControls;
protected
procedure SetTheme(Value: TJvXPTheme); virtual;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure RegisterControls(const AControls: array of TJvXPCustomControl);
procedure UnregisterControls(const AControls: array of TJvXPCustomControl);
published
property Theme: TJvXPTheme read FTheme write SetTheme default WindowsXP;
property OnThemeChanged: TNotifyEvent read FOnThemeChanged write FOnThemeChanged;
end;
TJvXPCustomStyleControl = class(TJvXPCustomControl)
private
FStyle: TJvXPStyle;
FStyleManager: TJvXPStyleManager;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
protected
procedure SetStyleManager(Value: TJvXPStyleManager); virtual;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
property Style: TJvXPStyle read FStyle write FStyle;
property StyleManager: TJvXPStyleManager read FStyleManager write SetStyleManager;
end;
23.09.2007 - SESS - unused *)
TJvXPGradientColors = 2..255;
TJvXPGradientStyle = (gsLeft, gsTop, gsRight, gsBottom);
(* 23.09.2007 - SESS - unused
TJvXPGradient = class(TPersistent)
private
FColors: TJvXPGradientColors;
FDithered: Boolean;
FEnabled: Boolean;
FEndColor: TColor;
FStartColor: TColor;
FGradientStyle: TJvXPGradientStyle;
protected
Parent: TJvXPCustomControl;
procedure SetDithered(Value: Boolean); virtual;
procedure SetColors(Value: TJvXPGradientColors); virtual;
procedure SetEnabled(Value: Boolean); virtual;
procedure SetEndColor(Value: TColor); virtual;
procedure SetGradientStyle(Value: TJvXPGradientStyle); virtual;
procedure SetStartColor(Value: TColor); virtual;
public
Bitmap: TBitmap;
constructor Create(AOwner: TControl);
destructor Destroy; override;
procedure RecreateBands; virtual;
published
property Dithered: Boolean read FDithered write SetDithered default True;
property Colors: TJvXPGradientColors read FColors write SetColors default 16;
property Enabled: Boolean read FEnabled write SetEnabled default False;
property EndColor: TColor read FEndColor write SetEndColor default clSilver;
property StartColor: TColor read FStartColor write SetStartColor default clGray;
property Style: TJvXPGradientStyle read FGradientStyle write SetGradientStyle default gsLeft;
end;
23.09.2007 - SESS - unused *)
implementation
(* 23.09.2007 - SESS - Original strings
uses
JvXPCoreUtils;
resourcestring
RsCopyright = 'Design eXperience. (c) 2002 M. Hoffmann Version ';
RsCopyright2 = 'Design eXperience II - (c) 2002 M. Hoffmann Version ';
RsVersion = '2.0.1'; // always increase version number on new releases!
*)
(* 23.09.2007 - SESS - unused
//=== { TJvXPCustomComponent } ===============================================
constructor TJvXPCustomComponent.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FVersion := RsCopyright + RsVersion;
end;
procedure TJvXPCustomComponent.SetVersion(const Value: string);
begin
// do not enable overwriting this constant.
end;
23.09.2007 - SESS - unused *)
//=== { TJvXPCustomControl } =================================================
constructor TJvXPCustomControl.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := ControlStyle + [csOpaque, csReplicatable];
DoubleBuffered := True;
ExControlStyle := [csRedrawEnabledChanged, csRedrawFocusedChanged,
csRedrawMouseDown, csRedrawMouseEnter, csRedrawMouseLeave, csRedrawMouseUp,
csRedrawParentColorChanged, csRedrawCaptionChanged];
FClicking := False;
FDrawState := [dsDefault];
FIsLocked := False;
FIsSibling := False;
FModalResult := 0;
// 23.09.2007 - SESS
// FVersion := RsCopyright2 + RsVersion;
FVersion := 'JvXP (JVCL) for Lazarus 1.0';
end;
procedure TJvXPCustomControl.SetVersion(const Value: string);
begin
// disallow changing this property.
end;
procedure TJvXPCustomControl.BeginUpdate;
begin
FIsLocked := True;
end;
procedure TJvXPCustomControl.EndUpdate;
begin
FIsLocked := False;
InternalRedraw;
end;
procedure TJvXPCustomControl.LockedInvalidate;
begin
if not IsLocked then
Invalidate;
end;
procedure TJvXPCustomControl.InternalRedraw;
begin
if not FIsLocked then
Invalidate;
end;
procedure TJvXPCustomControl.CMDialogChar(var Msg: TCMDialogChar);
begin
with Msg do
if IsAccel(CharCode, Caption) and CanFocus and
(Focused or ((GetKeyState(VK_MENU) and $8000) <> 0)) then
begin
Click;
Result := 1;
end
else
inherited;
end;
procedure TJvXPCustomControl.CMBorderChanged(var Msg: TLMessage);
begin
// delegate message "BorderChanged" to hook.
inherited;
HookBorderChanged;
end;
procedure TJvXPCustomControl.CMEnabledChanged(var Msg: TLMessage);
begin
// delegate message "EnabledChanged" to hook.
inherited;
HookEnabledChanged;
end;
procedure TJvXPCustomControl.CMFocusChanged(var Msg: TLMessage);
begin
// delegate message "FocusChanged" to hook.
inherited;
HookFocusedChanged;
end;
procedure TJvXPCustomControl.CMMouseEnter(var Msg: TLMessage);
begin
// delegate message "MouseEnter" to hook.
inherited;
HookMouseEnter;
end;
procedure TJvXPCustomControl.CMMouseLeave(var Msg: TLMessage);
begin
// delegate message "MouseLeave" to hook.
inherited;
HookMouseLeave;
end;
procedure TJvXPCustomControl.CMParentColorChanged(var Msg: TLMessage);
begin
// delegate message "ParentColorChanged" to hook.
inherited;
HookParentColorChanged;
end;
//21.09.07 - SESS resolver
(*
procedure TJvXPCustomControl.CMParentFontChanged(var Msg: TLMessage);
begin
// delegate message "ParentFontChanged" to hook.
inherited;
HookParentFontChanged;
end;
*)
procedure TJvXPCustomControl.CMTextChanged(var Msg: TLMessage);
begin
// delegate message "TextChanged" to hook.
inherited;
HookTextChanged;
end;
procedure TJvXPCustomControl.WMMouseMove(var Msg: TLMMouse);
begin
// delegate message "MouseMove" to hook.
inherited;
HookMouseMove(Msg.XPos, Msg.YPos);
end;
procedure TJvXPCustomControl.WMSize(var Msg: TLMSize);
begin
// delegate message "Size" to hook.
inherited;
HookResized;
end;
procedure TJvXPCustomControl.WMWindowPosChanged(var Msg: TLMWindowPosChanged);
begin
// delegate message "WindowPosChanged" to hook.
inherited;
HookPosChanged;
end;
procedure TJvXPCustomControl.MouseDown(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// delegate message "MouseDown" to hook.
inherited MouseDown(Button, Shift, X, Y);
if Button = mbLeft then
begin
FClicking := True;
HookMouseDown;
end;
end;
procedure TJvXPCustomControl.MouseUp(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// delegate message "MouseUp" to hook.
inherited MouseUp(Button, Shift, X, Y);
if FClicking then
begin
FClicking := False;
HookMouseUp;
end;
end;
procedure TJvXPCustomControl.Click;
var
Form: TCustomForm;
begin
Form := GetParentForm(Self);
if Form <> nil then
Form.ModalResult := ModalResult;
inherited Click;
end;
//
// hooks are used to interrupt default windows messages in an easier
// way - it's possible to override them in descendant classes.
// Beware of multiple redraw calls - if you know that the calling
// hooks always redraws the component, use the lock i.e. unlock methods
// (rom) or LockedInvalidate.
procedure TJvXPCustomControl.HookBorderChanged;
begin
// this hook is called, if the border property was changed.
// in that case we normaly have to redraw the control.
if csRedrawBorderChanged in ExControlStyle then
InternalRedraw;
end;
procedure TJvXPCustomControl.HookEnabledChanged;
begin
// this hook is called, if the enabled property was switched.
// in that case we normaly have to redraw the control.
if csRedrawEnabledChanged in ExControlStyle then
InternalRedraw;
end;
procedure TJvXPCustomControl.HookFocusedChanged;
begin
// this hook is called, if the currently focused control was changed.
if Focused then
Include(FDrawState, dsFocused)
else
begin
Exclude(FDrawState, dsFocused);
Exclude(FDrawState, dsClicked);
end;
FIsSibling := GetParentForm(Self).ActiveControl is TJvXPCustomControl;
if csRedrawFocusedChanged in ExControlStyle then
InternalRedraw;
end;
procedure TJvXPCustomControl.HookMouseEnter;
begin
// this hook is called, if the user moves (hover) the mouse over the control.
if not (csDesigning in ComponentState) then
begin
Include(FDrawState, dsHighlight);
if csRedrawMouseEnter in ExControlStyle then
InternalRedraw;
end;
if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);
end;
procedure TJvXPCustomControl.HookMouseLeave;
begin
// this hook is called, if the user moves the mouse away (unhover) from
// the control.
if not (csDesigning in ComponentState) then
begin
Exclude(FDrawState, dsHighlight);
if csRedrawMouseLeave in ExControlStyle then
InternalRedraw;
end;
if Assigned(FOnMouseLeave) then
FOnMouseLeave(Self);
end;
procedure TJvXPCustomControl.HookMouseMove(X: Integer = 0; Y: Integer = 0);
begin
// this hook is called if the user moves the mouse inside the control.
if not (csDesigning in ComponentState) then
if csRedrawMouseMove in ExControlStyle then
InternalRedraw;
end;
procedure TJvXPCustomControl.HookMouseDown;
begin
// this hook is called, if the user presses the left mouse button over the
// controls.
if not Focused and CanFocus then
SetFocus;
Include(FDrawState, dsClicked);
if csRedrawMouseDown in ExControlStyle then
InternalRedraw;
end;
procedure TJvXPCustomControl.HookMouseUp;
var
CurrentPos: TPoint;
NewControl: TWinControl;
begin
// this hook is called, if the user releases the left mouse button.
begin
Exclude(FDrawState, dsClicked);
if csRedrawMouseUp in ExControlStyle then
InternalRedraw;
// does the cursor is over another supported control?
GetCursorPos(CurrentPos);
//21.09.2007 - SESS resolver
//NewControl := FindVCLWindow(CurrentPos);
NewControl := nil;
if (NewControl <> nil) and (NewControl <> Self) and
(NewControl.InheritsFrom(TJvXPCustomControl)) then
TJvXPCustomControl(NewControl).HookMouseEnter;
end;
end;
procedure TJvXPCustomControl.HookParentColorChanged;
begin
// this hook is called if, the parent color was changed.
if csRedrawParentColorChanged in ExControlStyle then
InternalRedraw;
end;
procedure TJvXPCustomControl.HookParentFontChanged;
begin
// this hook is called if, the parent font was changed.
if csRedrawParentFontChanged in ExControlStyle then
InternalRedraw;
end;
procedure TJvXPCustomControl.HookPosChanged;
begin
// this hook is called, if the window position was changed.
if csRedrawPosChanged in ExControlStyle then
InternalRedraw;
end;
procedure TJvXPCustomControl.HookResized;
begin
// this hook is called, if the control was resized.
if csRedrawResized in ExControlStyle then
InternalRedraw;
end;
procedure TJvXPCustomControl.HookTextChanged;
begin
// this hook is called, if the caption was changed.
if csRedrawCaptionChanged in ExControlStyle then
InternalRedraw;
end;
(* 23.09.2007 - SESS - unused
//=== { TJvXPStyle } =========================================================
constructor TJvXPStyle.Create(AOwner: TComponent);
begin
inherited Create;
Parent := TJvXPCustomStyleControl(AOwner);
FTheme := WindowsXP;
FUseStyleManager := True;
end;
procedure TJvXPStyle.SetTheme(Value: TJvXPTheme);
begin
if Value <> FTheme then
begin
FTheme := Value;
Parent.InternalRedraw;
end;
end;
function TJvXPStyle.GetTheme: TJvXPTheme;
begin
Result := FTheme;
if FUseStyleManager and Assigned(Parent.StyleManager) then
Result := Parent.StyleManager.Theme;
end;
procedure TJvXPStyle.SetUseStyleManager(Value: Boolean);
begin
if Value <> FUseStyleManager then
begin
FUseStyleManager := Value;
Parent.InternalRedraw;
end;
end;
//=== { TJvXPStyleManager } ==================================================
constructor TJvXPStyleManager.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FControls := TList.Create;
FTheme := WindowsXP;
end;
destructor TJvXPStyleManager.Destroy;
begin
InvalidateControls;
FControls.Free;
inherited Destroy;
end;
procedure TJvXPStyleManager.InvalidateControls;
var
I: Integer;
begin
for I := 0 to FControls.Count - 1 do
with TJvXPCustomControl(FControls[I]) do
InternalRedraw;
end;
procedure TJvXPStyleManager.SetTheme(Value: TJvXPTheme);
begin
if Value <> FTheme then
begin
FTheme := Value;
if Assigned(FOnThemeChanged) then
FOnThemeChanged(Self);
InvalidateControls;
end;
end;
procedure TJvXPStyleManager.RegisterControls(const AControls: array of TJvXPCustomControl);
var
I: Integer;
begin
for I := Low(AControls) to High(AControls) do
if FControls.IndexOf(AControls[I]) = -1 then
FControls.Add(AControls[I]);
end;
procedure TJvXPStyleManager.UnregisterControls(const AControls: array of TJvXPCustomControl);
var
I: Integer;
begin
for I := Low(AControls) to High(AControls) do
if FControls.IndexOf(AControls[I]) <> -1 then
FControls.Delete(FControls.IndexOf(AControls[I]));
end;
//=== { TJvXPCustomStyleControl } ============================================
constructor TJvXPCustomStyleControl.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FStyle := TJvXPStyle.Create(Self);
FStyleManager := nil;
end;
destructor TJvXPCustomStyleControl.Destroy;
begin
if FStyleManager <> nil then
FStyleManager.UnregisterControls([Self]);
FStyle.Free;
inherited Destroy;
end;
procedure TJvXPCustomStyleControl.Notification(AComponent: TComponent;
Operation: TOperation);
begin
if (AComponent is TJvXPStyleManager) and (Operation = opRemove) then
FStyleManager := nil;
inherited Notification(AComponent, Operation);
end;
procedure TJvXPCustomStyleControl.SetStyleManager(Value: TJvXPStyleManager);
begin
if Value <> FStyleManager then
begin
if Value <> nil then
Value.RegisterControls([Self])
else
FStyleManager.UnregisterControls([Self]);
FStyleManager := Value;
InternalRedraw;
end;
end;
//=== { TJvXPGradient } ======================================================
constructor TJvXPGradient.Create(AOwner: TControl);
begin
inherited Create;
Parent := TJvXPCustomControl(AOwner);
Bitmap := TBitmap.Create;
FColors := 16;
FDithered := True;
FEnabled := False;
FEndColor := clSilver;
FGradientStyle := gsLeft;
FStartColor := clGray;
end;
destructor TJvXPGradient.Destroy;
begin
Bitmap.Free;
inherited Destroy;
end;
procedure TJvXPGradient.RecreateBands;
begin
if Assigned(Bitmap) then
JvXPCreateGradientRect(Parent.Width, Parent.Height, FStartColor, FEndColor,
FColors, FGradientStyle, FDithered, Bitmap);
end;
procedure TJvXPGradient.SetDithered(Value: Boolean);
begin
if FDithered <> Value then
begin
FDithered := Value;
RecreateBands;
Parent.InternalRedraw;
end;
end;
procedure TJvXPGradient.SetColors(Value: TJvXPGradientColors);
begin
if FColors <> Value then
begin
FColors := Value;
RecreateBands;
Parent.InternalRedraw;
end;
end;
procedure TJvXPGradient.SetEnabled(Value: Boolean);
begin
if FEnabled <> Value then
begin
FEnabled := Value;
Parent.InternalRedraw;
end;
end;
procedure TJvXPGradient.SetEndColor(Value: TColor);
begin
if FEndColor <> Value then
begin
FEndColor := Value;
RecreateBands;
Parent.InternalRedraw;
end;
end;
procedure TJvXPGradient.SetGradientStyle(Value: TJvXPGradientStyle);
begin
if FGradientStyle <> Value then
begin
FGradientStyle := Value;
RecreateBands;
Parent.InternalRedraw;
end;
end;
procedure TJvXPGradient.SetStartColor(Value: TColor);
begin
if FStartColor <> Value then
begin
FStartColor := Value;
RecreateBands;
Parent.InternalRedraw;
end;
end;
*)
end.

View File

@ -0,0 +1,419 @@
{-----------------------------------------------------------------------------
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: JvXPCoreUtils.PAS, released on 2004-01-01.
The Initial Developer of the Original Code is Marc Hoffman.
Portions created by Marc Hoffman are Copyright (C) 2002 APRIORI business solutions AG.
Portions created by APRIORI business solutions AG are Copyright (C) 2002 APRIORI business solutions AG
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.sourceforge.net
Known Issues:
-----------------------------------------------------------------------------}
// $Id: JvXPCoreUtils.pas 11400 2007-06-28 21:24:06Z ahuser $
// Ported to Lazarus (no too hard after all) by Sergio Samayoa - september 2007.
// Still dont tested on linux.
unit JvXPCoreUtils;
{$mode objfpc}{$H+}
interface
uses
Classes, Controls, Graphics, LCLIntf, LCLType, SysUtils,
TypInfo, JvXPCore;
function JvXPMethodsEqual(const Method1, Method2: TMethod): Boolean;
procedure JvXPDrawLine(const ACanvas: TCanvas; const X1, Y1, X2, Y2: Integer);
(* 23.09.2007 - SESS - unused
procedure JvXPCreateGradientRect(const AWidth, AHeight: Integer; const StartColor,
EndColor: TColor; const AColors: TJvXPGradientColors; const Style: TJvXPGradientStyle;
const Dithered: Boolean; var Bitmap: TBitmap);
procedure JvXPAdjustBoundRect(const BorderWidth: Byte;
const ShowBoundLines: Boolean; const BoundLines: TJvXPBoundLines; var Rect: TRect);
procedure JvXPDrawBoundLines(const ACanvas: TCanvas; const BoundLines: TJvXPBoundLines;
const AColor: TColor; const Rect: TRect);
//
// attic!
//
procedure JvXPConvertToGray2(Bitmap: TBitmap);
procedure JvXPRenderText(const AParent: TControl; const ACanvas: TCanvas;
ACaption: TCaption; const AFont: TFont; const AEnabled, AShowAccelChar: Boolean;
var ARect: TRect; AFlags: Integer);
23.09.2007 - SESS - unused *)
procedure JvXPFrame3D(const ACanvas: TCanvas; const ARect: TRect;
const TopColor, BottomColor: TColor; const Swapped: Boolean = False);
(* 23.09.2007 - SESS - unused
procedure JvXPColorizeBitmap(Bitmap: TBitmap; const AColor: TColor);
procedure JvXPSetDrawFlags(const AAlignment: TAlignment; const AWordWrap: Boolean;
var Flags: Integer);
procedure JvXPPlaceText(const AParent: TControl; const ACanvas: TCanvas;
const AText: TCaption; const AFont: TFont; const AEnabled, AShowAccelChar: Boolean;
const AAlignment: TAlignment; const AWordWrap: Boolean; var Rect: TRect);
23.09.2007 - SESS - unused *)
implementation
function JvXPMethodsEqual(const Method1, Method2: TMethod): Boolean;
begin
Result := (Method1.Code = Method2.Code) and (Method1.Data = Method2.Data);
end;
(* 23.09.2007 - SESS - unused
procedure JvXPCreateGradientRect(const AWidth, AHeight: Integer; const StartColor,
EndColor: TColor; const AColors: TJvXPGradientColors; const Style: TJvXPGradientStyle;
const Dithered: Boolean; var Bitmap: TBitmap);
{ // Short version...
var
gd: TGradientDirection;
begin
if (AHeight <= 0) or (AWidth <= 0) then
Exit;
Bitmap.Height := AHeight;
Bitmap.Width := AWidth;
Bitmap.PixelFormat := pf24bit;
if Style in [gsLeft, gsRight] then
gd := gdHorizontal
else
gd := gdVertical;
Bitmap.Canvas.GradientFill(Rect(0, 0, AWidth, AHeight), StartColor, EndColor, gd);
end;
}
const
PixelCountMax = 32768;
DitherDepth = 16;
type
TGradientBand = array [0..255] of TColor;
TRGBMap = packed record
case Boolean of
True:
(RGBVal: DWord);
False:
(R, G, B, D: Byte);
end;
PRGBTripleArray = ^TRGBTripleArray;
TRGBTripleArray = array [0..PixelCountMax-1] of TRGBTriple;
var
iLoop, xLoop, yLoop, XX, YY: Integer;
iBndS, iBndE: Integer;
GBand: TGradientBand;
Row: PRGBTripleArray;
procedure CalculateGradientBand;
var
rR, rG, rB: Real;
lCol, hCol: TRGBMap;
iStp: Integer;
begin
if Style in [gsLeft, gsTop] then
begin
lCol.RGBVal := ColorToRGB(StartColor);
hCol.RGBVal := ColorToRGB(EndColor);
end
else
begin
lCol.RGBVal := ColorToRGB(EndColor);
hCol.RGBVal := ColorToRGB(StartColor);
end;
rR := (hCol.R - lCol.R) / (AColors - 1);
rG := (hCol.G - lCol.G) / (AColors - 1);
rB := (hCol.B - lCol.B) / (AColors - 1);
for iStp := 0 to (AColors - 1) do
GBand[iStp] := RGB(
lCol.R + Round(rR * iStp),
lCol.G + Round(rG * iStp),
lCol.B + Round(rB * iStp));
end;
begin
// Exit if Height or Width are not positive. If not, the calls would lead to
// GDI errors about "Invalid parameter" and/or "Out Of Resources".
if (AHeight <= 0) or (AWidth <= 0) then
Exit;
Bitmap.Height := AHeight;
Bitmap.Width := AWidth;
Bitmap.PixelFormat := pf24bit;
CalculateGradientBand;
with Bitmap.Canvas do
begin
Brush.Color := StartColor;
FillRect(Bounds(0, 0, AWidth, AHeight));
if Style in [gsLeft, gsRight] then
begin
for iLoop := 0 to AColors - 1 do
begin
iBndS := MulDiv(iLoop, AWidth, AColors);
iBndE := MulDiv(iLoop + 1, AWidth, AColors);
Brush.Color := GBand[iLoop];
PatBlt(Handle, iBndS, 0, iBndE, AHeigth, PATCOPY);
if (iLoop > 0) and Dithered then
for yLoop := 0 to DitherDepth - 1 do
if yLoop < AHeight then
begin
Row := Bitmap.ScanLine[yLoop];
for xLoop := 0 to AWidth div (AColors - 1) do
begin
XX := iBndS + Random(xLoop);
if (XX < AWidth) and (XX > -1) then
with Row[XX] do
begin
rgbtRed := GetRValue(GBand[iLoop - 1]);
rgbtGreen := GetGValue(GBand[iLoop - 1]);
rgbtBlue := GetBValue(GBand[iLoop - 1]);
end;
end;
end;
end;
for yLoop := 1 to AHeight div DitherDepth do
CopyRect(Bounds(0, yLoop * DitherDepth, AWidth, DitherDepth),
Bitmap.Canvas, Bounds(0, 0, AWidth, DitherDepth));
end
else
begin
for iLoop := 0 to AColors - 1 do
begin
iBndS := MulDiv(iLoop, AHeight, AColors);
iBndE := MulDiv(iLoop + 1, AHeight, AColors);
Brush.Color := GBand[iLoop];
PatBlt(Handle, 0, iBndS, AWidth, iBndE, PATCOPY);
if (iLoop > 0) and Dithered then
for yLoop := 0 to AHeight div (AColors - 1) do
begin
YY := iBndS + Random(yLoop);
if (YY < AHeight) and (YY > -1) then
begin
Row := Bitmap.ScanLine[YY];
for xLoop := 0 to DitherDepth - 1 do
if xLoop < AWidth then
with Row[xLoop] do
begin
rgbtRed := GetRValue(GBand[iLoop - 1]);
rgbtGreen := GetGValue(GBand[iLoop - 1]);
rgbtBlue := GetBValue(GBand[iLoop - 1]);
end;
end;
end;
end;
for xLoop := 0 to AWidth div DitherDepth do
CopyRect(Bounds(xLoop * DitherDepth, 0, DitherDepth, AHeight),
Bitmap.Canvas, Bounds(0, 0, DitherDepth, AHeight));
end;
end;
end;
*)
procedure JvXPDrawLine(const ACanvas: TCanvas; const X1, Y1, X2, Y2: Integer);
begin
with ACanvas do
begin
MoveTo(X1, Y1);
LineTo(X2, Y2);
end;
end;
(* 23.09.2007 - SESS - unused
procedure JvXPAdjustBoundRect(const BorderWidth: Byte;
const ShowBoundLines: Boolean; const BoundLines: TJvXPBoundLines;
var Rect: TRect);
begin
InflateRect(Rect, -BorderWidth, -BorderWidth);
if not ShowBoundLines then
Exit;
if blLeft in BoundLines then
Inc(Rect.Left);
if blRight in BoundLines then
Dec(Rect.Right);
if blTop in BoundLines then
Inc(Rect.Top);
if blBottom in BoundLines then
Dec(Rect.Bottom);
end;
procedure JvXPDrawBoundLines(const ACanvas: TCanvas; const BoundLines: TJvXPBoundLines;
const AColor: TColor; const Rect: TRect);
begin
with ACanvas do
begin
Pen.Color := AColor;
Pen.Style := psSolid;
if blLeft in BoundLines then
JvXPDrawLine(ACanvas, Rect.Left, Rect.Top, Rect.Left, Rect.Bottom - 1);
if blTop in BoundLines then
JvXPDrawLine(ACanvas, Rect.Left, Rect.Top, Rect.Right, Rect.Top);
if blRight in BoundLines then
JvXPDrawLine(ACanvas, Rect.Right - 1, Rect.Top, Rect.Right - 1, Rect.Bottom - 1);
if blBottom in BoundLines then
JvXPDrawLine(ACanvas, Rect.Top, Rect.Bottom - 1, Rect.Right, Rect.Bottom - 1);
end;
end;
//
// attic
//
procedure JvXPConvertToGray2(Bitmap: TBitmap);
var
x, y, c: Integer;
PxlColor: TColor;
begin
for x := 0 to Bitmap.Width - 1 do
for y := 0 to Bitmap.Height - 1 do
begin
PxlColor := ColorToRGB(Bitmap.Canvas.Pixels[x, y]);
c := (PxlColor shr 16 + ((PxlColor shr 8) and $00FF) + PxlColor and $0000FF) div 3 + 100;
if c > 255 then
c := 255;
Bitmap.Canvas.Pixels[x, y] := RGB(c, c, c);
end;
end;
procedure JvXPRenderText(const AParent: TControl; const ACanvas: TCanvas;
ACaption: TCaption; const AFont: TFont; const AEnabled, AShowAccelChar: Boolean;
var ARect: TRect; AFlags: Integer);
procedure DoDrawText;
begin
// (rom) Kludge! This will probably not work for CLX
DrawText(ACanvas.Handle, PChar(ACaption), -1, ARect, AFlags);
end;
begin
if (AFlags and DT_CALCRECT <> 0) and ((ACaption = '') or AShowAccelChar and
(ACaption[1] = '&') and (ACaption[2] = #0)) then
ACaption := ACaption + ' ';
if not AShowAccelChar then
AFlags := AFlags or DT_NOPREFIX;
AFlags := AParent.DrawTextBiDiModeFlags(AFlags);
with ACanvas do
begin
Font.Assign(AFont);
if not AEnabled then
Font.Color := dxColor_Msc_Dis_Caption_WXP;
if not AEnabled then
begin
OffsetRect(ARect, 1, 1);
Font.Color := clBtnHighlight;
DoDrawText;
OffsetRect(ARect, -1, -1);
Font.Color := clBtnShadow;
DoDrawText;
end
else
DoDrawText;
end;
end;
23.09.2007 - SESS - unused *)
procedure JvXPFrame3D(const ACanvas: TCanvas; const ARect: TRect;
const TopColor, BottomColor: TColor; const Swapped: Boolean = False);
var
ATopColor, ABottomColor: TColor;
begin
ATopColor := TopColor;
ABottomColor := BottomColor;
if Swapped then
begin
ATopColor := BottomColor;
ABottomColor := TopColor;
end;
with ACanvas do
begin
Pen.Color := ATopColor;
// 21.09.07 - SESS
Polyline([
Classes.Point(ARect.Left, ARect.Bottom - 1),
Classes.Point(ARect.Left, ARect.Top),
Classes.Point(ARect.Right - 1, ARect.Top)]);
Pen.Color := ABottomColor;
Polyline([
Classes.Point(ARect.Right - 1, ARect.Top + 1),
Classes.Point(ARect.Right - 1 , ARect.Bottom - 1),
Classes.Point(ARect.Left, ARect.Bottom - 1)]);
end;
end;
(* 23.09.2007 - SESS - unused
procedure JvXPColorizeBitmap(Bitmap: TBitmap; const AColor: TColor);
var
ColorMap: TBitmap;
Rect: TRect;
begin
Rect := Bounds(0, 0, Bitmap.Width, Bitmap.Height);
ColorMap := TBitmap.Create;
try
ColorMap.Assign(Bitmap);
Bitmap.FreeImage;
with ColorMap.Canvas do
begin
Brush.Color := AColor;
BrushCopy( Rect, Bitmap, Rect, clBlack);
end;
Bitmap.Assign(ColorMap);
finally
ColorMap.Free;
end;
end;
procedure JvXPSetDrawFlags(const AAlignment: TAlignment; const AWordWrap: Boolean;
var Flags: Integer);
begin
Flags := DT_END_ELLIPSIS;
case AAlignment of
taLeftJustify:
Flags := Flags or DT_LEFT;
taCenter:
Flags := Flags or DT_CENTER;
taRightJustify:
Flags := Flags or DT_RIGHT;
end;
if not AWordWrap then
Flags := Flags or DT_SINGLELINE
else
Flags := Flags or DT_WORDBREAK;
end;
procedure JvXPPlaceText(const AParent: TControl; const ACanvas: TCanvas; const AText: TCaption;
const AFont: TFont; const AEnabled, AShowAccelChar: Boolean; const AAlignment: TAlignment;
const AWordWrap: Boolean; var Rect: TRect);
var
Flags, DX, OH, OW: Integer;
begin
OH := Rect.Bottom - Rect.Top;
OW := Rect.Right - Rect.Left;
JvXPSetDrawFlags(AAlignment, AWordWrap, Flags);
JvXPRenderText(AParent, ACanvas, AText, AFont, AEnabled, AShowAccelChar, Rect,
Flags or DT_CALCRECT);
if AAlignment = taRightJustify then
DX := OW - (Rect.Right + Rect.Left)
else
if AAlignment = taCenter then
DX := (OW - Rect.Right) div 2
else
DX := 0;
OffsetRect(Rect, DX, (OH - Rect.Bottom) div 2);
JvXPRenderText(AParent, ACanvas, AText, AFont, AEnabled, AShowAccelChar, Rect, Flags);
end;
23.09.2007 - SESS - unused *)
end.