2016-07-17 20:05:36 +00:00
|
|
|
unit Unit1;
|
|
|
|
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
uses
|
|
|
|
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
|
2016-07-17 23:01:16 +00:00
|
|
|
StdCtrls, ColorBox, EditBtn, VpNavBar;
|
2016-07-17 20:05:36 +00:00
|
|
|
|
|
|
|
type
|
|
|
|
|
|
|
|
{ TForm1 }
|
|
|
|
|
|
|
|
TForm1 = class(TForm)
|
|
|
|
Bevel1: TBevel;
|
|
|
|
BtnAddFolder: TButton;
|
|
|
|
BtnAddItem: TButton;
|
2016-07-17 23:01:16 +00:00
|
|
|
BkColor: TColorBox;
|
|
|
|
BtnLoadBkImage: TButton;
|
2016-07-19 18:28:16 +00:00
|
|
|
CbPlaySounds: TCheckBox;
|
2016-07-17 23:01:16 +00:00
|
|
|
EdBkImage: TFileNameEdit;
|
2016-07-19 18:28:16 +00:00
|
|
|
EdSoundFile: TFileNameEdit;
|
2017-05-20 15:39:18 +00:00
|
|
|
GbBackgroud: TGroupBox;
|
|
|
|
GbSounds: TGroupBox;
|
2016-07-17 20:05:36 +00:00
|
|
|
IconsLbl: TLabel;
|
|
|
|
IconsLink: TLabel;
|
2016-07-17 23:01:16 +00:00
|
|
|
Panel2: TPanel;
|
2016-07-18 11:46:13 +00:00
|
|
|
RgBorderStyle: TRadioGroup;
|
2016-07-17 23:01:16 +00:00
|
|
|
RbBkColor: TRadioButton;
|
|
|
|
RbBkImage: TRadioButton;
|
|
|
|
RbBkImageTile: TRadioButton;
|
|
|
|
RbBkImageStretch: TRadioButton;
|
|
|
|
RbBkImageNormal: TRadioButton;
|
|
|
|
RgIconSize: TRadioGroup;
|
2016-07-17 20:05:36 +00:00
|
|
|
Label1: TLabel;
|
|
|
|
Images: TImageList;
|
|
|
|
Panel1: TPanel;
|
2016-07-17 23:01:16 +00:00
|
|
|
RgDrawingStyle: TRadioGroup;
|
2016-07-17 20:05:36 +00:00
|
|
|
VpNavBar1: TVpNavBar;
|
2016-07-17 23:01:16 +00:00
|
|
|
procedure BackgroundColorChange(Sender: TObject);
|
2016-07-17 20:05:36 +00:00
|
|
|
procedure BtnAddFolderClick(Sender: TObject);
|
|
|
|
procedure BtnAddItemClick(Sender: TObject);
|
2016-07-17 23:01:16 +00:00
|
|
|
procedure BtnLoadBkImageClick(Sender: TObject);
|
2016-07-19 18:28:16 +00:00
|
|
|
procedure CbPlaySoundsChange(Sender: TObject);
|
|
|
|
procedure EdSoundFileAcceptFileName(Sender: TObject; var Value: String);
|
|
|
|
procedure EdSoundFileEditingDone(Sender: TObject);
|
2016-07-17 20:05:36 +00:00
|
|
|
procedure FormCreate(Sender: TObject);
|
|
|
|
procedure IconsLinkClick(Sender: TObject);
|
|
|
|
procedure IconsLinkMouseEnter(Sender: TObject);
|
|
|
|
procedure IconsLinkMouseLeave(Sender: TObject);
|
2016-07-18 11:46:13 +00:00
|
|
|
procedure RgBorderStyleClick(Sender: TObject);
|
2016-07-17 23:01:16 +00:00
|
|
|
procedure RgDrawingStyleClick(Sender: TObject);
|
|
|
|
procedure RgIconSizeClick(Sender: TObject);
|
|
|
|
procedure RbBkColorChange(Sender: TObject);
|
2016-07-17 20:05:36 +00:00
|
|
|
procedure VpNavBar1FolderChanged(Sender: TObject; Index: Integer);
|
|
|
|
procedure VpNavBar1ItemClick(Sender: TObject; Button: TMouseButton;
|
|
|
|
Shift: TShiftState; Index: Integer);
|
|
|
|
private
|
|
|
|
{ private declarations }
|
|
|
|
public
|
|
|
|
{ public declarations }
|
|
|
|
end;
|
|
|
|
|
|
|
|
var
|
|
|
|
Form1: TForm1;
|
|
|
|
|
|
|
|
implementation
|
|
|
|
|
|
|
|
{$R *.lfm}
|
|
|
|
|
|
|
|
uses
|
2016-07-19 18:28:16 +00:00
|
|
|
LCLIntf,
|
|
|
|
VpMisc;
|
2016-07-17 20:05:36 +00:00
|
|
|
|
|
|
|
{ TForm1 }
|
|
|
|
|
2016-07-17 23:01:16 +00:00
|
|
|
procedure TForm1.BackgroundColorChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
VpNavBar1.BackgroundColor := BkColor.Selected;
|
|
|
|
end;
|
|
|
|
|
2016-07-17 20:05:36 +00:00
|
|
|
procedure TForm1.BtnAddFolderClick(Sender: TObject);
|
|
|
|
var
|
|
|
|
s: String;
|
|
|
|
begin
|
|
|
|
s := InputBox('Add folder', 'Folder name:', '');
|
|
|
|
if s <> '' then
|
|
|
|
VpNavBar1.AddFolder(s);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.BtnAddItemClick(Sender: TObject);
|
|
|
|
var
|
|
|
|
folder: TVpNavFolder;
|
|
|
|
item: TVpNavBtnItem;
|
|
|
|
s: String;
|
|
|
|
idx: Integer;
|
|
|
|
begin
|
|
|
|
if VpNavBar1.ActiveFolder = -1 then
|
|
|
|
exit;
|
|
|
|
s := InputBox('Add item', 'Item name:', '');
|
|
|
|
if s <> '' then begin
|
|
|
|
folder := VpNavBar1.Folders[VpNavBar1.ActiveFolder];
|
|
|
|
idx := folder.ItemCount;
|
|
|
|
VpNavBar1.AddItem(s, VpNavBar1.ActiveFolder, idx);
|
|
|
|
item := folder.Items[idx];
|
|
|
|
item.IconIndex := Random(VpNavBar1.Images.Count);
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
|
2016-07-17 23:01:16 +00:00
|
|
|
procedure TForm1.BtnLoadBkImageClick(Sender: TObject);
|
|
|
|
var
|
|
|
|
ext: String;
|
|
|
|
bmp: TBitmap;
|
|
|
|
jpg: TJpegImage;
|
|
|
|
png: TPortableNetworkGraphic;
|
|
|
|
begin
|
|
|
|
if EdBkImage.FileName = '' then
|
|
|
|
exit;
|
|
|
|
if not FileExists(EdBkImage.FileName) then
|
|
|
|
exit;
|
|
|
|
ext := Lowercase(ExtractFileExt(EdBkImage.FileName));
|
|
|
|
case ext of
|
|
|
|
'.bmp':
|
|
|
|
VpNavBar1.BackgroundImage.LoadFromFile(EdBkImage.FileName);
|
|
|
|
'.png':
|
|
|
|
begin
|
|
|
|
png := TPortableNetworkGraphic.Create;
|
|
|
|
try
|
|
|
|
png.LoadFromFile(EdBkImage.FileName);
|
|
|
|
VpNavBar1.BackgroundImage.Assign(png);
|
|
|
|
finally
|
|
|
|
png.Free;
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
'.jpg', '.jpeg':
|
|
|
|
begin
|
|
|
|
jpg := TJpegImage.Create;
|
|
|
|
try
|
|
|
|
jpg.LoadFromFile(EdBkImage.FileName);
|
|
|
|
VpNavBar1.BackgroundImage.Assign(jpg);
|
|
|
|
finally
|
|
|
|
jpg.Free;
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
{
|
|
|
|
pic := TPicture.Create;
|
|
|
|
try
|
|
|
|
pic.LoadFromFile(EdBkImage.FileName);
|
|
|
|
bmp := TBitmap.Create;
|
|
|
|
bmp.Assign(pic);
|
|
|
|
VpNavBar1.BackgroundImage.Assign(bmp);
|
|
|
|
finally
|
|
|
|
pic.Free;
|
|
|
|
end;
|
|
|
|
}
|
|
|
|
end;
|
|
|
|
|
2016-07-19 18:28:16 +00:00
|
|
|
procedure TForm1.CbPlaySoundsChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
VpNavBar1.PlaySounds := CbPlaySounds.Checked;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.EdSoundFileAcceptFileName(Sender: TObject; var Value: String);
|
|
|
|
begin
|
|
|
|
VpNavBar1.SoundAlias := ExpandFilename(Value);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.EdSoundFileEditingDone(Sender: TObject);
|
|
|
|
begin
|
|
|
|
VpNavBar1.SoundAlias := EdSoundFile.FileName;
|
|
|
|
end;
|
|
|
|
|
2016-07-17 20:05:36 +00:00
|
|
|
procedure TForm1.FormCreate(Sender: TObject);
|
|
|
|
begin
|
|
|
|
RandSeed := 1;
|
2016-07-19 18:28:16 +00:00
|
|
|
IconsLink.Left := IconsLbl.Left + GetLabelWidth(IconsLbl);
|
2016-07-17 23:01:16 +00:00
|
|
|
RgDrawingStyle.ItemIndex := ord(VpNavBar1.DrawingStyle);
|
2016-07-18 11:46:13 +00:00
|
|
|
RgBorderStyle.ItemIndex := ord(VpNavBar1.BorderStyle);
|
2016-07-17 23:01:16 +00:00
|
|
|
BkColor.Selected := VpNavBar1.BackgroundColor;
|
|
|
|
case VpNavBar1.BackgroundMethod of
|
|
|
|
bmNone:
|
|
|
|
RbBkColor.Checked := true;
|
|
|
|
bmNormal:
|
|
|
|
begin
|
|
|
|
RbBkImage.Checked := true;
|
|
|
|
RbBkImageNormal.Checked := true;
|
|
|
|
end;
|
|
|
|
bmStretch:
|
|
|
|
begin
|
|
|
|
RbBkImage.Checked := true;
|
|
|
|
RbBkImageStretch.Checked := true;
|
|
|
|
end;
|
|
|
|
bmTile:
|
|
|
|
begin
|
|
|
|
RbBkImage.Checked := true;
|
|
|
|
RbBkImageTile.Checked := true;
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
BtnLoadBkImageClick(nil);
|
|
|
|
|
2016-07-19 18:28:16 +00:00
|
|
|
EdSoundFile.InitialDir := ExtractFileDir(VpNavBar1.SoundAlias);
|
|
|
|
EdSoundFile.FileName := VpNavBar1.SoundAlias;
|
|
|
|
CbPlaySounds.Checked := VpNavBar1.PlaySounds;
|
2017-05-20 15:39:18 +00:00
|
|
|
|
|
|
|
EdBkImage.ButtonWidth := EdBkImage.Height;
|
|
|
|
EdSoundFile.ButtonWidth := EdSoundFile.Height;
|
2016-07-17 20:05:36 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.IconsLinkClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
OpenDocument(IconsLink.Caption);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.IconsLinkMouseEnter(Sender: TObject);
|
|
|
|
begin
|
|
|
|
IconsLink.Font.style := IconsLink.Font.Style + [fsUnderline];
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.IconsLinkMouseLeave(Sender: TObject);
|
|
|
|
begin
|
|
|
|
IconsLink.Font.style := IconsLink.Font.Style - [fsUnderline];
|
|
|
|
end;
|
|
|
|
|
2016-07-17 23:01:16 +00:00
|
|
|
procedure TForm1.RgDrawingStyleClick(Sender: TObject);
|
2016-07-17 20:05:36 +00:00
|
|
|
begin
|
2016-07-17 23:01:16 +00:00
|
|
|
VpNavBar1.DrawingStyle := TVpFolderDrawingStyle(RgDrawingStyle.ItemIndex);
|
2016-07-17 20:05:36 +00:00
|
|
|
end;
|
|
|
|
|
2016-07-17 23:01:16 +00:00
|
|
|
procedure TForm1.RgIconSizeClick(Sender: TObject);
|
2016-07-17 20:05:36 +00:00
|
|
|
var
|
|
|
|
folder: TVpNavFolder;
|
|
|
|
begin
|
2016-07-17 23:01:16 +00:00
|
|
|
RgIconSize.OnClick := nil;
|
2016-07-17 20:05:36 +00:00
|
|
|
folder := VpNavBar1.Folders[VpNavBar1.ActiveFolder];
|
2018-05-02 04:56:38 +00:00
|
|
|
folder.IconSize := TVpIconSize(RgIconSize.ItemIndex);
|
2016-07-17 23:01:16 +00:00
|
|
|
RgIconSize.OnClick := @RgIconSizeClick;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.RbBkColorChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
if RbBkColor.Checked then
|
|
|
|
VpNavBar1.BackgroundMethod := bmNone
|
|
|
|
else
|
|
|
|
if RbBkImage.Checked then begin
|
|
|
|
if RbBkImageNormal.Checked then
|
|
|
|
VpNavBar1.BackgroundMethod := bmNormal
|
|
|
|
else
|
|
|
|
if RbBkImageStretch.Checked then
|
|
|
|
VpNavBar1.BackgroundMethod := bmStretch
|
|
|
|
else
|
|
|
|
if RbBkImageTile.Checked then
|
|
|
|
VpNavBar1.BackgroundMethod := bmTile;
|
|
|
|
end;;
|
|
|
|
VpNavBar1.Invalidate;
|
2016-07-17 20:05:36 +00:00
|
|
|
end;
|
|
|
|
|
2016-07-18 11:46:13 +00:00
|
|
|
procedure TForm1.RgBorderStyleClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
VpNavBar1.BorderStyle := TBorderStyle(RgBorderStyle.ItemIndex);
|
|
|
|
end;
|
|
|
|
|
2016-07-17 20:05:36 +00:00
|
|
|
procedure TForm1.VpNavBar1FolderChanged(Sender: TObject; Index: Integer);
|
|
|
|
var
|
|
|
|
folder: TVpNavFolder;
|
|
|
|
begin
|
2016-07-17 23:01:16 +00:00
|
|
|
RgIconSize.OnClick := nil;
|
2016-07-17 20:05:36 +00:00
|
|
|
folder := VpNavBar1.Folders[Index];
|
2016-07-17 23:01:16 +00:00
|
|
|
RgIconSize.ItemIndex := ord(folder.IconSize);
|
|
|
|
RgIconSize.OnClick := @RgIconSizeClick;
|
2016-07-17 20:05:36 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TForm1.VpNavBar1ItemClick(Sender: TObject; Button: TMouseButton;
|
|
|
|
Shift: TShiftState; Index: Integer);
|
|
|
|
var
|
|
|
|
folder: TVpNavFolder;
|
|
|
|
item: TVpNavBtnItem;
|
|
|
|
begin
|
|
|
|
folder := VpNavBar1.Folders[VpNavBar1.ActiveFolder];
|
|
|
|
item := folder.Items[Index];
|
|
|
|
Label1.Caption := Format('Item "%s" clicked', [item.Caption]);
|
|
|
|
end;
|
|
|
|
|
|
|
|
end.
|
|
|
|
|