2018-03-23 00:10:05 +00:00
|
|
|
{******************************************************************
|
|
|
|
|
|
|
|
JEDI-VCL Demo
|
|
|
|
|
|
|
|
Copyright (C) 2002 Project JEDI
|
|
|
|
|
|
|
|
Original author:
|
|
|
|
|
|
|
|
Contributor(s):
|
|
|
|
|
|
|
|
You may retrieve the latest version of this file at the JEDI-JVCL
|
|
|
|
home page, located at http://jvcl.delphi-jedi.org
|
|
|
|
|
|
|
|
The contents of this file are used with permission, 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_1Final.html
|
|
|
|
|
|
|
|
Software distributed under the License is distributed on an
|
|
|
|
"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
|
|
implied. See the License for the specific language governing
|
|
|
|
rights and limitations under the License.
|
|
|
|
|
|
|
|
******************************************************************}
|
|
|
|
|
|
|
|
unit JvThumbnailMainFormU;
|
|
|
|
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
uses
|
2018-04-21 14:46:46 +00:00
|
|
|
SysUtils, Classes, Controls, Graphics, Forms, Spin,
|
|
|
|
StdCtrls, ExtCtrls, ComCtrls, Dialogs, ShellCtrls,
|
2018-04-18 22:20:45 +00:00
|
|
|
JvThumbnails, JvThumbViews, {%H-}JvThumbnailDatamodule;
|
2018-03-25 00:05:20 +00:00
|
|
|
|
2018-03-23 18:57:52 +00:00
|
|
|
{JvSpecialProgress,
|
2018-03-23 00:10:05 +00:00
|
|
|
JvListBox, JvDriveCtrls, JvCombobox, JvExControls, JvComponent,
|
|
|
|
JvExStdCtrls, JvExForms; }
|
|
|
|
|
|
|
|
type
|
|
|
|
|
|
|
|
{ TJvThumbnailMainForm }
|
|
|
|
|
|
|
|
TJvThumbnailMainForm = class(TForm)
|
2018-03-25 00:05:20 +00:00
|
|
|
CbThumbTitleBevelInner: TComboBox;
|
|
|
|
CbThumbTitleBevelOuter: TComboBox;
|
|
|
|
CbThumbTitleBorderStyle: TComboBox;
|
2018-03-23 23:59:33 +00:00
|
|
|
CbThumbColor: TColorButton;
|
|
|
|
CbTitleColor: TColorButton;
|
2018-03-25 00:05:20 +00:00
|
|
|
CbThumbBevelInner: TComboBox;
|
|
|
|
CbThumbBevelOuter: TComboBox;
|
|
|
|
CbThumbBorderStyle: TComboBox;
|
|
|
|
GroupBox1: TGroupBox;
|
|
|
|
GroupBox2: TGroupBox;
|
|
|
|
GroupBox3: TGroupBox;
|
2018-04-21 14:46:46 +00:00
|
|
|
GroupBox4: TGroupBox;
|
|
|
|
InfoDateAccessed: TLabel;
|
|
|
|
InfoFileName: TLabel;
|
2018-03-25 00:05:20 +00:00
|
|
|
Label1: TLabel;
|
|
|
|
Label10: TLabel;
|
2018-04-21 14:46:46 +00:00
|
|
|
LblDateAccessed: TLabel;
|
|
|
|
LblFileSize: TLabel;
|
|
|
|
InfoFileSize: TLabel;
|
|
|
|
LblDateCreated: TLabel;
|
|
|
|
InfoDateCreated: TLabel;
|
|
|
|
LblDateModified: TLabel;
|
|
|
|
InfoDateModified: TLabel;
|
2018-03-25 00:05:20 +00:00
|
|
|
Label2: TLabel;
|
|
|
|
Label5: TLabel;
|
|
|
|
Label6: TLabel;
|
|
|
|
Label7: TLabel;
|
|
|
|
Label8: TLabel;
|
|
|
|
Label9: TLabel;
|
2018-04-21 14:46:46 +00:00
|
|
|
LblFilename: TLabel;
|
2018-03-23 00:10:05 +00:00
|
|
|
PageControl1: TPageControl;
|
2018-03-25 00:05:20 +00:00
|
|
|
Panel4: TPanel;
|
2018-04-21 14:46:46 +00:00
|
|
|
Splitter2: TSplitter;
|
2018-03-23 00:10:05 +00:00
|
|
|
TabSheet1: TTabSheet;
|
|
|
|
Splitter1: TSplitter;
|
|
|
|
Panel1: TPanel;
|
|
|
|
LblThumbSize: TLabel;
|
|
|
|
Label3: TLabel;
|
|
|
|
Label4: TLabel;
|
|
|
|
TbThumbSize: TTrackBar;
|
|
|
|
CbAutoScrolling: TCheckBox;
|
|
|
|
CbAutoHandleKeyboard: TCheckBox;
|
2018-04-21 14:46:46 +00:00
|
|
|
EdGap: TSpinEdit;
|
|
|
|
EdSelected: TSpinEdit;
|
2018-03-23 00:10:05 +00:00
|
|
|
CbSorted: TCheckBox;
|
|
|
|
CbMinMemory: TCheckBox;
|
|
|
|
Panel2: TPanel;
|
|
|
|
ShellTreeView: TShellTreeView;
|
2018-04-21 14:46:46 +00:00
|
|
|
RgAlignView: TRadioGroup;
|
|
|
|
RgScrollMode: TRadioGroup;
|
2018-03-23 00:10:05 +00:00
|
|
|
Panel3: TPanel;
|
|
|
|
BtnStopLoading: TButton;
|
|
|
|
BtnEditSelThumb: TButton;
|
2018-04-21 14:46:46 +00:00
|
|
|
ThumbView: TJVThumbview;
|
2018-03-23 00:10:05 +00:00
|
|
|
Panel5: TPanel;
|
|
|
|
ProgressBar: TProgressBar;
|
|
|
|
Bevel1: TBevel;
|
2018-04-21 14:46:46 +00:00
|
|
|
|
|
|
|
procedure BtnEditSelThumbClick(Sender: TObject);
|
|
|
|
procedure BtnStopLoadingClick(Sender: TObject);
|
|
|
|
|
|
|
|
procedure CbAutoHandleKeyboardClick(Sender: TObject);
|
|
|
|
procedure CbAutoScrollingClick(Sender: TObject);
|
|
|
|
procedure CbMinMemoryClick(Sender: TObject);
|
2018-03-25 00:05:20 +00:00
|
|
|
procedure CbThumbBevelInnerChange(Sender: TObject);
|
|
|
|
procedure CbThumbBevelOuterChange(Sender: TObject);
|
|
|
|
procedure CbThumbBorderStyleChange(Sender: TObject);
|
2018-03-23 23:59:33 +00:00
|
|
|
procedure CbThumbColorColorChanged(Sender: TObject);
|
2018-03-25 00:05:20 +00:00
|
|
|
procedure CbThumbTitleBevelInnerChange(Sender: TObject);
|
|
|
|
procedure CbThumbTitleBevelOuterChange(Sender: TObject);
|
|
|
|
procedure CbThumbTitleBorderStyleChange(Sender: TObject);
|
2018-03-23 23:59:33 +00:00
|
|
|
procedure CbTitleColorColorChanged(Sender: TObject);
|
2018-04-21 14:46:46 +00:00
|
|
|
procedure EdGapChange(Sender: TObject);
|
|
|
|
procedure EdSelectedChange(Sender: TObject);
|
|
|
|
|
|
|
|
procedure FormShow(Sender: TObject);
|
|
|
|
|
|
|
|
procedure RgAlignViewClick(Sender: TObject);
|
|
|
|
procedure RgScrollModeClick(Sender: TObject);
|
2018-03-23 00:10:05 +00:00
|
|
|
procedure ShellTreeViewChange(Sender: TObject; Node: TTreeNode);
|
2018-03-23 18:57:52 +00:00
|
|
|
procedure ShellTreeViewGetImageIndex(Sender: TObject; Node: TTreeNode);
|
2018-04-21 23:25:49 +00:00
|
|
|
procedure ShellTreeViewGetSelectedIndex(Sender: TObject; Node: TTreeNode);
|
2018-04-21 14:46:46 +00:00
|
|
|
procedure TbThumbSizeChange(Sender: TObject);
|
|
|
|
procedure ThumbViewChange(Sender: TObject);
|
|
|
|
procedure ThumbViewDblClick(Sender: TObject);
|
2018-03-23 00:10:05 +00:00
|
|
|
procedure ThumbViewScanProgress(Sender: TObject; APosition: Integer;
|
|
|
|
var Break: Boolean);
|
|
|
|
procedure ThumbViewStartScanning(Sender: TObject; AMax: Integer);
|
|
|
|
procedure ThumbViewStopScanning(Sender: TObject);
|
2018-04-21 14:46:46 +00:00
|
|
|
|
2018-03-23 00:10:05 +00:00
|
|
|
public
|
|
|
|
NewDir: Boolean;
|
|
|
|
Scanning: Boolean;
|
|
|
|
end;
|
|
|
|
|
|
|
|
var
|
|
|
|
JvThumbnailMainForm: TJvThumbnailMainForm;
|
|
|
|
|
|
|
|
implementation
|
|
|
|
|
2018-04-21 14:46:46 +00:00
|
|
|
uses
|
|
|
|
StrUtils,
|
|
|
|
JvThumbnailChildFormU;
|
2018-03-23 00:10:05 +00:00
|
|
|
|
|
|
|
{$R *.lfm}
|
|
|
|
|
|
|
|
procedure TJvThumbnailMainForm.ThumbViewScanProgress(Sender: TObject;
|
|
|
|
APosition: Integer;
|
|
|
|
var Break: Boolean);
|
|
|
|
begin
|
|
|
|
ProgressBar.Position := APosition;
|
|
|
|
break := Newdir;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TJvThumbnailMainForm.ThumbViewStartScanning(Sender: TObject; AMax: Integer);
|
|
|
|
begin
|
|
|
|
Scanning := True;
|
|
|
|
// ShellTreeView.Enabled := False;
|
|
|
|
BtnStopLoading.Enabled := True;
|
|
|
|
ProgressBar.Max := AMax;
|
|
|
|
ProgressBar.Visible := true;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TJvThumbnailMainForm.ThumbViewStopScanning(Sender: TObject);
|
|
|
|
begin
|
|
|
|
Scanning := False;
|
|
|
|
// ShellTreeView.Enabled := True;
|
2018-04-21 14:46:46 +00:00
|
|
|
EdSelected.MaxValue := ThumbView.Count - 1;
|
2018-03-23 00:10:05 +00:00
|
|
|
newdir := False;
|
|
|
|
BtnStopLoading.Enabled := False;
|
|
|
|
ProgressBar.Position := 0;
|
|
|
|
ProgressBar.Visible := false;
|
2018-04-21 14:46:46 +00:00
|
|
|
ThumbViewChange(nil);
|
2018-03-23 00:10:05 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TJvThumbnailMainForm.BtnStopLoadingClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
NewDir := True;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TJvThumbnailMainForm.CbAutoScrollingClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
ThumbView.AutoScrolling := CbAutoScrolling.Checked;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TJvThumbnailMainForm.CbAutoHandleKeyboardClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
ThumbView.AutoHandleKeyb := CbAutoHandleKeyboard.Checked;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TJvThumbnailMainForm.CbMinMemoryClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
ThumbView.MinMemory := CbMinMemory.Checked;
|
|
|
|
end;
|
|
|
|
|
2018-03-25 00:05:20 +00:00
|
|
|
procedure TJvThumbnailMainForm.CbThumbBevelInnerChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
ThumbView.ThumbBevelInner := TPanelBevel(CbThumbBevelInner.ItemIndex);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TJvThumbnailMainForm.CbThumbBevelOuterChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
ThumbView.ThumbBevelOuter := TPanelBevel(CbThumbBevelOuter.ItemIndex);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TJvThumbnailMainForm.CbThumbBorderStyleChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
ThumbView.ThumbBorderStyle := TBorderStyle(CbThumbBorderStyle.ItemIndex);
|
|
|
|
end;
|
|
|
|
|
2018-03-23 23:59:33 +00:00
|
|
|
procedure TJvThumbnailMainForm.CbThumbColorColorChanged(Sender: TObject);
|
|
|
|
begin
|
|
|
|
ThumbView.ThumbColor := CbThumbColor.ButtonColor;
|
|
|
|
end;
|
|
|
|
|
2018-03-25 00:05:20 +00:00
|
|
|
procedure TJvThumbnailMainForm.CbThumbTitleBevelInnerChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
ThumbView.ThumbTitleBevelInner := TPanelBevel(CbThumbTitleBevelInner.ItemIndex);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TJvThumbnailMainForm.CbThumbTitleBevelOuterChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
ThumbView.ThumbTitleBevelOuter := TPanelBevel(CbThumbTitleBevelOuter.ItemIndex);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TJvThumbnailMainForm.CbThumbTitleBorderStyleChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
ThumbView.ThumbTitleBorderStyle := TBorderStyle(CbThumbTitleBorderStyle.ItemIndex);
|
|
|
|
end;
|
|
|
|
|
2018-03-23 23:59:33 +00:00
|
|
|
procedure TJvThumbnailMainForm.CbTitleColorColorChanged(Sender: TObject);
|
|
|
|
begin
|
|
|
|
ThumbView.ThumbTitleColor := CbTitleColor.ButtonColor;
|
|
|
|
end;
|
|
|
|
|
2018-04-21 14:46:46 +00:00
|
|
|
procedure TJvThumbnailMainForm.EdGapChange(Sender: TObject);
|
2018-03-23 00:10:05 +00:00
|
|
|
begin
|
2018-04-21 14:46:46 +00:00
|
|
|
if EdGap.Text <> '' then ThumbView.ThumbGap := EdGap.Value;
|
2018-03-23 00:10:05 +00:00
|
|
|
end;
|
|
|
|
|
2018-04-21 14:46:46 +00:00
|
|
|
procedure TJvThumbnailMainForm.EdSelectedChange(Sender: TObject);
|
2018-03-23 00:10:05 +00:00
|
|
|
begin
|
2018-04-21 14:46:46 +00:00
|
|
|
ThumbView.Selected := EdSelected.Value;
|
2018-03-23 00:10:05 +00:00
|
|
|
end;
|
|
|
|
|
2018-04-21 14:46:46 +00:00
|
|
|
procedure TJvThumbnailMainForm.RgAlignViewClick(Sender: TObject);
|
2018-03-23 00:10:05 +00:00
|
|
|
begin
|
2018-04-21 14:46:46 +00:00
|
|
|
ThumbView.AlignView := TViewType(RgAlignView.ItemIndex);
|
2018-03-23 00:10:05 +00:00
|
|
|
end;
|
|
|
|
|
2018-04-21 14:46:46 +00:00
|
|
|
procedure TJvThumbnailMainForm.RgScrollModeClick(Sender: TObject);
|
2018-03-23 00:10:05 +00:00
|
|
|
begin
|
2018-04-21 14:46:46 +00:00
|
|
|
ThumbView.ScrollMode := TscrollMode(RgScrollMode.ItemIndex);
|
2018-03-23 00:10:05 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TJvThumbnailMainForm.ShellTreeViewChange(Sender: TObject;
|
|
|
|
Node: TTreeNode);
|
|
|
|
begin
|
|
|
|
if not scanning then
|
|
|
|
repeat
|
|
|
|
ThumbView.Directory := ShellTreeView.Path;
|
|
|
|
until ThumbView.Directory = ShellTreeView.Path
|
|
|
|
else
|
|
|
|
NewDir := True;
|
|
|
|
end;
|
|
|
|
|
2018-03-23 18:57:52 +00:00
|
|
|
procedure TJvThumbnailMainForm.ShellTreeViewGetImageIndex(Sender: TObject;
|
|
|
|
Node: TTreeNode);
|
|
|
|
begin
|
|
|
|
if Node.Level = 0 then
|
|
|
|
Node.ImageIndex := 0
|
|
|
|
else
|
|
|
|
Node.ImageIndex := 1;
|
|
|
|
Node.SelectedIndex := Node.ImageIndex;
|
|
|
|
end;
|
|
|
|
|
2018-04-21 23:25:49 +00:00
|
|
|
procedure TJvThumbnailMainForm.ShellTreeViewGetSelectedIndex(Sender: TObject;
|
|
|
|
Node: TTreeNode);
|
|
|
|
begin
|
|
|
|
if Node.Level = 0 then
|
|
|
|
Node.SelectedIndex := 0
|
|
|
|
else
|
|
|
|
Node.SelectedIndex := 1;
|
|
|
|
end;
|
|
|
|
|
2018-03-23 00:10:05 +00:00
|
|
|
procedure TJvThumbnailMainForm.FormShow(Sender: TObject);
|
|
|
|
begin
|
2018-03-24 22:02:34 +00:00
|
|
|
CbThumbColor.ButtonColor := ThumbView.ThumbColor; //ColorToRGB(ThumbVIew.ThumbColor);
|
|
|
|
CbTitleColor.ButtonColor := ThumbView.ThumbTitleColor; //ColorToRGB(ThumbVIew.ThumbColor);
|
2018-03-23 00:10:05 +00:00
|
|
|
CbAutoScrolling.Checked := ThumbView.AutoScrolling;
|
|
|
|
CbAutoHandleKeyboard.Checked := ThumbView.AutoHandleKeyb;
|
|
|
|
CbSorted.Checked := ThumbView.Sorted;
|
|
|
|
CbSorted.Checked := ThumbView.MinMemory;
|
2018-04-21 14:46:46 +00:00
|
|
|
EdGap.Value := ThumbView.ThumbGap;
|
|
|
|
EdSelected.MaxValue := 0;
|
|
|
|
EdGap.MinValue := 0;
|
|
|
|
RgAlignView.ItemIndex := integer(ThumbView.alignview);
|
|
|
|
RgScrollMode.ItemIndex := integer(ThumbView.scrollMode);
|
2018-03-23 00:10:05 +00:00
|
|
|
Newdir := False;
|
|
|
|
Scanning := False;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TJvThumbnailMainForm.TbThumbSizeChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
ThumbView.Size := TbThumbSize.Position;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TJvThumbnailMainForm.ThumbViewDblClick(Sender: TObject);
|
|
|
|
var
|
|
|
|
F: TJvThumbnailChildForm;
|
|
|
|
begin
|
|
|
|
F := TJvThumbnailChildForm.Create(Self);
|
|
|
|
try
|
2018-04-21 17:26:53 +00:00
|
|
|
{$IFNDEF Windows}
|
|
|
|
F.ShellListView.Mask := Uppercase(F.ShellListView.Mask)+';'+Lowercase(F.ShellListView.Mask);
|
|
|
|
{$ENDIF}
|
2018-03-23 00:10:05 +00:00
|
|
|
F.ShelLTreeView.Path := ShellTreeView.Path;
|
|
|
|
if Sender is TJvThumbView then
|
|
|
|
F.SetFileName(TJvThumbView(Sender).SelectedFile);
|
|
|
|
if Sender is TJvThumbnail then
|
|
|
|
F.SetFileName(TJvThumbnail(Sender).FileName);
|
|
|
|
F.ShowModal;
|
|
|
|
finally
|
|
|
|
F.Free;
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TJvThumbnailMainForm.BtnEditSelThumbClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
ThumbViewDblClick(ThumbView);
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TJvThumbnailMainForm.ThumbViewChange(Sender: TObject);
|
2018-04-21 14:46:46 +00:00
|
|
|
var
|
|
|
|
thumbnail: TJvThumbnail;
|
2018-03-23 00:10:05 +00:00
|
|
|
begin
|
2018-04-21 14:46:46 +00:00
|
|
|
Caption := 'JvThumbView Demo - ' + ThumbView.SelectedFile;
|
|
|
|
if ThumbView.Selected > -1 then begin
|
|
|
|
thumbnail := ThumbView.ThumbList[ThumbView.Selected];
|
|
|
|
InfoFilename.Caption := ExtractfileName(thumbnail.FileName);
|
|
|
|
InfoFileSize.Caption := Format('%.1n kB', [thumbnail.FileSize/1024]);
|
|
|
|
InfoDateCreated.Caption := IfThen(thumbnail.FileCreated = 0, '-',
|
|
|
|
DateTimeToStr(thumbnail.FileCreated));
|
|
|
|
InfoDateAccessed.Caption := IfThen(thumbnail.FileAccessed = 0, '-',
|
|
|
|
DateTimeToStr(thumbnail.FileAccessed));
|
|
|
|
InfoDateModified.Caption := IfThen(thumbnail.FileChanged = 0, '-',
|
|
|
|
DateTimeToStr(thumbnail.FileChanged));
|
|
|
|
end else begin
|
|
|
|
InfoFileSize.Caption := '-';
|
|
|
|
InfoDateCreated.Caption := '-';
|
|
|
|
InfoDateAccessed.Caption := '-';
|
|
|
|
InfoDateModified.Caption := '-';
|
|
|
|
end;
|
|
|
|
EdSelected.Value := ThumbView.Selected;
|
2018-03-23 00:10:05 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
end.
|