
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@272 8e941d3f-bd1b-0410-a28a-d453659cc2b4
483 lines
14 KiB
ObjectPascal
483 lines
14 KiB
ObjectPascal
// $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<64> 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<64> 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.
|
||
|