You've already forked lazarus-ccr
jvcllaz: Add thumbnail components (incl demo).
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6264 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -565,10 +565,11 @@ resourcestring
|
|||||||
resourcestring
|
resourcestring
|
||||||
RsEFmtInterfaceNotSupported = '%s does not support the required interface (%s)';
|
RsEFmtInterfaceNotSupported = '%s does not support the required interface (%s)';
|
||||||
RsPageListEditorEllipsis = 'Page List Editor...';
|
RsPageListEditorEllipsis = 'Page List Editor...';
|
||||||
RsNextPageAmp = 'Ne&xt Page';
|
RsNextPageAmp = 'Ne&xt page';
|
||||||
RsPrevPage = '&Previous Page';
|
RsPrevPage = '&Previous page';
|
||||||
RsNewPage = '&New Page';
|
RsNewPage = '&New page';
|
||||||
RsDelPage = '&Delete Page';
|
RsDelPage = '&Delete page';
|
||||||
|
RsShowPage = 'Show page';
|
||||||
|
|
||||||
//=== JvPageManagerForm.pas ==================================================
|
//=== JvPageManagerForm.pas ==================================================
|
||||||
resourcestring
|
resourcestring
|
||||||
|
@ -4,3 +4,6 @@ Tjvtabbarxppainter.bmp
|
|||||||
tjvoutlookbar.bmp
|
tjvoutlookbar.bmp
|
||||||
tjvtimeline.bmp
|
tjvtimeline.bmp
|
||||||
tjvtmtimeline.bmp
|
tjvtmtimeline.bmp
|
||||||
|
tjvthumbnail.bmp
|
||||||
|
tjvthumbimage.bmp
|
||||||
|
tjvthumbview.bmp
|
||||||
|
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
@ -18,6 +18,7 @@ uses
|
|||||||
JvDsgnConsts,
|
JvDsgnConsts,
|
||||||
JvOutlookBar, JvOutlookBarEditors,
|
JvOutlookBar, JvOutlookBarEditors,
|
||||||
JvTabBar, JvTabBarXPPainter,
|
JvTabBar, JvTabBarXPPainter,
|
||||||
|
JvThumbImage, JvThumbnails, JvThumbViews,
|
||||||
JvTimeLine, JvTMTimeline, JvTimeLineEditor;
|
JvTimeLine, JvTMTimeline, JvTimeLineEditor;
|
||||||
|
|
||||||
procedure Register;
|
procedure Register;
|
||||||
@ -25,6 +26,7 @@ begin
|
|||||||
RegisterComponents(RsPaletteJvcl, [
|
RegisterComponents(RsPaletteJvcl, [
|
||||||
TJvTabBar, TJvModernTabBarPainter, TJvTabBarXPPainter,
|
TJvTabBar, TJvModernTabBarPainter, TJvTabBarXPPainter,
|
||||||
TJvOutlookBar,
|
TJvOutlookBar,
|
||||||
|
TJvThumbView, TJvThumbnail, TJvThumbImage,
|
||||||
TJvTimeLine,
|
TJvTimeLine,
|
||||||
TJvTMTimeLine
|
TJvTMTimeLine
|
||||||
]);
|
]);
|
||||||
|
@ -31,9 +31,9 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
SysUtils, Classes,
|
SysUtils, Classes,
|
||||||
Windows, Controls, Forms, ToolWin,
|
Controls, Forms, ToolWin,
|
||||||
Menus, ActnList, ComCtrls, ImgList,
|
Menus, ActnList, ComCtrls, ImgList,
|
||||||
PropEdits, GraphPropEdits,ComponentEditors,
|
PropEdits, GraphPropEdits, ComponentEditors,
|
||||||
// DesignEditors, DesignIntf, DesignMenus, DesignWindows,
|
// DesignEditors, DesignIntf, DesignMenus, DesignWindows,
|
||||||
//JvDsgnEditors,
|
//JvDsgnEditors,
|
||||||
JvOutlookBar;
|
JvOutlookBar;
|
||||||
|
@ -0,0 +1,461 @@
|
|||||||
|
object JvThumbnailChildForm: TJvThumbnailChildForm
|
||||||
|
Left = 367
|
||||||
|
Height = 529
|
||||||
|
Top = 149
|
||||||
|
Width = 770
|
||||||
|
Caption = 'JvThumbNail Demo'
|
||||||
|
ClientHeight = 529
|
||||||
|
ClientWidth = 770
|
||||||
|
Color = clBtnFace
|
||||||
|
Font.Color = clWindowText
|
||||||
|
OnShow = FormShow
|
||||||
|
LCLVersion = '1.9.0.0'
|
||||||
|
object Splitter2: TSplitter
|
||||||
|
Left = 238
|
||||||
|
Height = 529
|
||||||
|
Top = 0
|
||||||
|
Width = 3
|
||||||
|
end
|
||||||
|
object Panel6: TPanel
|
||||||
|
Left = 0
|
||||||
|
Height = 529
|
||||||
|
Top = 0
|
||||||
|
Width = 238
|
||||||
|
Align = alLeft
|
||||||
|
ClientHeight = 529
|
||||||
|
ClientWidth = 238
|
||||||
|
TabOrder = 0
|
||||||
|
object Splitter4: TSplitter
|
||||||
|
Cursor = crVSplit
|
||||||
|
Left = 1
|
||||||
|
Height = 3
|
||||||
|
Top = 121
|
||||||
|
Width = 236
|
||||||
|
Align = alTop
|
||||||
|
ResizeAnchor = akTop
|
||||||
|
end
|
||||||
|
object ShellTreeView: TShellTreeView
|
||||||
|
Left = 1
|
||||||
|
Height = 120
|
||||||
|
Top = 1
|
||||||
|
Width = 236
|
||||||
|
Align = alTop
|
||||||
|
BackgroundColor = clDefault
|
||||||
|
Color = clDefault
|
||||||
|
FileSortType = fstNone
|
||||||
|
HideSelection = False
|
||||||
|
ReadOnly = True
|
||||||
|
TabOrder = 0
|
||||||
|
Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
|
||||||
|
ObjectTypes = [otFolders]
|
||||||
|
ShellListView = ShellListView
|
||||||
|
end
|
||||||
|
object ShellListView: TShellListView
|
||||||
|
Left = 1
|
||||||
|
Height = 168
|
||||||
|
Top = 147
|
||||||
|
Width = 236
|
||||||
|
Align = alClient
|
||||||
|
Color = clDefault
|
||||||
|
HideSelection = False
|
||||||
|
Mask = '*.ICO;*.BMP;*.EMF;*.WMF;*.JPG;*.JPEG;'
|
||||||
|
ReadOnly = True
|
||||||
|
TabOrder = 1
|
||||||
|
OnChange = ShellListViewChange
|
||||||
|
ObjectTypes = [otNonFolders]
|
||||||
|
ShellTreeView = ShellTreeView
|
||||||
|
end
|
||||||
|
object Panel8: TPanel
|
||||||
|
Left = 1
|
||||||
|
Height = 213
|
||||||
|
Top = 315
|
||||||
|
Width = 236
|
||||||
|
Align = alBottom
|
||||||
|
BevelOuter = bvNone
|
||||||
|
ClientHeight = 213
|
||||||
|
ClientWidth = 236
|
||||||
|
TabOrder = 2
|
||||||
|
OnResize = Panel8Resize
|
||||||
|
object Label6: TLabel
|
||||||
|
Left = 8
|
||||||
|
Height = 13
|
||||||
|
Top = 0
|
||||||
|
Width = 226
|
||||||
|
Alignment = taCenter
|
||||||
|
AutoSize = False
|
||||||
|
Caption = 'RED'
|
||||||
|
Color = clRed
|
||||||
|
Font.Color = clWhite
|
||||||
|
Font.Height = -11
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
ParentColor = False
|
||||||
|
ParentFont = False
|
||||||
|
Transparent = False
|
||||||
|
end
|
||||||
|
object Label7: TLabel
|
||||||
|
Left = 8
|
||||||
|
Height = 14
|
||||||
|
Top = 45
|
||||||
|
Width = 226
|
||||||
|
Alignment = taCenter
|
||||||
|
AutoSize = False
|
||||||
|
Caption = 'GREEN'
|
||||||
|
Color = clLime
|
||||||
|
Font.Color = clBlack
|
||||||
|
Font.Height = -11
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
ParentColor = False
|
||||||
|
ParentFont = False
|
||||||
|
Transparent = False
|
||||||
|
end
|
||||||
|
object Label8: TLabel
|
||||||
|
Left = 7
|
||||||
|
Height = 14
|
||||||
|
Top = 89
|
||||||
|
Width = 226
|
||||||
|
Alignment = taCenter
|
||||||
|
AutoSize = False
|
||||||
|
Caption = 'BLUE'
|
||||||
|
Color = clBlue
|
||||||
|
Font.Color = clWhite
|
||||||
|
Font.Height = -11
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
ParentColor = False
|
||||||
|
ParentFont = False
|
||||||
|
Transparent = False
|
||||||
|
end
|
||||||
|
object Label9: TLabel
|
||||||
|
Left = 6
|
||||||
|
Height = 14
|
||||||
|
Top = 137
|
||||||
|
Width = 91
|
||||||
|
Alignment = taCenter
|
||||||
|
AutoSize = False
|
||||||
|
Caption = 'CONTRAST'
|
||||||
|
Font.Color = clBlack
|
||||||
|
Font.Height = -11
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
ParentColor = False
|
||||||
|
ParentFont = False
|
||||||
|
end
|
||||||
|
object Label1: TLabel
|
||||||
|
Left = 134
|
||||||
|
Height = 14
|
||||||
|
Top = 137
|
||||||
|
Width = 91
|
||||||
|
Alignment = taCenter
|
||||||
|
AutoSize = False
|
||||||
|
Caption = 'LIGHTNESS'
|
||||||
|
Font.Color = clBlack
|
||||||
|
Font.Height = -11
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
ParentColor = False
|
||||||
|
ParentFont = False
|
||||||
|
end
|
||||||
|
object REDBar: TTrackBar
|
||||||
|
Left = 0
|
||||||
|
Height = 29
|
||||||
|
Top = 13
|
||||||
|
Width = 241
|
||||||
|
Frequency = 51
|
||||||
|
Max = 255
|
||||||
|
Min = -255
|
||||||
|
PageSize = 20
|
||||||
|
Position = 0
|
||||||
|
TickStyle = tsNone
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
|
object GreenBar: TTrackBar
|
||||||
|
Left = 0
|
||||||
|
Height = 30
|
||||||
|
Top = 59
|
||||||
|
Width = 241
|
||||||
|
Frequency = 51
|
||||||
|
Max = 255
|
||||||
|
Min = -255
|
||||||
|
PageSize = 20
|
||||||
|
Position = 0
|
||||||
|
TickStyle = tsNone
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
object BlueBar: TTrackBar
|
||||||
|
Left = -1
|
||||||
|
Height = 30
|
||||||
|
Top = 107
|
||||||
|
Width = 241
|
||||||
|
Frequency = 51
|
||||||
|
Max = 255
|
||||||
|
Min = -255
|
||||||
|
PageSize = 20
|
||||||
|
Position = 0
|
||||||
|
TickStyle = tsNone
|
||||||
|
TabOrder = 2
|
||||||
|
end
|
||||||
|
object contrastBar: TTrackBar
|
||||||
|
Left = -1
|
||||||
|
Height = 30
|
||||||
|
Top = 152
|
||||||
|
Width = 106
|
||||||
|
Frequency = 51
|
||||||
|
Max = 100
|
||||||
|
Min = -100
|
||||||
|
PageSize = 20
|
||||||
|
Position = 0
|
||||||
|
TickStyle = tsNone
|
||||||
|
TabOrder = 3
|
||||||
|
end
|
||||||
|
object Button2: TButton
|
||||||
|
Left = 8
|
||||||
|
Height = 25
|
||||||
|
Top = 184
|
||||||
|
Width = 225
|
||||||
|
Caption = 'APPLY'
|
||||||
|
OnClick = Button2Click
|
||||||
|
TabOrder = 4
|
||||||
|
end
|
||||||
|
object LightnessBar: TTrackBar
|
||||||
|
Left = 127
|
||||||
|
Height = 30
|
||||||
|
Top = 152
|
||||||
|
Width = 106
|
||||||
|
Frequency = 51
|
||||||
|
Max = 100
|
||||||
|
Min = -100
|
||||||
|
PageSize = 20
|
||||||
|
Position = 0
|
||||||
|
TickStyle = tsNone
|
||||||
|
TabOrder = 5
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object Panel10: TPanel
|
||||||
|
Left = 1
|
||||||
|
Height = 23
|
||||||
|
Top = 124
|
||||||
|
Width = 236
|
||||||
|
Align = alTop
|
||||||
|
BevelOuter = bvNone
|
||||||
|
Caption = 'Panel10'
|
||||||
|
ClientHeight = 23
|
||||||
|
ClientWidth = 236
|
||||||
|
TabOrder = 3
|
||||||
|
OnResize = Panel10Resize
|
||||||
|
object FilterComboBox1: TFilterComboBox
|
||||||
|
Left = 2
|
||||||
|
Height = 23
|
||||||
|
Top = 0
|
||||||
|
Width = 235
|
||||||
|
Filter = 'All Known Formats|*.ICO;*.BMP;*.EMF;*.WMF;*.JPG;*.JPEG;|All Files (*.*)|*.*|JPEG Files|*.JPG;*.JPEG;|BMP Files|*.BMP|WMF Files|*.WMF|EMF Files |*.EMF|ICONS |*.ICO'
|
||||||
|
ItemIndex = 0
|
||||||
|
ShellListView = ShellListView
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object Panel7: TPanel
|
||||||
|
Left = 241
|
||||||
|
Height = 529
|
||||||
|
Top = 0
|
||||||
|
Width = 529
|
||||||
|
Align = alClient
|
||||||
|
ClientHeight = 529
|
||||||
|
ClientWidth = 529
|
||||||
|
TabOrder = 1
|
||||||
|
object ThumbImage1: TJvThumbImage
|
||||||
|
Left = 1
|
||||||
|
Height = 376
|
||||||
|
Top = 144
|
||||||
|
Width = 518
|
||||||
|
AutoSize = True
|
||||||
|
IgnoreMouse = False
|
||||||
|
Angle = AT0
|
||||||
|
Zoom = 0
|
||||||
|
end
|
||||||
|
object Panel5: TPanel
|
||||||
|
Left = 1
|
||||||
|
Height = 144
|
||||||
|
Top = 1
|
||||||
|
Width = 527
|
||||||
|
Align = alTop
|
||||||
|
ClientHeight = 144
|
||||||
|
ClientWidth = 527
|
||||||
|
TabOrder = 0
|
||||||
|
object Bevel1: TBevel
|
||||||
|
Left = 156
|
||||||
|
Height = 137
|
||||||
|
Top = 3
|
||||||
|
Width = 232
|
||||||
|
end
|
||||||
|
object Label5: TLabel
|
||||||
|
Left = 161
|
||||||
|
Height = 13
|
||||||
|
Hint = 'You can set the thumbnails title to what ever you want it to be '
|
||||||
|
Top = 100
|
||||||
|
Width = 193
|
||||||
|
AutoSize = False
|
||||||
|
Caption = 'Thumbnails Title'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object CbAsButton: TCheckBox
|
||||||
|
Left = 161
|
||||||
|
Height = 19
|
||||||
|
Hint = 'This will give a button effect when the thumbnail is clicked '
|
||||||
|
Top = 7
|
||||||
|
Width = 69
|
||||||
|
Caption = 'AsButton'
|
||||||
|
Checked = True
|
||||||
|
OnClick = CbAsButtonClick
|
||||||
|
State = cbChecked
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
|
object CbAutoLoad: TCheckBox
|
||||||
|
Left = 161
|
||||||
|
Height = 19
|
||||||
|
Hint = 'If AutoLoad = true when you pass a name to the filename it automatically loads it else not(for Future reference where the will be a thumblist file)'
|
||||||
|
Top = 31
|
||||||
|
Width = 69
|
||||||
|
Caption = 'Autoload'
|
||||||
|
Checked = True
|
||||||
|
OnClick = CbAutoLoadClick
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
State = cbChecked
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
object CbMinimizeMem: TCheckBox
|
||||||
|
Left = 161
|
||||||
|
Height = 19
|
||||||
|
Hint = 'This will forse the thumbimage to convert all the thumbs in BMP and reduce memory usage us much as possible'
|
||||||
|
Top = 55
|
||||||
|
Width = 114
|
||||||
|
Caption = 'MinimizeMemory'
|
||||||
|
Checked = True
|
||||||
|
OnClick = CbMinimizeMemClick
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
State = cbChecked
|
||||||
|
TabOrder = 2
|
||||||
|
end
|
||||||
|
object GbTitlePlacement: TRadioGroup
|
||||||
|
Left = 265
|
||||||
|
Height = 65
|
||||||
|
Hint = 'The position of the thumbnail''s title'
|
||||||
|
Top = 9
|
||||||
|
Width = 113
|
||||||
|
AutoFill = True
|
||||||
|
Caption = ' Title Placement '
|
||||||
|
ChildSizing.LeftRightSpacing = 6
|
||||||
|
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
|
||||||
|
ChildSizing.EnlargeVertical = crsHomogenousChildResize
|
||||||
|
ChildSizing.ShrinkHorizontal = crsScaleChilds
|
||||||
|
ChildSizing.ShrinkVertical = crsScaleChilds
|
||||||
|
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
||||||
|
ChildSizing.ControlsPerLine = 1
|
||||||
|
ClientHeight = 45
|
||||||
|
ClientWidth = 109
|
||||||
|
ItemIndex = 0
|
||||||
|
Items.Strings = (
|
||||||
|
'T_UP'
|
||||||
|
'T_Down'
|
||||||
|
)
|
||||||
|
OnClick = GbTitlePlacementClick
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
TabOrder = 3
|
||||||
|
end
|
||||||
|
object Edit1: TEdit
|
||||||
|
Left = 161
|
||||||
|
Height = 23
|
||||||
|
Hint = 'You can set the thumbnails title to what ever you want it to be '
|
||||||
|
Top = 116
|
||||||
|
Width = 224
|
||||||
|
TabOrder = 4
|
||||||
|
Text = 'Edit1'
|
||||||
|
end
|
||||||
|
object GroupBox1: TGroupBox
|
||||||
|
Left = 390
|
||||||
|
Height = 75
|
||||||
|
Top = 0
|
||||||
|
Width = 125
|
||||||
|
Caption = 'THUMBIMAGE'
|
||||||
|
ClientHeight = 55
|
||||||
|
ClientWidth = 121
|
||||||
|
TabOrder = 5
|
||||||
|
object BtnInvert: TButton
|
||||||
|
Left = 8
|
||||||
|
Height = 25
|
||||||
|
Top = 0
|
||||||
|
Width = 108
|
||||||
|
Caption = 'INVERT'
|
||||||
|
OnClick = BtnInvertClick
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
|
object Button5: TButton
|
||||||
|
Left = 8
|
||||||
|
Height = 25
|
||||||
|
Top = 28
|
||||||
|
Width = 108
|
||||||
|
Caption = 'GRAYSCALE'
|
||||||
|
OnClick = Button5Click
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object BtnExit: TButton
|
||||||
|
Left = 265
|
||||||
|
Height = 25
|
||||||
|
Top = 80
|
||||||
|
Width = 113
|
||||||
|
Caption = 'EXIT'
|
||||||
|
ModalResult = 1
|
||||||
|
TabOrder = 6
|
||||||
|
end
|
||||||
|
object GbAngle: TRadioGroup
|
||||||
|
Left = 390
|
||||||
|
Height = 60
|
||||||
|
Top = 81
|
||||||
|
Width = 125
|
||||||
|
AutoFill = True
|
||||||
|
Caption = ' ThumbImage Angle '
|
||||||
|
ChildSizing.LeftRightSpacing = 6
|
||||||
|
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
|
||||||
|
ChildSizing.EnlargeVertical = crsHomogenousChildResize
|
||||||
|
ChildSizing.ShrinkHorizontal = crsScaleChilds
|
||||||
|
ChildSizing.ShrinkVertical = crsScaleChilds
|
||||||
|
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
||||||
|
ChildSizing.ControlsPerLine = 2
|
||||||
|
ClientHeight = 40
|
||||||
|
ClientWidth = 121
|
||||||
|
Columns = 2
|
||||||
|
Items.Strings = (
|
||||||
|
'0'
|
||||||
|
'90'
|
||||||
|
'180'
|
||||||
|
'270'
|
||||||
|
)
|
||||||
|
OnClick = GbAngleClick
|
||||||
|
TabOrder = 7
|
||||||
|
end
|
||||||
|
object ThumbNail1: TJvThumbnail
|
||||||
|
Left = 1
|
||||||
|
Height = 142
|
||||||
|
Top = 1
|
||||||
|
Width = 154
|
||||||
|
ClientHeight = 119
|
||||||
|
ClientWidth = 146
|
||||||
|
TabOrder = 8
|
||||||
|
OnClick = ThumbNail1Click
|
||||||
|
TitleColor = clBtnFace
|
||||||
|
TitleFont.Color = clWindowText
|
||||||
|
TitleFont.Height = -11
|
||||||
|
TitleFont.Name = 'MS Sans Serif'
|
||||||
|
AsButton = False
|
||||||
|
MinimizeMemory = True
|
||||||
|
StreamFileType = grBMP
|
||||||
|
ShowTitle = False
|
||||||
|
TitlePlacement = tpUp
|
||||||
|
AutoLoad = True
|
||||||
|
ShadowColor = clSilver
|
||||||
|
ShowShadow = False
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,199 @@
|
|||||||
|
{******************************************************************
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
******************************************************************}
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
unit JvThumbnailChildFormU;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, Controls, Forms,
|
||||||
|
StdCtrls, ExtCtrls, FileCtrl, ComCtrls, ShellCtrls,
|
||||||
|
JvThumbImage, JvThumbNails, JvBaseThumbnail, JvExExtCtrls;
|
||||||
|
|
||||||
|
type
|
||||||
|
TJvThumbnailChildForm = class(TForm)
|
||||||
|
Splitter2: TSplitter;
|
||||||
|
Panel6: TPanel;
|
||||||
|
Splitter4: TSplitter;
|
||||||
|
ShellTreeView: TShellTreeView;
|
||||||
|
ShellListView: TShellListView;
|
||||||
|
Panel8: TPanel;
|
||||||
|
Label6: TLabel;
|
||||||
|
Label7: TLabel;
|
||||||
|
Label8: TLabel;
|
||||||
|
Label9: TLabel;
|
||||||
|
REDBar: TTrackBar;
|
||||||
|
GreenBar: TTrackBar;
|
||||||
|
BlueBar: TTrackBar;
|
||||||
|
contrastBar: TTrackBar;
|
||||||
|
Button2: TButton;
|
||||||
|
Panel10: TPanel;
|
||||||
|
FilterComboBox1: TFilterComboBox;
|
||||||
|
Panel7: TPanel;
|
||||||
|
Panel5: TPanel;
|
||||||
|
Label5: TLabel;
|
||||||
|
Bevel1: TBevel;
|
||||||
|
CbAsButton: TCheckBox;
|
||||||
|
CbAutoLoad: TCheckBox;
|
||||||
|
CbMinimizeMem: TCheckBox;
|
||||||
|
GbTitlePlacement: TRadioGroup;
|
||||||
|
Edit1: TEdit;
|
||||||
|
GroupBox1: TGroupBox;
|
||||||
|
BtnInvert: TButton;
|
||||||
|
Button5: TButton;
|
||||||
|
Label1: TLabel;
|
||||||
|
LightnessBar: TTrackBar;
|
||||||
|
BtnExit: TButton;
|
||||||
|
GbAngle: TRadioGroup;
|
||||||
|
ThumbNail1: TJVThumbNail;
|
||||||
|
ThumbImage1: TJvThumbImage;
|
||||||
|
procedure Button2Click(Sender: TObject);
|
||||||
|
procedure ShellListViewChange(Sender: TObject);
|
||||||
|
procedure CbAsButtonClick(Sender: TObject);
|
||||||
|
procedure CbAutoLoadClick(Sender: TObject);
|
||||||
|
procedure CbMinimizeMemClick(Sender: TObject);
|
||||||
|
procedure GbTitlePlacementClick(Sender: TObject);
|
||||||
|
procedure Panel8Resize(Sender: TObject);
|
||||||
|
procedure BtnInvertClick(Sender: TObject);
|
||||||
|
procedure Button5Click(Sender: TObject);
|
||||||
|
procedure thumbnail1Click(Sender: TObject);
|
||||||
|
procedure Panel10Resize(Sender: TObject);
|
||||||
|
procedure FormShow(Sender: TObject);
|
||||||
|
procedure GbAngleClick(Sender: TObject);
|
||||||
|
public
|
||||||
|
procedure SetFileName(AFileName: String);
|
||||||
|
function GetFileName: String;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
JvThumbnailChildForm: TJvThumbnailChildForm;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{$R *.lfm}
|
||||||
|
|
||||||
|
procedure TJvThumbnailChildForm.Button2Click(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ThumbImage1.ChangeRGB(redbar.Position,greenbar.Position,bluebar.Position);
|
||||||
|
ThumbImage1.Contrast(contrastbar.Position);
|
||||||
|
ThumbImage1.Lightness(LightnessBar.Position);
|
||||||
|
RedBar.Position := 0;
|
||||||
|
GreenBar.Position :=0;
|
||||||
|
BlueBar.Position := 0;
|
||||||
|
ContrastBar.Position := 0;
|
||||||
|
LightnessBar.Position := 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailChildForm.ShellListViewChange(Sender: TObject);
|
||||||
|
var
|
||||||
|
fn: String;
|
||||||
|
begin
|
||||||
|
if ShellListView.Selected <> nil then begin
|
||||||
|
fn := ShellListView.GetPathFromItem(ShellListView.Selected);
|
||||||
|
Thumbnail1.FileName := fn;
|
||||||
|
ThumbImage1.Loadfromfile(fn);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailChildForm.CbAsButtonClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
THumbnail1.Asbutton := CbAsButton.Checked;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailChildForm.CbAutoLoadClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
thumbnail1.autoload := CbAutoLoad.Checked;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailChildForm.CbMinimizeMemClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
thumbnail1.minimizememory:=CbMinimizeMem.Checked;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailChildForm.GbTitlePlacementClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
thumbnail1.TitlePlacement := ttitlepos(GbTitlePlacement.ItemIndex);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailChildForm.Panel8Resize(Sender: TObject);
|
||||||
|
begin
|
||||||
|
RedBar.Width := panel8.ClientWidth;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailChildForm.BtnInvertClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ThumbImage1.Invert;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailChildForm.Button5Click(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ThumbImage1.GrayScale;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailChildForm.thumbnail1Click(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if thumbnail1.FileName<>'' then
|
||||||
|
thumbimage1.Loadfromfile(thumbnail1.FileName);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailChildForm.Panel10Resize(Sender: TObject);
|
||||||
|
begin
|
||||||
|
filtercombobox1.Width := panel10.ClientWidth;
|
||||||
|
filtercombobox1.Height:= panel10.ClientHeight;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailChildForm.FormShow(Sender: TObject);
|
||||||
|
begin
|
||||||
|
//thumbimage1.Picture.Free;
|
||||||
|
GbTitlePlacement.ItemIndex := integer(thumbnail1.titlePlacement);
|
||||||
|
GbAngle.ItemIndex := integer(thumbimage1.angle);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailChildForm.GbAngleClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
thumbimage1.angle := TAngle(GbAngle.ItemIndex)
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvThumbnailChildForm.GetfileName: String;
|
||||||
|
begin
|
||||||
|
Result := ShellListView.GetPathFromItem(ShellListView.Selected);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailChildForm.SetFileName(AFileName: String);
|
||||||
|
var
|
||||||
|
dir, fn: String;
|
||||||
|
begin
|
||||||
|
dir := ExtractFilePath(AFileName);
|
||||||
|
fn := ExtractFileName(AFileName);
|
||||||
|
if dir <> ShellListView.Root then
|
||||||
|
ShellTreeView.Path := dir;
|
||||||
|
ShellListView.Selected := ShellListView.Items.FindCaption(0, fn, false, false, false);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
91
components/jvcllaz/examples/JvThumbnail/JvThumbnailDemo.lpi
Normal file
91
components/jvcllaz/examples/JvThumbnail/JvThumbnailDemo.lpi
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<CONFIG>
|
||||||
|
<ProjectOptions>
|
||||||
|
<Version Value="11"/>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<General>
|
||||||
|
<SessionStorage Value="InProjectDir"/>
|
||||||
|
<MainUnit Value="0"/>
|
||||||
|
<Title Value="JvThumbnailDemo"/>
|
||||||
|
<Scaled Value="True"/>
|
||||||
|
<ResourceType Value="res"/>
|
||||||
|
<UseXPManifest Value="True"/>
|
||||||
|
<XPManifest>
|
||||||
|
<DpiAware Value="True"/>
|
||||||
|
</XPManifest>
|
||||||
|
<Icon Value="0"/>
|
||||||
|
</General>
|
||||||
|
<BuildModes Count="1">
|
||||||
|
<Item1 Name="Default" Default="True"/>
|
||||||
|
</BuildModes>
|
||||||
|
<PublishOptions>
|
||||||
|
<Version Value="2"/>
|
||||||
|
</PublishOptions>
|
||||||
|
<RunParams>
|
||||||
|
<FormatVersion Value="2"/>
|
||||||
|
<Modes Count="0"/>
|
||||||
|
</RunParams>
|
||||||
|
<RequiredPackages Count="2">
|
||||||
|
<Item1>
|
||||||
|
<PackageName Value="JvCustomLazR"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<PackageName Value="LCL"/>
|
||||||
|
</Item2>
|
||||||
|
</RequiredPackages>
|
||||||
|
<Units Count="3">
|
||||||
|
<Unit0>
|
||||||
|
<Filename Value="JvThumbnailDemo.lpr"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
</Unit0>
|
||||||
|
<Unit1>
|
||||||
|
<Filename Value="JvThumbnailMainFormU.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ComponentName Value="JvThumbnailMainForm"/>
|
||||||
|
<HasResources Value="True"/>
|
||||||
|
<ResourceBaseClass Value="Form"/>
|
||||||
|
</Unit1>
|
||||||
|
<Unit2>
|
||||||
|
<Filename Value="JvThumbnailChildFormU.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ComponentName Value="JvThumbnailChildForm"/>
|
||||||
|
<HasResources Value="True"/>
|
||||||
|
<ResourceBaseClass Value="Form"/>
|
||||||
|
</Unit2>
|
||||||
|
</Units>
|
||||||
|
</ProjectOptions>
|
||||||
|
<CompilerOptions>
|
||||||
|
<Version Value="11"/>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<Target>
|
||||||
|
<Filename Value="JvThumbnailDemo"/>
|
||||||
|
</Target>
|
||||||
|
<SearchPaths>
|
||||||
|
<IncludeFiles Value="$(ProjOutDir)"/>
|
||||||
|
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
||||||
|
</SearchPaths>
|
||||||
|
<Linking>
|
||||||
|
<Debugging>
|
||||||
|
<UseExternalDbgSyms Value="True"/>
|
||||||
|
</Debugging>
|
||||||
|
<Options>
|
||||||
|
<Win32>
|
||||||
|
<GraphicApplication Value="True"/>
|
||||||
|
</Win32>
|
||||||
|
</Options>
|
||||||
|
</Linking>
|
||||||
|
</CompilerOptions>
|
||||||
|
<Debugging>
|
||||||
|
<Exceptions Count="3">
|
||||||
|
<Item1>
|
||||||
|
<Name Value="EAbort"/>
|
||||||
|
</Item1>
|
||||||
|
<Item2>
|
||||||
|
<Name Value="ECodetoolError"/>
|
||||||
|
</Item2>
|
||||||
|
<Item3>
|
||||||
|
<Name Value="EFOpenError"/>
|
||||||
|
</Item3>
|
||||||
|
</Exceptions>
|
||||||
|
</Debugging>
|
||||||
|
</CONFIG>
|
14
components/jvcllaz/examples/JvThumbnail/JvThumbnailDemo.lpr
Normal file
14
components/jvcllaz/examples/JvThumbnail/JvThumbnailDemo.lpr
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
program JvThumbnailDemo;
|
||||||
|
|
||||||
|
uses
|
||||||
|
Forms, Interfaces, JvThumbnailMainFormU, JvThumbnailChildFormU {JvThumbnailMainForm};
|
||||||
|
|
||||||
|
{$R *.RES}
|
||||||
|
|
||||||
|
begin
|
||||||
|
Application.Scaled := True;
|
||||||
|
Application.Initialize;
|
||||||
|
Application.CreateForm(TJvThumbnailMainForm, JvThumbnailMainForm);
|
||||||
|
// Application.CreateForm(TJvThumbnailChildForm, JvThumbnailChildForm);
|
||||||
|
Application.Run;
|
||||||
|
end.
|
438
components/jvcllaz/examples/JvThumbnail/JvThumbnailMainFormU.lfm
Normal file
438
components/jvcllaz/examples/JvThumbnail/JvThumbnailMainFormU.lfm
Normal file
@ -0,0 +1,438 @@
|
|||||||
|
object JvThumbnailMainForm: TJvThumbnailMainForm
|
||||||
|
Left = 295
|
||||||
|
Height = 656
|
||||||
|
Top = 100
|
||||||
|
Width = 878
|
||||||
|
Caption = 'JvThumbView Demo'
|
||||||
|
ClientHeight = 656
|
||||||
|
ClientWidth = 878
|
||||||
|
Color = clBtnFace
|
||||||
|
Constraints.MinHeight = 430
|
||||||
|
Constraints.MinWidth = 760
|
||||||
|
DefaultMonitor = dmDesktop
|
||||||
|
Font.Color = clWindowText
|
||||||
|
OnShow = FormShow
|
||||||
|
Position = poScreenCenter
|
||||||
|
LCLVersion = '1.9.0.0'
|
||||||
|
Scaled = False
|
||||||
|
object PageControl1: TPageControl
|
||||||
|
Left = 0
|
||||||
|
Height = 632
|
||||||
|
Top = 0
|
||||||
|
Width = 878
|
||||||
|
ActivePage = TabSheet1
|
||||||
|
Align = alClient
|
||||||
|
TabIndex = 0
|
||||||
|
TabOrder = 0
|
||||||
|
object TabSheet1: TTabSheet
|
||||||
|
Caption = 'ThumbView Component'
|
||||||
|
ClientHeight = 604
|
||||||
|
ClientWidth = 870
|
||||||
|
object Splitter1: TSplitter
|
||||||
|
Left = 153
|
||||||
|
Height = 546
|
||||||
|
Top = 58
|
||||||
|
Width = 3
|
||||||
|
end
|
||||||
|
object Panel1: TPanel
|
||||||
|
Left = 0
|
||||||
|
Height = 58
|
||||||
|
Top = 0
|
||||||
|
Width = 870
|
||||||
|
Align = alTop
|
||||||
|
AutoSize = True
|
||||||
|
BevelOuter = bvNone
|
||||||
|
ClientHeight = 58
|
||||||
|
ClientWidth = 870
|
||||||
|
TabOrder = 0
|
||||||
|
object LblThumbSize: TLabel
|
||||||
|
AnchorSideLeft.Control = TbThumbSize
|
||||||
|
AnchorSideTop.Control = Panel1
|
||||||
|
AnchorSideRight.Control = TbThumbSize
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 0
|
||||||
|
Height = 15
|
||||||
|
Top = 8
|
||||||
|
Width = 150
|
||||||
|
Alignment = taCenter
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Top = 8
|
||||||
|
Caption = 'Thumbnail size'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object Label3: TLabel
|
||||||
|
AnchorSideLeft.Control = SpinEdit1
|
||||||
|
AnchorSideTop.Control = Panel1
|
||||||
|
AnchorSideRight.Control = SpinEdit1
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 569
|
||||||
|
Height = 16
|
||||||
|
Hint = 'Change the thumbgup to change the space between the thumbnails '
|
||||||
|
Top = 8
|
||||||
|
Width = 64
|
||||||
|
Alignment = taCenter
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
AutoSize = False
|
||||||
|
BorderSpacing.Top = 8
|
||||||
|
Caption = 'Gap:'
|
||||||
|
ParentColor = False
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
end
|
||||||
|
object Label4: TLabel
|
||||||
|
AnchorSideLeft.Control = SpinEdit2
|
||||||
|
AnchorSideTop.Control = Label3
|
||||||
|
AnchorSideRight.Control = SpinEdit2
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 649
|
||||||
|
Height = 16
|
||||||
|
Hint = 'Change the selected to select the Nth element in the list.'
|
||||||
|
Top = 8
|
||||||
|
Width = 64
|
||||||
|
Alignment = taCenter
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
AutoSize = False
|
||||||
|
Caption = 'Selected:'
|
||||||
|
ParentColor = False
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
end
|
||||||
|
object TbThumbSize: TTrackBar
|
||||||
|
AnchorSideLeft.Control = Panel1
|
||||||
|
AnchorSideTop.Control = LblThumbSize
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 0
|
||||||
|
Height = 28
|
||||||
|
Hint = 'Changes the size of the thumbs, it accepts values between 10 and 100'
|
||||||
|
Top = 25
|
||||||
|
Width = 150
|
||||||
|
Frequency = 10
|
||||||
|
Max = 100
|
||||||
|
Min = 10
|
||||||
|
OnChange = TbThumbSizeChange
|
||||||
|
PageSize = 10
|
||||||
|
Position = 100
|
||||||
|
TickMarks = tmTopLeft
|
||||||
|
TickStyle = tsNone
|
||||||
|
BorderSpacing.Top = 2
|
||||||
|
BorderSpacing.Bottom = 4
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
|
object CbAutoScrolling: TCheckBox
|
||||||
|
AnchorSideLeft.Control = TbThumbSize
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = Panel1
|
||||||
|
Left = 166
|
||||||
|
Height = 19
|
||||||
|
Hint = 'Set "AutoScrolling" to true to let the ThumbView component scroll the selected thumb into the screen automatically'
|
||||||
|
Top = 8
|
||||||
|
Width = 92
|
||||||
|
BorderSpacing.Left = 16
|
||||||
|
BorderSpacing.Top = 8
|
||||||
|
Caption = 'AutoScrolling'
|
||||||
|
Checked = True
|
||||||
|
OnClick = CbAutoScrollingClick
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
State = cbChecked
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
object CbAutoHandleKeyboard: TCheckBox
|
||||||
|
AnchorSideLeft.Control = TbThumbSize
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = CbAutoScrolling
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 166
|
||||||
|
Height = 19
|
||||||
|
Hint = 'Set "AutoHandlekeyboard" to true to let the Thumbview capture the cursor key and navigate through the view using them'
|
||||||
|
Top = 31
|
||||||
|
Width = 134
|
||||||
|
BorderSpacing.Left = 16
|
||||||
|
BorderSpacing.Top = 4
|
||||||
|
Caption = 'AutoHandleKeyboard'
|
||||||
|
Checked = True
|
||||||
|
OnClick = CbAutoHandleKeyboardClick
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
State = cbChecked
|
||||||
|
TabOrder = 2
|
||||||
|
end
|
||||||
|
object SpinEdit1: TSpinEdit
|
||||||
|
AnchorSideLeft.Control = BtnEditSelThumb
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = Label3
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 569
|
||||||
|
Height = 23
|
||||||
|
Hint = 'Changes the space between the thumbnails '
|
||||||
|
Top = 27
|
||||||
|
Width = 64
|
||||||
|
BorderSpacing.Left = 16
|
||||||
|
BorderSpacing.Top = 3
|
||||||
|
MaxValue = 300
|
||||||
|
MinValue = 1
|
||||||
|
OnChange = SpinEdit1Change
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
TabOrder = 3
|
||||||
|
Value = 1
|
||||||
|
end
|
||||||
|
object SpinEdit2: TSpinEdit
|
||||||
|
AnchorSideLeft.Control = SpinEdit1
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = SpinEdit1
|
||||||
|
Left = 649
|
||||||
|
Height = 23
|
||||||
|
Hint = 'Selects the thumbnail with this index'
|
||||||
|
Top = 27
|
||||||
|
Width = 64
|
||||||
|
BorderSpacing.Left = 16
|
||||||
|
MaxValue = 0
|
||||||
|
OnChange = SpinEdit2Change
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
TabOrder = 4
|
||||||
|
end
|
||||||
|
object CbSorted: TCheckBox
|
||||||
|
AnchorSideLeft.Control = CbMinMemory
|
||||||
|
AnchorSideTop.Control = CbAutoScrolling
|
||||||
|
Left = 316
|
||||||
|
Height = 19
|
||||||
|
Hint = 'Set "Sorted" to true to sort the files found in the directory by name (other posibilities in the next version)'
|
||||||
|
Top = 8
|
||||||
|
Width = 54
|
||||||
|
Caption = 'Sorted'
|
||||||
|
Checked = True
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
State = cbChecked
|
||||||
|
TabOrder = 5
|
||||||
|
end
|
||||||
|
object CbMinMemory: TCheckBox
|
||||||
|
AnchorSideLeft.Control = CbAutoHandleKeyboard
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = CbAutoHandleKeyboard
|
||||||
|
Left = 316
|
||||||
|
Height = 19
|
||||||
|
Top = 31
|
||||||
|
Width = 86
|
||||||
|
BorderSpacing.Left = 16
|
||||||
|
Caption = 'MinMemory'
|
||||||
|
Checked = True
|
||||||
|
OnClick = CbMinMemoryClick
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
State = cbChecked
|
||||||
|
TabOrder = 6
|
||||||
|
end
|
||||||
|
object BtnStopLoading: TButton
|
||||||
|
AnchorSideLeft.Control = BtnEditSelThumb
|
||||||
|
AnchorSideTop.Control = Panel1
|
||||||
|
AnchorSideRight.Control = BtnEditSelThumb
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 418
|
||||||
|
Height = 25
|
||||||
|
Top = 2
|
||||||
|
Width = 135
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
AutoSize = True
|
||||||
|
BorderSpacing.Top = 2
|
||||||
|
Caption = 'Stop Loading'
|
||||||
|
Enabled = False
|
||||||
|
OnClick = BtnStopLoadingClick
|
||||||
|
TabOrder = 8
|
||||||
|
end
|
||||||
|
object BtnEditSelThumb: TButton
|
||||||
|
AnchorSideLeft.Control = CbMinMemory
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = BtnStopLoading
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 418
|
||||||
|
Height = 25
|
||||||
|
Top = 29
|
||||||
|
Width = 135
|
||||||
|
AutoSize = True
|
||||||
|
BorderSpacing.Left = 16
|
||||||
|
BorderSpacing.Top = 2
|
||||||
|
BorderSpacing.Bottom = 4
|
||||||
|
Caption = 'Edit Selected Thumb'
|
||||||
|
OnClick = BtnEditSelThumbClick
|
||||||
|
TabOrder = 7
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object Panel2: TPanel
|
||||||
|
Left = 0
|
||||||
|
Height = 546
|
||||||
|
Top = 58
|
||||||
|
Width = 153
|
||||||
|
Align = alLeft
|
||||||
|
BevelOuter = bvNone
|
||||||
|
Caption = 'Panel2'
|
||||||
|
ClientHeight = 546
|
||||||
|
ClientWidth = 153
|
||||||
|
TabOrder = 1
|
||||||
|
object ShellTreeView: TShellTreeView
|
||||||
|
Left = 0
|
||||||
|
Height = 376
|
||||||
|
Hint = 'Set directory where your images are located and watch the thumbview creating the thumbs'
|
||||||
|
Top = 0
|
||||||
|
Width = 153
|
||||||
|
Align = alClient
|
||||||
|
FileSortType = fstNone
|
||||||
|
HideSelection = False
|
||||||
|
ReadOnly = True
|
||||||
|
TabOrder = 0
|
||||||
|
OnChange = ShellTreeViewChange
|
||||||
|
Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
|
||||||
|
ObjectTypes = [otFolders]
|
||||||
|
end
|
||||||
|
object RadioGroup1: TRadioGroup
|
||||||
|
Left = 0
|
||||||
|
Height = 77
|
||||||
|
Hint = 'Change the AlignView property to either use the thumbGup (VTNormal) autocalculate the empty space to equall parts(VTSPACEEQUAL) or Cender the thumbs in the using the htumbgup between them.'
|
||||||
|
Top = 384
|
||||||
|
Width = 153
|
||||||
|
Align = alBottom
|
||||||
|
AutoFill = True
|
||||||
|
AutoSize = True
|
||||||
|
BorderSpacing.Top = 8
|
||||||
|
Caption = ' AlignView '
|
||||||
|
ChildSizing.LeftRightSpacing = 6
|
||||||
|
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
|
||||||
|
ChildSizing.EnlargeVertical = crsHomogenousChildResize
|
||||||
|
ChildSizing.ShrinkHorizontal = crsScaleChilds
|
||||||
|
ChildSizing.ShrinkVertical = crsScaleChilds
|
||||||
|
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
||||||
|
ChildSizing.ControlsPerLine = 1
|
||||||
|
ClientHeight = 57
|
||||||
|
ClientWidth = 149
|
||||||
|
ItemIndex = 0
|
||||||
|
Items.Strings = (
|
||||||
|
'VTNormal'
|
||||||
|
'VTCenter'
|
||||||
|
'VTFitToScreen'
|
||||||
|
)
|
||||||
|
OnClick = RadioGroup1Click
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
object RadioGroup2: TRadioGroup
|
||||||
|
Left = 0
|
||||||
|
Height = 77
|
||||||
|
Hint = 'Change the ScrollMode to change the direction the thumb are scrolling in the screen SMVertical You will see a vertical scrollbar SMHorizontal For A horizontal ScrollBar or SMBoth to create a square view '
|
||||||
|
Top = 469
|
||||||
|
Width = 153
|
||||||
|
Align = alBottom
|
||||||
|
AutoFill = True
|
||||||
|
AutoSize = True
|
||||||
|
BorderSpacing.Top = 8
|
||||||
|
Caption = ' ScrollMode '
|
||||||
|
ChildSizing.LeftRightSpacing = 6
|
||||||
|
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
|
||||||
|
ChildSizing.EnlargeVertical = crsHomogenousChildResize
|
||||||
|
ChildSizing.ShrinkHorizontal = crsScaleChilds
|
||||||
|
ChildSizing.ShrinkVertical = crsScaleChilds
|
||||||
|
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
||||||
|
ChildSizing.ControlsPerLine = 1
|
||||||
|
ClientHeight = 57
|
||||||
|
ClientWidth = 149
|
||||||
|
ItemIndex = 2
|
||||||
|
Items.Strings = (
|
||||||
|
'SMHorizontal'
|
||||||
|
'SMVertical'
|
||||||
|
'SMBoth'
|
||||||
|
)
|
||||||
|
OnClick = RadioGroup2Click
|
||||||
|
TabOrder = 2
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object Panel3: TPanel
|
||||||
|
Left = 156
|
||||||
|
Height = 546
|
||||||
|
Top = 58
|
||||||
|
Width = 714
|
||||||
|
Align = alClient
|
||||||
|
BevelOuter = bvNone
|
||||||
|
Caption = 'Panel3'
|
||||||
|
ClientHeight = 546
|
||||||
|
ClientWidth = 714
|
||||||
|
TabOrder = 2
|
||||||
|
object DirInfoPanel: TPanel
|
||||||
|
Left = 0
|
||||||
|
Height = 16
|
||||||
|
Hint = 'Read the selectedFile property to get the path+filename of the selected thumb'
|
||||||
|
Top = 530
|
||||||
|
Width = 714
|
||||||
|
Align = alBottom
|
||||||
|
BevelOuter = bvLowered
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
|
object ThumbView: TJvThumbView
|
||||||
|
Left = 0
|
||||||
|
Height = 530
|
||||||
|
Top = 0
|
||||||
|
Width = 714
|
||||||
|
HorzScrollBar.Page = 1
|
||||||
|
HorzScrollBar.Tracking = True
|
||||||
|
VertScrollBar.Page = 1
|
||||||
|
VertScrollBar.Tracking = True
|
||||||
|
Align = alClient
|
||||||
|
TabOrder = 1
|
||||||
|
TabStop = True
|
||||||
|
OnDblClick = ThumbViewDblClick
|
||||||
|
OnMouseUp = ThumbViewMouseUp
|
||||||
|
AlignView = vtNormal
|
||||||
|
AutoScrolling = True
|
||||||
|
ThumbGap = 4
|
||||||
|
AutoHandleKeyb = True
|
||||||
|
MinMemory = True
|
||||||
|
MaxWidth = 200
|
||||||
|
MaxHeight = 200
|
||||||
|
Size = 100
|
||||||
|
ScrollMode = smHorizontal
|
||||||
|
Sorted = True
|
||||||
|
OnStartScanning = ThumbViewStartScanning
|
||||||
|
OnStopScanning = ThumbViewStopScanning
|
||||||
|
OnScanProgress = ThumbViewScanProgress
|
||||||
|
OnChange = ThumbViewChange
|
||||||
|
OnKeyUp = ThumbViewKeyUp
|
||||||
|
AsButtons = False
|
||||||
|
Filter = 'Portable Graphics Network (*.png)|*.png|PCX Image (*.pcx)|*.pcx|ANI Image (*.ani)|*.ani|JPEG Image File (*.jpg)|*.jpg|Bitmaps (*.bmp)|*.bmp|Icons (*.ico)|*.ico|Enhanced Metafiles (*.emf)|*.emf|Metafiles (*.wmf)|*.wmf'
|
||||||
|
ThumbColor = clNone
|
||||||
|
ShowShadow = False
|
||||||
|
ShadowColor = clBlack
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object Panel5: TPanel
|
||||||
|
Left = 0
|
||||||
|
Height = 24
|
||||||
|
Top = 632
|
||||||
|
Width = 878
|
||||||
|
Align = alBottom
|
||||||
|
BorderWidth = 2
|
||||||
|
ClientHeight = 24
|
||||||
|
ClientWidth = 878
|
||||||
|
TabOrder = 1
|
||||||
|
object Bevel1: TBevel
|
||||||
|
Left = 3
|
||||||
|
Height = 18
|
||||||
|
Top = 3
|
||||||
|
Width = 291
|
||||||
|
Align = alLeft
|
||||||
|
end
|
||||||
|
object ProgressBar: TProgressBar
|
||||||
|
Left = 5
|
||||||
|
Height = 13
|
||||||
|
Top = 5
|
||||||
|
Width = 284
|
||||||
|
Step = 0
|
||||||
|
TabOrder = 0
|
||||||
|
Visible = False
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
250
components/jvcllaz/examples/JvThumbnail/JvThumbnailMainFormU.pas
Normal file
250
components/jvcllaz/examples/JvThumbnail/JvThumbnailMainFormU.pas
Normal file
@ -0,0 +1,250 @@
|
|||||||
|
{******************************************************************
|
||||||
|
|
||||||
|
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
|
||||||
|
Classes, Controls, Forms, StdCtrls, ExtCtrls, FileCtrl, ComCtrls, Spin, ShellCtrls,
|
||||||
|
JvThumbNails, {JvSpecialProgress, }JvThumbViews, JvBaseThumbnail;
|
||||||
|
{
|
||||||
|
JvListBox, JvDriveCtrls, JvCombobox, JvExControls, JvComponent,
|
||||||
|
JvExStdCtrls, JvExForms; }
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TJvThumbnailMainForm }
|
||||||
|
|
||||||
|
TJvThumbnailMainForm = class(TForm)
|
||||||
|
PageControl1: TPageControl;
|
||||||
|
TabSheet1: TTabSheet;
|
||||||
|
Splitter1: TSplitter;
|
||||||
|
Panel1: TPanel;
|
||||||
|
LblThumbSize: TLabel;
|
||||||
|
Label3: TLabel;
|
||||||
|
Label4: TLabel;
|
||||||
|
TbThumbSize: TTrackBar;
|
||||||
|
CbAutoScrolling: TCheckBox;
|
||||||
|
CbAutoHandleKeyboard: TCheckBox;
|
||||||
|
SpinEdit1: TSpinEdit;
|
||||||
|
SpinEdit2: TSpinEdit;
|
||||||
|
CbSorted: TCheckBox;
|
||||||
|
CbMinMemory: TCheckBox;
|
||||||
|
Panel2: TPanel;
|
||||||
|
ShellTreeView: TShellTreeView;
|
||||||
|
RadioGroup1: TRadioGroup;
|
||||||
|
RadioGroup2: TRadioGroup;
|
||||||
|
Panel3: TPanel;
|
||||||
|
DirInfoPanel: TPanel;
|
||||||
|
BtnStopLoading: TButton;
|
||||||
|
BtnEditSelThumb: TButton;
|
||||||
|
ThumbView: TJVTHumbview;
|
||||||
|
Panel5: TPanel;
|
||||||
|
ProgressBar: TProgressBar;
|
||||||
|
Bevel1: TBevel;
|
||||||
|
procedure ShellTreeViewChange(Sender: TObject; Node: TTreeNode);
|
||||||
|
procedure ThumbViewKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||||
|
procedure ThumbViewMouseUp(Sender: TObject; Button: TMouseButton;
|
||||||
|
Shift: TShiftState; X, Y: Integer);
|
||||||
|
procedure ThumbViewScanProgress(Sender: TObject; APosition: Integer;
|
||||||
|
var Break: Boolean);
|
||||||
|
procedure ThumbViewStartScanning(Sender: TObject; AMax: Integer);
|
||||||
|
procedure ThumbViewStopScanning(Sender: TObject);
|
||||||
|
procedure BtnStopLoadingClick(Sender: TObject);
|
||||||
|
procedure CbAutoScrollingClick(Sender: TObject);
|
||||||
|
procedure CbAutoHandleKeyboardClick(Sender: TObject);
|
||||||
|
procedure CbMinMemoryClick(Sender: TObject);
|
||||||
|
procedure SpinEdit1Change(Sender: TObject);
|
||||||
|
procedure SpinEdit2Change(Sender: TObject);
|
||||||
|
procedure RadioGroup1Click(Sender: TObject);
|
||||||
|
procedure RadioGroup2Click(Sender: TObject);
|
||||||
|
procedure FormShow(Sender: TObject);
|
||||||
|
procedure TbThumbSizeChange(Sender: TObject);
|
||||||
|
procedure ThumbViewDblClick(Sender: TObject);
|
||||||
|
procedure BtnEditSelThumbClick(Sender: TObject);
|
||||||
|
procedure ThumbViewChange(Sender: TObject);
|
||||||
|
public
|
||||||
|
NewDir: Boolean;
|
||||||
|
Scanning: Boolean;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
JvThumbnailMainForm: TJvThumbnailMainForm;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses JvThumbnailChildFormU;
|
||||||
|
|
||||||
|
{$R *.lfm}
|
||||||
|
|
||||||
|
procedure TJvThumbnailMainForm.ThumbViewMouseUp(Sender: TObject; Button: TMouseButton;
|
||||||
|
Shift: TShiftState; X, Y: Integer);
|
||||||
|
begin
|
||||||
|
DirInfoPanel.Caption := ThumbView.SelectedFile;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailMainForm.ThumbViewKeyUp(Sender: TObject; var Key: Word;
|
||||||
|
Shift: TShiftState);
|
||||||
|
begin
|
||||||
|
DirInfoPanel.Caption := ThumbView.SelectedFile;
|
||||||
|
end;
|
||||||
|
|
||||||
|
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;
|
||||||
|
Spinedit2.MaxValue := ThumbView.Count - 1;
|
||||||
|
newdir := False;
|
||||||
|
BtnStopLoading.Enabled := False;
|
||||||
|
ProgressBar.Position := 0;
|
||||||
|
ProgressBar.Visible := false;
|
||||||
|
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;
|
||||||
|
|
||||||
|
procedure TJvThumbnailMainForm.SpinEdit1Change(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if spinedit1.Text <> '' then ThumbView.ThumbGap := spinedit1.Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailMainForm.SpinEdit2Change(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ThumbView.Selected := spinedit2.Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailMainForm.RadioGroup1Click(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ThumbView.AlignView := TViewType(radiogroup1.ItemIndex);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailMainForm.RadioGroup2Click(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ThumbView.ScrollMode := TscrollMode(radiogroup2.ItemIndex);
|
||||||
|
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;
|
||||||
|
|
||||||
|
procedure TJvThumbnailMainForm.FormShow(Sender: TObject);
|
||||||
|
begin
|
||||||
|
CbAutoScrolling.Checked := ThumbView.AutoScrolling;
|
||||||
|
CbAutoHandleKeyboard.Checked := ThumbView.AutoHandleKeyb;
|
||||||
|
CbSorted.Checked := ThumbView.Sorted;
|
||||||
|
CbSorted.Checked := ThumbView.MinMemory;
|
||||||
|
spinedit1.Value := ThumbView.ThumbGap;
|
||||||
|
spinedit2.MaxValue := 0;
|
||||||
|
spinedit1.MinValue := 0;
|
||||||
|
radiogroup1.ItemIndex := integer(ThumbView.alignview);
|
||||||
|
radiogroup2.ItemIndex := integer(ThumbView.scrollMode);
|
||||||
|
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
|
||||||
|
F.ShelLTreeView.Path := ShellTreeView.Path;
|
||||||
|
if Sender is TJvThumbView then
|
||||||
|
begin
|
||||||
|
F.SetFileName(TJvThumbView(Sender).SelectedFile);
|
||||||
|
// F.FileListBox1.FileName := tjvThumbView(Sender).SelectedFile;
|
||||||
|
end;
|
||||||
|
if Sender is TJvThumbnail then
|
||||||
|
begin
|
||||||
|
F.SetFileName(TJvThumbnail(Sender).FileName);
|
||||||
|
// F.FileListBox1.FileName := tjvthumbnail(Sender).FileName;
|
||||||
|
end;
|
||||||
|
F.ShowModal;
|
||||||
|
finally
|
||||||
|
F.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailMainForm.BtnEditSelThumbClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
ThumbViewDblClick(ThumbView);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnailMainForm.ThumbViewChange(Sender: TObject);
|
||||||
|
begin
|
||||||
|
DirInfoPanel.Caption := ThumbView.SelectedFile;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
@ -23,7 +23,7 @@
|
|||||||
"/>
|
"/>
|
||||||
<License Value="The JVCL is released in accordance with the MPL 1.1 license. To get your own copy or read it, go to http://www.mozilla.org/MPL/MPL-1.1.html. "/>
|
<License Value="The JVCL is released in accordance with the MPL 1.1 license. To get your own copy or read it, go to http://www.mozilla.org/MPL/MPL-1.1.html. "/>
|
||||||
<Version Major="1" Release="4"/>
|
<Version Major="1" Release="4"/>
|
||||||
<Files Count="8">
|
<Files Count="9">
|
||||||
<Item1>
|
<Item1>
|
||||||
<Filename Value="..\run\JvCore\JvTypes.pas"/>
|
<Filename Value="..\run\JvCore\JvTypes.pas"/>
|
||||||
<UnitName Value="JvTypes"/>
|
<UnitName Value="JvTypes"/>
|
||||||
@ -56,6 +56,10 @@
|
|||||||
<Filename Value="..\run\JvCore\JvResources.pas"/>
|
<Filename Value="..\run\JvCore\JvResources.pas"/>
|
||||||
<UnitName Value="JvResources"/>
|
<UnitName Value="JvResources"/>
|
||||||
</Item8>
|
</Item8>
|
||||||
|
<Item9>
|
||||||
|
<Filename Value="..\run\JvCore\JvThemes.pas"/>
|
||||||
|
<UnitName Value="JvThemes"/>
|
||||||
|
</Item9>
|
||||||
</Files>
|
</Files>
|
||||||
<RequiredPkgs Count="2">
|
<RequiredPkgs Count="2">
|
||||||
<Item1>
|
<Item1>
|
||||||
@ -73,5 +77,8 @@
|
|||||||
<Version Value="2"/>
|
<Version Value="2"/>
|
||||||
<IgnoreBinaries Value="False"/>
|
<IgnoreBinaries Value="False"/>
|
||||||
</PublishOptions>
|
</PublishOptions>
|
||||||
|
<CustomOptions Items="ExternHelp" Version="2">
|
||||||
|
<_ExternHelp Items="Count"/>
|
||||||
|
</CustomOptions>
|
||||||
</Package>
|
</Package>
|
||||||
</CONFIG>
|
</CONFIG>
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
"/>
|
"/>
|
||||||
<License Value="The JVCL is released in accordance with the MPL 1.1 license. To get your own copy or read it, go to http://www.mozilla.org/MPL/MPL-1.1.html. "/>
|
<License Value="The JVCL is released in accordance with the MPL 1.1 license. To get your own copy or read it, go to http://www.mozilla.org/MPL/MPL-1.1.html. "/>
|
||||||
<Version Major="1" Release="4"/>
|
<Version Major="1" Release="4"/>
|
||||||
<Files Count="5">
|
<Files Count="9">
|
||||||
<Item1>
|
<Item1>
|
||||||
<Filename Value="..\run\JvCustomControls\jvtimeline.pas"/>
|
<Filename Value="..\run\JvCustomControls\jvtimeline.pas"/>
|
||||||
<UnitName Value="JvTimeLine"/>
|
<UnitName Value="JvTimeLine"/>
|
||||||
@ -39,6 +39,22 @@
|
|||||||
<Filename Value="..\run\JvCustomControls\JvTabBarXPPainter.pas"/>
|
<Filename Value="..\run\JvCustomControls\JvTabBarXPPainter.pas"/>
|
||||||
<UnitName Value="JvTabBarXPPainter"/>
|
<UnitName Value="JvTabBarXPPainter"/>
|
||||||
</Item5>
|
</Item5>
|
||||||
|
<Item6>
|
||||||
|
<Filename Value="..\run\JvCustomControls\JvBaseThumbnail.pas"/>
|
||||||
|
<UnitName Value="JvBaseThumbnail"/>
|
||||||
|
</Item6>
|
||||||
|
<Item7>
|
||||||
|
<Filename Value="..\run\JvCustomControls\JvThumbImage.pas"/>
|
||||||
|
<UnitName Value="JvThumbImage"/>
|
||||||
|
</Item7>
|
||||||
|
<Item8>
|
||||||
|
<Filename Value="..\run\JvCustomControls\JvThumbnails.pas"/>
|
||||||
|
<UnitName Value="JvThumbnails"/>
|
||||||
|
</Item8>
|
||||||
|
<Item9>
|
||||||
|
<Filename Value="..\run\JvCustomControls\JvThumbViews.pas"/>
|
||||||
|
<UnitName Value="JvThumbViews"/>
|
||||||
|
</Item9>
|
||||||
</Files>
|
</Files>
|
||||||
<RequiredPkgs Count="2">
|
<RequiredPkgs Count="2">
|
||||||
<Item1>
|
<Item1>
|
||||||
|
Binary file not shown.
1042
components/jvcllaz/run/JvCore/JvThemes.pas
Normal file
1042
components/jvcllaz/run/JvCore/JvThemes.pas
Normal file
File diff suppressed because it is too large
Load Diff
686
components/jvcllaz/run/JvCustomControls/JvBaseThumbnail.pas
Normal file
686
components/jvcllaz/run/JvCustomControls/JvBaseThumbnail.pas
Normal file
@ -0,0 +1,686 @@
|
|||||||
|
{-----------------------------------------------------------------------------
|
||||||
|
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: JvBasethb.PAS, released on 2002-07-03.
|
||||||
|
|
||||||
|
The Initial Developer of the Original Code is John Kozikopulos [Stdreamer att Excite dott com]
|
||||||
|
Portions created by John Kozikopulos are Copyright (C) 2002 John Kozikopulos.
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Contributor(s):
|
||||||
|
|
||||||
|
You may Thumb the latest version of this file at the Project JEDI's JVCL home page,
|
||||||
|
located at http://jvcl.delphi-jedi.org
|
||||||
|
|
||||||
|
Known Issues:
|
||||||
|
This file contains (most likely) greek comments.
|
||||||
|
-----------------------------------------------------------------------------}
|
||||||
|
// $Id$
|
||||||
|
|
||||||
|
unit JvBaseThumbnail;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
//{$I crossplatform.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
LclIntf, LCLType, LMessages,
|
||||||
|
(*
|
||||||
|
Windows, // TWin32FindData
|
||||||
|
{$IFDEF HAS_UNIT_LIBC}
|
||||||
|
Libc, // stat()
|
||||||
|
{$ENDIF HAS_UNIT_LIBC}
|
||||||
|
Messages,
|
||||||
|
*)
|
||||||
|
Classes, Graphics, Controls, Forms, ExtCtrls,
|
||||||
|
//JclBase,
|
||||||
|
//JvExForms,
|
||||||
|
JvExExtCtrls;
|
||||||
|
|
||||||
|
// (rom) TFileName is already declared in SysUtils
|
||||||
|
|
||||||
|
type
|
||||||
|
{ The TFileName object has been created to handle the first field of a Thumb
|
||||||
|
Which is the Thumbs actual FileName complete with the Path because no
|
||||||
|
duplicates are allowed in the final list.
|
||||||
|
It Has the following properties
|
||||||
|
01) FileName : it keeps the filename as given by the user
|
||||||
|
02) LongName : it always returns the LongName of the file
|
||||||
|
03) ShortName: it always returns the short name of the file
|
||||||
|
04) Size : it returns the size in Bytes that it will occupy if saved in a stream
|
||||||
|
05) Length : the "FileName" property Length;
|
||||||
|
and the following methods
|
||||||
|
01) LoadFromStream(AStream: TStream; APos: Integer); loads a filename from a stream
|
||||||
|
if APos < 0 then don't change the cursor position in the stream
|
||||||
|
else AStream.Seek(APos, 0);
|
||||||
|
02) SaveToStream(AStream: TStream; APos: Integer); Save the FileName to AStream
|
||||||
|
if APos > -1 then AStream.Seek(APos, 0);
|
||||||
|
SaveData;
|
||||||
|
}
|
||||||
|
TProgressNotify = procedure(Sender: TObject; Position: Integer; var Stop: Boolean) of object;
|
||||||
|
TInvalidImageEvent = procedure(Sender: TObject; const AFileName: string) of object;
|
||||||
|
// (rom) renamed
|
||||||
|
TGRFKind = (grBMP, grJPG, grWMF, grEMF, grICO, grPNG); //,grPCX,grTGA);
|
||||||
|
TPercent = -100..100;
|
||||||
|
|
||||||
|
{$M+}
|
||||||
|
TJvFileName = class(TObject) // was: TFileName, renamed to TJvFileName to avoid conflict with existing type
|
||||||
|
private
|
||||||
|
FLongName: string;
|
||||||
|
FShortName: string;
|
||||||
|
FFileName: string;
|
||||||
|
FCreated: TDateTime;
|
||||||
|
FAccessed: TDateTime;
|
||||||
|
FModified: TDateTime;
|
||||||
|
FFileSize: Longint;
|
||||||
|
protected
|
||||||
|
procedure SetName(NewName: string); virtual;
|
||||||
|
function GetLength: Integer;
|
||||||
|
procedure SetLength(NewLength: Integer);
|
||||||
|
procedure Init;
|
||||||
|
public
|
||||||
|
procedure LoadFromStream(AStream: TStream; APos: Integer); //Load From stream
|
||||||
|
// both of this routines are inserting extract data to the stream its self
|
||||||
|
// like a header and data end string;
|
||||||
|
procedure SaveToStream(AStream: TStream; APos: Integer); // Save to a Stream
|
||||||
|
// (rom) moved to public
|
||||||
|
property LongName: string read FLongName; // The LongName of this filename
|
||||||
|
property ShortName: string read FShortName; // shortname of this filename
|
||||||
|
published
|
||||||
|
property FileName: string read FFileName write SetName; // The FileName as given by the user
|
||||||
|
property Length: Integer read GetLength write SetLength;
|
||||||
|
end;
|
||||||
|
{$M-}
|
||||||
|
|
||||||
|
{ The Following classes are declared here so I can handle interaction of the mouse
|
||||||
|
between the three components.
|
||||||
|
}
|
||||||
|
TJvThumbTitle = class(TPanel) //TJvExPanel)
|
||||||
|
protected
|
||||||
|
{ wp: removed }
|
||||||
|
// function DoEraseBackground(ACanvas: TCanvas; Param: LPARAM): Boolean; override;
|
||||||
|
procedure Click; override;
|
||||||
|
procedure DblClick; override;
|
||||||
|
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
|
||||||
|
X, Y: Integer); override;
|
||||||
|
procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
|
||||||
|
X, Y: Integer); override;
|
||||||
|
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
|
||||||
|
function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; override;
|
||||||
|
function DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; override;
|
||||||
|
function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; override;
|
||||||
|
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
|
||||||
|
procedure KeyUp(var Key: Word; Shift: TShiftState); override;
|
||||||
|
procedure KeyPress(var Key: Char); override;
|
||||||
|
public
|
||||||
|
constructor Create(AOwner: TComponent); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvBaseThumbImage = class(TImage) //TJvExImage)
|
||||||
|
private
|
||||||
|
FIgnoreMouse: Boolean;
|
||||||
|
protected
|
||||||
|
{ wp removed
|
||||||
|
function HitTest(X, Y: Integer): Boolean; 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 Click; override;
|
||||||
|
procedure DblClick; override;
|
||||||
|
public
|
||||||
|
constructor Create(AOwner: TComponent); override;
|
||||||
|
published
|
||||||
|
property IgnoreMouse: Boolean read FIgnoreMouse write FIgnoreMouse;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvBaseThumbnail = class(TPanel) //JvExPanel)
|
||||||
|
protected
|
||||||
|
{ wp removed
|
||||||
|
function DoEraseBackground(Canvas: TCanvas; Param: LPARAM): Boolean; 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 Click; override;
|
||||||
|
procedure DblClick; override;
|
||||||
|
function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean; override;
|
||||||
|
function DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; override;
|
||||||
|
function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; override;
|
||||||
|
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
|
||||||
|
procedure KeyUp(var Key: Word; Shift: TShiftState); override;
|
||||||
|
procedure KeyPress(var Key: Char); override;
|
||||||
|
public
|
||||||
|
constructor Create(AOwner: TComponent); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvBaseThumbView = class(TScrollbox) //JvExScrollBox)
|
||||||
|
protected
|
||||||
|
// function DoEraseBackground(Canvas: TCanvas; Param: LPARAM): Boolean; override;
|
||||||
|
public
|
||||||
|
constructor Create(AOwner: TComponent); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function BoundByte(Min, Max, Value: Integer): Byte;
|
||||||
|
procedure InsertStr(var Str: string; const NewStr: string; Pos: Longint);
|
||||||
|
function ProportionalSize(PhysicalSize, NewSize: TPoint): TPoint;
|
||||||
|
function ReplaceChar(const AStr: string; const CharToFind, NewChar: Char;
|
||||||
|
ReplaceNo: Longint; CaseSensitive: Boolean): string;
|
||||||
|
function JkCeil(I: Extended): Longint;
|
||||||
|
function ReplaceAllStr(const Str, SearchFor, ReplaceWith: string;
|
||||||
|
CaseSensitive: Boolean): string;
|
||||||
|
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
SysUtils, Types, //LazFileUtils,
|
||||||
|
JvJCLUtils, JvThemes;
|
||||||
|
|
||||||
|
function ReplaceAllStr(const Str, SearchFor, ReplaceWith: string;
|
||||||
|
CaseSensitive: Boolean): string;
|
||||||
|
var
|
||||||
|
Cnt: Integer;
|
||||||
|
S1, S2, SF: string;
|
||||||
|
begin
|
||||||
|
S1 := Str;
|
||||||
|
if CaseSensitive then
|
||||||
|
begin
|
||||||
|
S2 := S1;
|
||||||
|
SF := SearchFor;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
S2 := UpperCase(S1);
|
||||||
|
SF := UpperCase(SearchFor);
|
||||||
|
end;
|
||||||
|
Result := '';
|
||||||
|
repeat
|
||||||
|
Cnt := Pos(SF, S2);
|
||||||
|
if Cnt > 0 then
|
||||||
|
begin
|
||||||
|
Result := Result + Copy(S1, 1, Cnt - 1) + ReplaceWith;
|
||||||
|
S1 := Copy(S1, Cnt + Length(SF), Length(S1));
|
||||||
|
if CaseSensitive then
|
||||||
|
S2 := S1
|
||||||
|
else
|
||||||
|
S2 := UpperCase(S1);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Result := Result + S1;
|
||||||
|
until Cnt <= 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function JkCeil(I: Extended): Longint;
|
||||||
|
var
|
||||||
|
T: Longint;
|
||||||
|
begin
|
||||||
|
T := Trunc(I);
|
||||||
|
if T <> I then
|
||||||
|
if I > 0 then
|
||||||
|
T := T + 1
|
||||||
|
else
|
||||||
|
T := T - 1;
|
||||||
|
Result := T;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function ReplaceChar(const AStr: string; const CharToFind, NewChar: Char;
|
||||||
|
ReplaceNo: Longint; CaseSensitive: Boolean): string;
|
||||||
|
var
|
||||||
|
Count: Longint;
|
||||||
|
RepCount: Longint;
|
||||||
|
Res: string;
|
||||||
|
begin
|
||||||
|
Res := AStr;
|
||||||
|
if ReplaceNo > 0 then
|
||||||
|
RepCount := 0
|
||||||
|
else
|
||||||
|
RepCount := -1;
|
||||||
|
Count := 1;
|
||||||
|
if Length(Res) > 0 then
|
||||||
|
repeat
|
||||||
|
if Res[Count] = CharToFind then
|
||||||
|
begin
|
||||||
|
Res[Count] := NewChar;
|
||||||
|
if RepCount >= 0 then
|
||||||
|
Inc(RepCount, 1);
|
||||||
|
end;
|
||||||
|
Inc(Count, 1);
|
||||||
|
until (Count > Length(Res)) or (RepCount >= ReplaceNo);
|
||||||
|
Result := Res;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function ProportionalSize(PhysicalSize, NewSize: TPoint): TPoint;
|
||||||
|
var
|
||||||
|
Percent: Single;
|
||||||
|
TempX, TempY: Single;
|
||||||
|
begin
|
||||||
|
// Õðïëïãéóìüò ðïóïóôïý åðß ôçò åêáôü ðïõ èá åðéäïèåß óôçí ôéìÞ ðñïò
|
||||||
|
// áëëáãÞ. [This seems to be greek, couldn't find translator]
|
||||||
|
if PhysicalSize.X <> 0 then
|
||||||
|
TempX := ((NewSize.X) / PhysicalSize.X) * 100.0
|
||||||
|
else
|
||||||
|
TempX := 0;
|
||||||
|
if PhysicalSize.Y <> 0 then
|
||||||
|
TempY := ((NewSize.Y) / PhysicalSize.Y) * 100.0
|
||||||
|
else
|
||||||
|
TempY := 0;
|
||||||
|
//Åõñåóç ìéêñüôåñïõ ðïóïóôïý áëáãÞò êáé ÷ñÞóç áõôïý.
|
||||||
|
// [this seems to be greek, couldn't find translator]
|
||||||
|
if TempX <= TempY then
|
||||||
|
Percent := TempX
|
||||||
|
else
|
||||||
|
Percent := TempY;
|
||||||
|
//Fs.X:=round((PhysicalSize.X/100)*Percent);
|
||||||
|
//Fs.Y:=round((PhysicalSize.Y/100)*Percent);
|
||||||
|
Result.X := Trunc((PhysicalSize.X / 100.0) * Percent);
|
||||||
|
Result.Y := Trunc((PhysicalSize.Y / 100.0) * Percent);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure InsertStr(var Str: string; const NewStr: string; Pos: Longint);
|
||||||
|
begin
|
||||||
|
System.Insert(NewStr, Str, Pos);
|
||||||
|
{
|
||||||
|
SetLength(Str, Length(Str) + Length(NewStr));
|
||||||
|
MoveChar(Str, Pos, Str, Pos + Length(NewStr), Length(Str) - Pos - Length(NewStr));
|
||||||
|
MoveChar(NewStr, 0, Str, Pos, Length(NewStr));
|
||||||
|
}
|
||||||
|
end;
|
||||||
|
|
||||||
|
function BoundByte(Min, Max, Value: Integer): Byte;
|
||||||
|
begin
|
||||||
|
if Value < Min then
|
||||||
|
Result := Min
|
||||||
|
else
|
||||||
|
if Value > Max then
|
||||||
|
Result := Max
|
||||||
|
else
|
||||||
|
Result := Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvThumbTitle } ======================================================
|
||||||
|
|
||||||
|
constructor TJvThumbTitle.Create(AOwner: TComponent);
|
||||||
|
begin
|
||||||
|
inherited Create(AOwner);
|
||||||
|
if AOwner is TJvBaseThumbnail then
|
||||||
|
ControlStyle := ControlStyle - [csSetCaption, csCaptureMouse, csClickEvents, csDoubleClicks]
|
||||||
|
else
|
||||||
|
ControlStyle := ControlStyle - [csSetCaption];
|
||||||
|
IncludeThemeStyle(Self, [csNeedsBorderPaint]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ wp removed
|
||||||
|
function TJvThumbTitle.DoEraseBackground(ACanvas: TCanvas; Param: LPARAM): Boolean;
|
||||||
|
begin
|
||||||
|
inherited DoEraseBackground(ACanvas, Param);
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
}
|
||||||
|
|
||||||
|
procedure TJvThumbTitle.MouseDown(Button: TMouseButton; Shift: TShiftState;
|
||||||
|
X, Y: Integer);
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbnail then
|
||||||
|
TJvBaseThumbnail(Parent).MouseDown(Button, Shift, X + Left, Y + Top)
|
||||||
|
else
|
||||||
|
inherited MouseDown(Button, Shift, X, Y);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbTitle.MouseUp(Button: TMouseButton; Shift: TShiftState;
|
||||||
|
X, Y: Integer);
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbnail then
|
||||||
|
TJvBaseThumbnail(Parent).MouseUp(Button, Shift, X + Left, Y + Top)
|
||||||
|
else
|
||||||
|
inherited MouseUp(Button, Shift, X, Y);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbTitle.Click;
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbnail then
|
||||||
|
TJvBaseThumbnail(Parent).Click
|
||||||
|
else
|
||||||
|
inherited Click;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbTitle.DblClick;
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbnail then
|
||||||
|
TJvBaseThumbnail(Parent).DblClick
|
||||||
|
else
|
||||||
|
inherited DblClick;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbTitle.MouseMove(Shift: TShiftState; X, Y: Integer);
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbnail then
|
||||||
|
TJvBaseThumbnail(Parent).MouseMove(Shift, X + Left, Y + Top)
|
||||||
|
else
|
||||||
|
inherited MouseMove(Shift, X, Y);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvThumbTitle.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean;
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbnail then
|
||||||
|
Result := TJvBaseThumbnail(Parent).DoMouseWheel(Shift, WheelDelta, MousePos)
|
||||||
|
else
|
||||||
|
Result := inherited DoMouseWheel(Shift, WheelDelta, MousePos);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvThumbTitle.DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean;
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbnail then
|
||||||
|
Result := TJvBaseThumbnail(Parent).DoMouseWheelDown(Shift, MousePos)
|
||||||
|
else
|
||||||
|
Result := inherited DoMouseWheelDown(Shift, MousePos);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvThumbTitle.DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean;
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbnail then
|
||||||
|
Result := TJvBaseThumbnail(Parent).DoMouseWheelUp(Shift, MousePos)
|
||||||
|
else
|
||||||
|
Result := inherited DoMouseWheelUp(Shift, MousePos);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbTitle.KeyDown(var Key: Word; Shift: TShiftState);
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbnail then
|
||||||
|
TJvBaseThumbnail(Parent).KeyDown(Key, Shift)
|
||||||
|
else
|
||||||
|
inherited KeyDown(Key, Shift);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbTitle.KeyUp(var Key: Word; Shift: TShiftState);
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbnail then
|
||||||
|
TJvBaseThumbnail(Parent).KeyUp(Key, Shift)
|
||||||
|
else
|
||||||
|
inherited KeyUp(Key, Shift);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbTitle.KeyPress(var Key: Char);
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbnail then
|
||||||
|
TJvBaseThumbnail(Parent).KeyPress(Key)
|
||||||
|
else
|
||||||
|
inherited KeyPress(Key);
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvBaseThumbImage } ==================================================
|
||||||
|
|
||||||
|
constructor TJvBaseThumbImage.Create(AOwner: TComponent);
|
||||||
|
begin
|
||||||
|
inherited Create(AOwner);
|
||||||
|
ControlStyle := ControlStyle - [csSetCaption];
|
||||||
|
{ If AOwner is TJvBaseThumbnail then
|
||||||
|
begin
|
||||||
|
ControlStyle := ControlStyle - [csCaptureMouse];
|
||||||
|
FIgnoreMouse := True;
|
||||||
|
end
|
||||||
|
else}
|
||||||
|
FIgnoreMouse := False;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvBaseThumbImage.MouseDown(Button: TMouseButton; Shift: TShiftState;
|
||||||
|
X, Y: Integer);
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbnail then
|
||||||
|
TJvBaseThumbnail(Parent).MouseDown(Button, Shift, X + Left, Y + Top)
|
||||||
|
else
|
||||||
|
inherited MouseDown(Button, Shift, X, Y);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvBaseThumbImage.MouseUp(Button: TMouseButton; Shift: TShiftState;
|
||||||
|
X, Y: Integer);
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbnail then
|
||||||
|
TJvBaseThumbnail(Parent).MouseUp(Button, Shift, X + Left, Y + Top)
|
||||||
|
else
|
||||||
|
inherited MouseUp(Button, Shift, X, Y);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvBaseThumbImage.MouseMove(Shift: TShiftState; X, Y: Integer);
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbnail then
|
||||||
|
TJvBaseThumbnail(Parent).MouseMove(Shift, X + Left, Y + Top)
|
||||||
|
else
|
||||||
|
inherited MouseMove(Shift, X, Y);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvBaseThumbImage.Click;
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbnail then
|
||||||
|
TJvBaseThumbnail(Parent).Click
|
||||||
|
else
|
||||||
|
inherited Click;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvBaseThumbImage.DblClick;
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbnail then
|
||||||
|
TJvBaseThumbnail(Parent).DblClick
|
||||||
|
else
|
||||||
|
inherited DblClick;
|
||||||
|
end;
|
||||||
|
|
||||||
|
(************ NOT CONVERTED ***
|
||||||
|
function TJvBaseThumbImage.HitTest(X, Y: Integer): Boolean;
|
||||||
|
{const
|
||||||
|
Hits: array [Boolean] of Longint = (HTCLIENT, HTNOWHERE);}
|
||||||
|
begin
|
||||||
|
if csDesigning in ComponentState then
|
||||||
|
Result := inherited HitTest(X, Y)
|
||||||
|
else
|
||||||
|
Result := not IgnoreMouse;
|
||||||
|
//Msg.Result := Hits[IgnoreMouse];
|
||||||
|
end;
|
||||||
|
**************)
|
||||||
|
|
||||||
|
//=== { TJvBaseThumbnail } ===================================================
|
||||||
|
|
||||||
|
constructor TJvBaseThumbnail.Create(AOwner: TComponent);
|
||||||
|
begin
|
||||||
|
inherited Create(AOwner);
|
||||||
|
if AOwner is TJvBaseThumbView then
|
||||||
|
ControlStyle := ControlStyle - [csSetCaption, csCaptureMouse]
|
||||||
|
// csClickEvents,csDoubleClicks]
|
||||||
|
else
|
||||||
|
ControlStyle := ControlStyle - [csSetCaption];
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvBaseThumbnail.MouseDown(Button: TMouseButton; Shift: TShiftState;
|
||||||
|
X, Y: Integer);
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbView then
|
||||||
|
TJvBaseThumbView(Parent).MouseDown(Button, Shift, Left + X, Top + Y)
|
||||||
|
else
|
||||||
|
inherited MouseDown(Button, Shift, X, Y);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ wp removed
|
||||||
|
function TJvBaseThumbnail.DoEraseBackground(Canvas: TCanvas; Param: LPARAM): Boolean;
|
||||||
|
begin
|
||||||
|
inherited DoEraseBackground(Canvas, Param);
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
}
|
||||||
|
|
||||||
|
procedure TJvBaseThumbnail.MouseMove(Shift: TShiftState; X, Y: Integer);
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbView then
|
||||||
|
TJvBaseThumbView(Parent).MouseMove(Shift, Left + X, Top + Y)
|
||||||
|
else
|
||||||
|
inherited MouseMove(Shift, X, Y);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvBaseThumbnail.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint): Boolean;
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbView then
|
||||||
|
Result := TJvBaseThumbView(Parent).DoMouseWheel(Shift, WheelDelta, MousePos)
|
||||||
|
else
|
||||||
|
Result := inherited DoMouseWheel(Shift, WheelDelta, MousePos);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvBaseThumbnail.DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean;
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbView then
|
||||||
|
Result := TJvBaseThumbView(Parent).DoMouseWheelDown(Shift, MousePos)
|
||||||
|
else
|
||||||
|
Result := inherited DoMouseWheelDown(Shift, MousePos);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvBaseThumbnail.DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean;
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbView then
|
||||||
|
Result := TJvBaseThumbView(Parent).DoMouseWheelUp(Shift, MousePos)
|
||||||
|
else
|
||||||
|
Result := inherited DoMouseWheelUp(Shift, MousePos);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvBaseThumbnail.KeyDown(var Key: Word; Shift: TShiftState);
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbView then
|
||||||
|
TJvBaseThumbView(Parent).KeyDown(Key, Shift)
|
||||||
|
else
|
||||||
|
inherited KeyDown(Key, Shift);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvBaseThumbnail.KeyUp(var Key: Word; Shift: TShiftState);
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbView then
|
||||||
|
TJvBaseThumbView(Parent).KeyUp(Key, Shift)
|
||||||
|
else
|
||||||
|
inherited KeyUp(Key, Shift);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvBaseThumbnail.KeyPress(var Key: Char);
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbView then
|
||||||
|
TJvBaseThumbView(Parent).KeyPress(Key)
|
||||||
|
else
|
||||||
|
inherited KeyPress(Key);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvBaseThumbnail.MouseUp(Button: TMouseButton; Shift: TShiftState;
|
||||||
|
X, Y: Integer);
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbView then
|
||||||
|
TJvBaseThumbView(Parent).MouseUp(Button, Shift, Left + X, Top + Y)
|
||||||
|
else
|
||||||
|
inherited MouseUp(Button, Shift, X, Y);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvBaseThumbnail.Click;
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbView then
|
||||||
|
TJvBaseThumbView(Parent).Click
|
||||||
|
else
|
||||||
|
inherited Click;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvBaseThumbnail.DblClick;
|
||||||
|
begin
|
||||||
|
if Parent is TJvBaseThumbView then
|
||||||
|
TJvBaseThumbView(Parent).DblClick
|
||||||
|
else
|
||||||
|
inherited DblClick;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvBaseThumbView } ===================================================
|
||||||
|
|
||||||
|
constructor TJvBaseThumbView.Create(AOwner: TComponent);
|
||||||
|
begin
|
||||||
|
inherited Create(AOwner);
|
||||||
|
ControlState := ControlState + [csFocusing];
|
||||||
|
ControlStyle := ControlStyle + [csOpaque] - [csSetCaption];
|
||||||
|
IncludeThemeStyle(Self, [csNeedsBorderPaint]);
|
||||||
|
end;
|
||||||
|
{
|
||||||
|
function TJvBaseThumbView.DoEraseBackground(Canvas: TCanvas; Param: LPARAM): Boolean;
|
||||||
|
begin
|
||||||
|
//Result :=
|
||||||
|
inherited DoEraseBackground(Canvas, Param);
|
||||||
|
Result := False;
|
||||||
|
end;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=== { TJvFileName } ==========================================================
|
||||||
|
|
||||||
|
procedure TJvFileName.SetName(NewName: string);
|
||||||
|
begin
|
||||||
|
FFileName := NewName;
|
||||||
|
if (NewName <> LongName) and (NewName <> ShortName) then
|
||||||
|
Init;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvFileName.Init;
|
||||||
|
var
|
||||||
|
Dft: DWORD;
|
||||||
|
Lft: TFileTime;
|
||||||
|
sr: TSearchRec;
|
||||||
|
begin
|
||||||
|
if FindFirst(FFileName, faAnyFile or faDirectory, sr) = 0 then
|
||||||
|
begin
|
||||||
|
FindClose(sr);
|
||||||
|
|
||||||
|
FLongName := sr.FindData.cFileName;
|
||||||
|
FShortName := sr.FindData.cAlternateFileName;
|
||||||
|
if FLongName = '' then
|
||||||
|
FLongName := FShortName;
|
||||||
|
if FShortName = '' then
|
||||||
|
FShortName := FLongName;
|
||||||
|
|
||||||
|
// FIX ME !!!
|
||||||
|
|
||||||
|
(**************** NOT CONVERTED ***
|
||||||
|
//fdFileAccessed
|
||||||
|
FileTimeToLocalFileTime(sr.FindData.ftLastAccessTime, Lft);
|
||||||
|
FileTimeToDosDateTime(Lft, LongRec(Dft).Hi, LongRec(Dft).Lo);
|
||||||
|
FAccessed := Dft;
|
||||||
|
//fdFilechanged
|
||||||
|
FileTimeToLocalFileTime(sr.FindData.ftLastwriteTime, Lft);
|
||||||
|
FileTimeToDosDateTime(Lft, LongRec(Dft).Hi, LongRec(Dft).Lo);
|
||||||
|
FModified := Dft;
|
||||||
|
//fdFilecreated
|
||||||
|
FileTimeToLocalFileTime(sr.FindData.ftCreationTime, Lft);
|
||||||
|
FileTimeToDosDateTime(Lft, LongRec(Dft).Hi, LongRec(Dft).Lo);
|
||||||
|
FCreated := Dft;
|
||||||
|
**************)
|
||||||
|
FFileSize := (sr.FindData.nFileSizeHigh * MAXDWORD) + sr.FindData.nFileSizeLow;
|
||||||
|
//FFileName:=NewName;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvFileName.LoadFromStream(AStream: TStream; APos: Integer);
|
||||||
|
begin
|
||||||
|
// Under Construction;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvFileName.SaveToStream(AStream: TStream; APos: Integer);
|
||||||
|
begin
|
||||||
|
//Under Construction
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvFileName.GetLength: Integer;
|
||||||
|
begin
|
||||||
|
Result := System.Length(FFileName);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvFileName.SetLength(NewLength: Integer);
|
||||||
|
begin
|
||||||
|
System.SetLength(FFileName, NewLength);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
@ -22,6 +22,8 @@ Known Issues:
|
|||||||
-----------------------------------------------------------------------------}
|
-----------------------------------------------------------------------------}
|
||||||
// $Id$
|
// $Id$
|
||||||
|
|
||||||
|
{$MODE objfpc}{$H+}
|
||||||
|
|
||||||
unit JvTabBarXPPainter;
|
unit JvTabBarXPPainter;
|
||||||
|
|
||||||
|
|
||||||
|
1146
components/jvcllaz/run/JvCustomControls/JvThumbImage.pas
Normal file
1146
components/jvcllaz/run/JvCustomControls/JvThumbImage.pas
Normal file
File diff suppressed because it is too large
Load Diff
1219
components/jvcllaz/run/JvCustomControls/JvThumbViews.pas
Normal file
1219
components/jvcllaz/run/JvCustomControls/JvThumbViews.pas
Normal file
File diff suppressed because it is too large
Load Diff
645
components/jvcllaz/run/JvCustomControls/JvThumbnails.pas
Normal file
645
components/jvcllaz/run/JvCustomControls/JvThumbnails.pas
Normal file
@ -0,0 +1,645 @@
|
|||||||
|
{-----------------------------------------------------------------------------
|
||||||
|
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: JvThumbNail.PAS, released on 2002-07-03.
|
||||||
|
|
||||||
|
The Initial Developer of the Original Code is John Kozikopulos [Stdreamer att Excite dott com]
|
||||||
|
Portions created by John Kozikopulos are Copyright (C) 2002 John Kozikopulos.
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Contributor(s):
|
||||||
|
|
||||||
|
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
|
||||||
|
located at http://jvcl.delphi-jedi.org
|
||||||
|
|
||||||
|
Description:
|
||||||
|
Thumbimage, ThumbNail components
|
||||||
|
Thumbimage is a TImage descentant wich passes the control of the mouse events
|
||||||
|
to the ThumbNail and have the ability to change an images look by changing
|
||||||
|
the rgb values with the changergb,changergbcurve procedures.
|
||||||
|
You can have precise control over the images look.
|
||||||
|
The changergb procedure just adds the values you pass to its rgb variables to
|
||||||
|
the actual values of the image.
|
||||||
|
The Changergbcurves procedure just replaces the value of the rgb values
|
||||||
|
accordingly with the values that passed in the the arrays.
|
||||||
|
e.g.
|
||||||
|
the r array in the position 15 has a value of 35 this meens that wherever in
|
||||||
|
the Picture there is a pixels which has a red value equall to 15 it will be ]
|
||||||
|
replaced with the value 35.
|
||||||
|
|
||||||
|
ThumbNail is what the name says a component to simply shrink an image
|
||||||
|
proportionally to fit in a portion of the screen with some extra mouse handling
|
||||||
|
to Create a Button like effect. Just give it a FileName and it will do the work
|
||||||
|
for you.
|
||||||
|
|
||||||
|
Known Issues:
|
||||||
|
-----------------------------------------------------------------------------}
|
||||||
|
// $Id$
|
||||||
|
|
||||||
|
unit JvThumbnails;
|
||||||
|
|
||||||
|
{$MODE objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
LCLIntf, LCLType, LMessages,
|
||||||
|
Classes, Controls, ExtCtrls, SysUtils, Graphics, Forms,
|
||||||
|
JvThumbImage, JvBaseThumbnail, Dialogs;
|
||||||
|
|
||||||
|
const
|
||||||
|
TH_IMAGESIZECHANGED = WM_USER + 1;
|
||||||
|
|
||||||
|
type
|
||||||
|
// (rom) elements renamed
|
||||||
|
TTitlePos = (tpUp, tpDown, tpNone);
|
||||||
|
|
||||||
|
TTitleNotify = procedure(Sender: TObject; FileName: string;
|
||||||
|
var ThumbnailTitle: string) of object;
|
||||||
|
|
||||||
|
TJvThumbnail = class(TJvBaseThumbnail)
|
||||||
|
private
|
||||||
|
FTitle: string;
|
||||||
|
FTitlePanel: TJvThumbTitle;
|
||||||
|
FTitleColor: TColor;
|
||||||
|
FTitleFont: TFont;
|
||||||
|
FStreamFileKind: TGRFKind;
|
||||||
|
FDFileCreated: string;
|
||||||
|
FDFileChanged: string;
|
||||||
|
FDFileAccessed: string;
|
||||||
|
FShowTitle: Boolean;
|
||||||
|
FDFileSize: Longint;
|
||||||
|
FStream: TStream;
|
||||||
|
FImageWidth: Longint;
|
||||||
|
FImageHeight: Longint;
|
||||||
|
FClientHeight: Word;
|
||||||
|
FClientWidth: Word;
|
||||||
|
FShadowObj: TShape;
|
||||||
|
FUpdated: Boolean;
|
||||||
|
FImageReady: Boolean;
|
||||||
|
FTitlePlacement: TTitlePos;
|
||||||
|
FPhotoName: TJvFileName;
|
||||||
|
FPhoto: TJvThumbImage;
|
||||||
|
FOnGetTitle: TTitleNotify;
|
||||||
|
FMousePressed: Boolean;
|
||||||
|
FDestroying: Boolean;
|
||||||
|
FAsButton: Boolean;
|
||||||
|
FMinimizeMemory: Boolean;
|
||||||
|
FAutoLoad: Boolean; // if True then load the image either from a thumb file or Create it from the FileName
|
||||||
|
FShadowColor: TColor;
|
||||||
|
FShowShadow: Boolean;
|
||||||
|
FHShadowOffset: Word;
|
||||||
|
FVShadowOffset: Word;
|
||||||
|
procedure WMPaint(var Msg: TLMPaint); message LM_PAINT;
|
||||||
|
(************** NOT CONVERTED ***
|
||||||
|
procedure PhotoOnProgress(Sender: TObject; Stage: TProgressStage;
|
||||||
|
PercentDone: Byte; RedrawNow: Boolean;
|
||||||
|
const R: TRect; const Msg: string);
|
||||||
|
*******************************)
|
||||||
|
procedure RefreshFont(Sender: TObject);
|
||||||
|
procedure SetFileName(const AFile: string);
|
||||||
|
function LoadFile(AFile: string): string;
|
||||||
|
function GetFileName: string;
|
||||||
|
procedure CalculateImageSize; virtual;
|
||||||
|
procedure SetClientWidth(AWidth: Word);
|
||||||
|
procedure SetDummyStr(AStr: string);
|
||||||
|
procedure SetMinimizeMemory(Min: Boolean);
|
||||||
|
procedure SetDummyCard(AInt: Longint);
|
||||||
|
procedure SetClientHeight(AHeight: Word);
|
||||||
|
procedure SetShowTitle(const AState: Boolean);
|
||||||
|
procedure SetTitlePlacement(const AState: TTitlePos);
|
||||||
|
procedure SetTitle(const Value: string);
|
||||||
|
procedure SetTitleColor(const Value: TColor);
|
||||||
|
procedure SetStream(const AStream: TStream);
|
||||||
|
procedure SetTitleFont(const Value: TFont);
|
||||||
|
procedure GetFileInfo(AName: string);
|
||||||
|
procedure SetShowShadow(AShow: Boolean);
|
||||||
|
// procedure SetShadowColor(aColor: TColor);
|
||||||
|
protected
|
||||||
|
procedure THSizeChanged(var Msg: TLMessage); message TH_IMAGESIZECHANGED;
|
||||||
|
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 BoundsChanged; override;
|
||||||
|
public
|
||||||
|
constructor Create(AOwner: TComponent); override;
|
||||||
|
destructor Destroy; override;
|
||||||
|
procedure SetTitlePanel(ATitle: string; AFont: TFont; AColor: TColor);
|
||||||
|
procedure Refresh;
|
||||||
|
property Stream: TStream read FStream write SetStream;
|
||||||
|
property Photo: TJvThumbImage read FPhoto write FPhoto;
|
||||||
|
published
|
||||||
|
property FileName: string read GetFileName write SetFileName;
|
||||||
|
property Title: string read FTitle write SetTitle;
|
||||||
|
property TitleColor: TColor read FTitleColor write SetTitleColor;
|
||||||
|
property TitleFont: TFont read FTitleFont write SetTitleFont;
|
||||||
|
property ImageReady: Boolean read FImageReady;
|
||||||
|
property OnGetTitle: TTitleNotify read FOnGetTitle write FOnGetTitle;
|
||||||
|
property ClientWidth: Word read FClientWidth write SetClientWidth;
|
||||||
|
property ClientHeight: Word read FClientHeight write SetClientHeight;
|
||||||
|
{ Do not store dummies }
|
||||||
|
property FileSize: Longint read FDFileSize write SetDummyCard stored False;
|
||||||
|
property FileAccessed: string read FDFileAccessed write SetDummyStr stored False;
|
||||||
|
property FileCreated: string read FDFileCreated write SetDummyStr stored False;
|
||||||
|
property FileChanged: string read FDFileChanged write SetDummyStr stored False;
|
||||||
|
property ImageWidth: Longint read FImageWidth default 0;
|
||||||
|
property ImageHeight: Longint read FImageHeight default 0;
|
||||||
|
property AsButton: Boolean read FAsButton write FAsButton;
|
||||||
|
property MinimizeMemory: Boolean read FMinimizeMemory write SetMinimizeMemory;
|
||||||
|
property StreamFileType: TGRFKind read FStreamFileKind write FStreamFileKind;
|
||||||
|
property ShowTitle: Boolean read FShowTitle write SetShowTitle;
|
||||||
|
property TitlePlacement: TTitlePos read FTitlePlacement write SetTitlePlacement;
|
||||||
|
property AutoLoad: Boolean read FAutoLoad write FAutoLoad;
|
||||||
|
property ShadowColor: TColor read FShadowColor write FShadowColor;
|
||||||
|
property ShowShadow: Boolean read FShowShadow write SetShowShadow;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
FileUtil,
|
||||||
|
JvThumbViews, JvResources;
|
||||||
|
|
||||||
|
constructor TJvThumbnail.Create(AOwner: TComponent);
|
||||||
|
begin
|
||||||
|
inherited Create(AOwner);
|
||||||
|
FPhotoName := TJvFileName.Create;
|
||||||
|
FHShadowOffset := 3;
|
||||||
|
FVShadowOffset := 3;
|
||||||
|
FShowShadow := False;
|
||||||
|
FShadowColor := clSilver;
|
||||||
|
FShadowObj := TShape.Create(Self);
|
||||||
|
FShadowObj.Visible := FShowShadow;
|
||||||
|
FShadowObj.Brush.Color := FShadowColor;
|
||||||
|
FShadowObj.Parent := Self;
|
||||||
|
FShadowObj.Pen.Style := psClear;
|
||||||
|
Photo := TJvThumbImage.Create(Self);
|
||||||
|
Photo.AutoSize := False;
|
||||||
|
Photo.Align := alNone;
|
||||||
|
Photo.Stretch := True;
|
||||||
|
(************** NOT CONVERTED)
|
||||||
|
Photo.OnProgress := PhotoOnProgress;
|
||||||
|
**************)
|
||||||
|
|
||||||
|
FShadowObj.Width := Photo.Width;
|
||||||
|
FShadowObj.Height := Photo.Height;
|
||||||
|
FShadowObj.Left := Photo.Left + FHShadowOffset;
|
||||||
|
FShadowObj.Top := Photo.Top + FVShadowOffset;
|
||||||
|
FTitlePanel := TJvThumbTitle.Create(Self);
|
||||||
|
FTitlePanel.Align := alTop;
|
||||||
|
FTitlePanel.Height := 15;
|
||||||
|
FTitlePanel.Alignment := taCenter;
|
||||||
|
FTitleColor := clBtnFace;
|
||||||
|
FTitlePanel.Color := FTitleColor;
|
||||||
|
FTitleFont := TFont.Create;
|
||||||
|
FTitleFont.OnChange := @RefreshFont;
|
||||||
|
FTitlePanel.BevelOuter := bvLowered;
|
||||||
|
FTitlePanel.ParentColor := True;
|
||||||
|
FTitlePanel.Color := Self.Color;
|
||||||
|
if FTitlePlacement = tpNone then
|
||||||
|
FTitlePanel.Visible := False;
|
||||||
|
FTitle := '';
|
||||||
|
FUpdated := False;
|
||||||
|
InsertControl(Photo);
|
||||||
|
InsertControl(FTitlePanel);
|
||||||
|
Align := alNone;
|
||||||
|
if AOwner is TJvThumbView then
|
||||||
|
begin
|
||||||
|
Width := TJvThumbView(Owner).MaxWidth;
|
||||||
|
Height := TJvThumbView(Owner).MaxHeight;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
Width := 120;
|
||||||
|
Height := 120;
|
||||||
|
end;
|
||||||
|
FMinimizeMemory := True;
|
||||||
|
AsButton := False;
|
||||||
|
Left := 10;
|
||||||
|
Top := 10;
|
||||||
|
Visible := True;
|
||||||
|
BevelOuter := bvRaised;
|
||||||
|
StreamFileType := grBMP;
|
||||||
|
FAutoLoad := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TJvThumbnail.Destroy;
|
||||||
|
begin
|
||||||
|
FDestroying := True;
|
||||||
|
(************* NOT CONVERTED ***
|
||||||
|
Photo.OnProgress := nil;
|
||||||
|
**********)
|
||||||
|
FPhotoName.Free;
|
||||||
|
FTitleFont.OnChange := nil;
|
||||||
|
FTitleFont.Free;
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.SetShowTitle(const AState: Boolean);
|
||||||
|
begin
|
||||||
|
if AState <> FShowTitle then
|
||||||
|
begin
|
||||||
|
FShowTitle := AState;
|
||||||
|
FTitlePanel.Visible := AState;
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.BoundsChanged;
|
||||||
|
begin
|
||||||
|
CalculateImageSize;
|
||||||
|
inherited BoundsChanged;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.SetStream(const AStream: TStream);
|
||||||
|
var
|
||||||
|
Bmp: Graphics.TBitmap;
|
||||||
|
Size: TPoint;
|
||||||
|
Img2: TJPEGImage;
|
||||||
|
begin
|
||||||
|
case StreamFileType of
|
||||||
|
grBMP:
|
||||||
|
Photo.Picture.Bitmap.LoadFromStream(AStream);
|
||||||
|
(********* NOT CONVERTED ***
|
||||||
|
grEMF, grWMF:
|
||||||
|
Photo.Picture.Metafile.LoadFromStream(AStream);
|
||||||
|
*************************)
|
||||||
|
grJPG:
|
||||||
|
begin
|
||||||
|
Img2 := TJPEGImage.Create;
|
||||||
|
Img2.LoadFromStream(AStream);
|
||||||
|
Photo.Picture.Assign(Img2);
|
||||||
|
FreeAndNil(Img2);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if FMinimizeMemory then
|
||||||
|
begin
|
||||||
|
Bmp := Graphics.TBitmap.Create;
|
||||||
|
if Parent is TJvThumbView then
|
||||||
|
Size := ProportionalSize(Point(Photo.Picture.Width, Photo.Picture.Height),
|
||||||
|
Point(TJvThumbView(Parent).MaxWidth, TJvThumbView(Parent).MaxHeight))
|
||||||
|
else
|
||||||
|
Size := ProportionalSize(Point(Photo.Picture.Width, Photo.Picture.Height),
|
||||||
|
Point(Width, Height));
|
||||||
|
Bmp.Width := Size.X;
|
||||||
|
Bmp.Height := Size.Y;
|
||||||
|
Bmp.handletype := bmDIB;
|
||||||
|
Bmp.pixelformat := pf24bit;
|
||||||
|
Bmp.Canvas.StretchDraw(rect(0, 0, Bmp.Width, Bmp.Height),
|
||||||
|
Photo.Picture.Graphic);
|
||||||
|
//Photo.Picture.Graphic.Free; // (rom) not needed
|
||||||
|
//Photo.Picture.Graphic := nil;
|
||||||
|
Photo.Picture.Assign(Bmp);
|
||||||
|
Bmp.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.SetClientWidth(AWidth: Word);
|
||||||
|
begin
|
||||||
|
FClientWidth := (Width - (BorderWidth * 2)) - 8;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.SetClientHeight(AHeight: Word);
|
||||||
|
begin
|
||||||
|
if Assigned(FTitlePanel) then
|
||||||
|
FClientHeight := Height - (FTitlePanel.Height + 8)
|
||||||
|
else
|
||||||
|
FClientHeight := Height - 8;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// dummy property functions to allow the object inspector to
|
||||||
|
// show the properties and their values
|
||||||
|
|
||||||
|
procedure TJvThumbnail.SetDummyStr(AStr: string);
|
||||||
|
begin
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.SetDummyCard(AInt: Longint);
|
||||||
|
begin
|
||||||
|
end;
|
||||||
|
|
||||||
|
(********** NOT CONVERTED ***
|
||||||
|
procedure TJvThumbnail.PhotoOnProgress(Sender: TObject; Stage: TProgressStage;
|
||||||
|
PercentDone: Byte; RedrawNow: Boolean; const R: TRect; const Msg: string);
|
||||||
|
begin
|
||||||
|
FImageReady := (Stage = psEnding);
|
||||||
|
end;
|
||||||
|
***************************)
|
||||||
|
|
||||||
|
procedure TJvThumbnail.MouseDown(Button: TMouseButton; Shift: TShiftState;
|
||||||
|
X, Y: Integer);
|
||||||
|
begin
|
||||||
|
if AsButton then
|
||||||
|
if Button = mbLeft then
|
||||||
|
begin
|
||||||
|
FMousePressed := True;
|
||||||
|
BevelOuter := bvLowered;
|
||||||
|
FTitlePanel.BevelOuter := bvRaised;
|
||||||
|
end;
|
||||||
|
inherited MouseDown(Button, Shift, X, Y);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.SetShowShadow(AShow: Boolean);
|
||||||
|
begin
|
||||||
|
FShadowObj.Visible := AShow;
|
||||||
|
FShowShadow := AShow;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{procedure TJvThumbnail.SetShadowColor(aColor: TColor);
|
||||||
|
begin
|
||||||
|
FShadowObj.Brush.Color := aColor;
|
||||||
|
FShadowColor := aColor;
|
||||||
|
end;}
|
||||||
|
|
||||||
|
procedure TJvThumbnail.MouseMove(Shift: TShiftState; X, Y: Integer);
|
||||||
|
begin
|
||||||
|
if AsButton then
|
||||||
|
if FMousePressed then
|
||||||
|
begin
|
||||||
|
if (X < 0) or (X > Width) or (Y < 0) or (Y > Height) then
|
||||||
|
begin
|
||||||
|
BevelOuter := bvRaised;
|
||||||
|
FTitlePanel.BevelOuter := bvLowered
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
BevelOuter := bvLowered;
|
||||||
|
FTitlePanel.BevelOuter := bvRaised;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
inherited MouseMove(Shift, X, Y);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.MouseUp(Button: TMouseButton; Shift: TShiftState;
|
||||||
|
X, Y: Integer);
|
||||||
|
begin
|
||||||
|
if AsButton then
|
||||||
|
if Button = mbLeft then
|
||||||
|
begin
|
||||||
|
FMousePressed := False;
|
||||||
|
BevelOuter := bvRaised;
|
||||||
|
FTitlePanel.BevelOuter := bvLowered;
|
||||||
|
end;
|
||||||
|
inherited MouseUp(Button, Shift, X, Y);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.GetFileInfo(AName: String);
|
||||||
|
var
|
||||||
|
FileInfo: TSearchRec;
|
||||||
|
begin
|
||||||
|
if FileExists(AName) then begin
|
||||||
|
FDFilesize := FileUtil.FileSize(AName);
|
||||||
|
// Other fields not supported
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
{ wp ----------- partly replaced by above
|
||||||
|
procedure TJvThumbnail.GetFileInfo(AName: string);
|
||||||
|
var
|
||||||
|
FileInfo: TWin32FindData;
|
||||||
|
H: THandle;
|
||||||
|
Dft: DWORD;
|
||||||
|
Lft: TFileTime;
|
||||||
|
begin
|
||||||
|
H := Windows.FindFirstFile(PChar(AName), FileInfo);
|
||||||
|
if H <> INVALID_HANDLE_VALUE then
|
||||||
|
begin
|
||||||
|
Windows.FindClose(H);
|
||||||
|
FileTimeToLocalFileTime(FileInfo.ftLastAccessTime, Lft);
|
||||||
|
FileTimeToDosDateTime(Lft, LongRec(Dft).Hi, LongRec(Dft).Lo);
|
||||||
|
try
|
||||||
|
FDFileAccessed := DateTimeToStr(FileDateToDateTime(Dft));
|
||||||
|
except
|
||||||
|
FDFileAccessed := RsUnknown;
|
||||||
|
end;
|
||||||
|
FileTimeToLocalFileTime(FileInfo.ftLastwriteTime, Lft);
|
||||||
|
FileTimeToDosDateTime(Lft, LongRec(Dft).Hi, LongRec(Dft).Lo);
|
||||||
|
try
|
||||||
|
FDFileChanged := DateTimeToStr(FileDateToDateTime(Dft));
|
||||||
|
except
|
||||||
|
FDFileChanged := RsUnknown;
|
||||||
|
end;
|
||||||
|
FileTimeToLocalFileTime(FileInfo.ftCreationTime, Lft);
|
||||||
|
FileTimeToDosDateTime(Lft, LongRec(Dft).Hi, LongRec(Dft).Lo);
|
||||||
|
try
|
||||||
|
FDFileCreated := DateTimeToStr(FileDateToDateTime(Dft));
|
||||||
|
except
|
||||||
|
FDFileCreated := RsUnknown;
|
||||||
|
end;
|
||||||
|
FDFileSize := (FileInfo.nFileSizeHigh * MAXDWORD) + FileInfo.nFileSizeLow;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
---------------- }
|
||||||
|
|
||||||
|
function TJvThumbnail.GetFileName: string;
|
||||||
|
begin
|
||||||
|
Result := FPhotoName.FileName;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvThumbnail.LoadFile(AFile: string): string;
|
||||||
|
var
|
||||||
|
FName: string;
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
FName := AFile;
|
||||||
|
Photo.LoadFromFile(AFile);
|
||||||
|
FImageWidth := Photo.Picture.Width;
|
||||||
|
FImageHeight := Photo.Picture.Height;
|
||||||
|
FUpdated := False;
|
||||||
|
CalculateImageSize;
|
||||||
|
Photo.Visible := True;
|
||||||
|
except
|
||||||
|
// (rom) ShowMessage removed
|
||||||
|
FName := '';
|
||||||
|
end;
|
||||||
|
if MinimizeMemory and (FPhotoName.FileName <> '') then
|
||||||
|
begin
|
||||||
|
if Owner is TJvThumbView then
|
||||||
|
Photo.ScaleDown(TJvThumbView(Owner).MaxWidth, TJvThumbView(Owner).MaxHeight)
|
||||||
|
else
|
||||||
|
Photo.ScaleDown(Width, Height);
|
||||||
|
end;
|
||||||
|
Result := FName;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.SetFileName(const AFile: string);
|
||||||
|
var
|
||||||
|
FName: string;
|
||||||
|
// Pos: Longint;
|
||||||
|
// tmp: TJvThumbImage;
|
||||||
|
// D1, D2: TdateTime;
|
||||||
|
begin
|
||||||
|
if AFile <> '' then
|
||||||
|
begin
|
||||||
|
GetFileInfo(AFile);
|
||||||
|
if FAutoLoad then
|
||||||
|
FName := LoadFile(AFile);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
FName := ''; {}
|
||||||
|
if FName = AFile then
|
||||||
|
if (Title = ExtractFileName(FPhotoName.FileName)) or (Title = '') then
|
||||||
|
Title := ExtractFileName(FName);
|
||||||
|
FPhotoName.FileName := FName;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.CalculateImageSize;
|
||||||
|
var
|
||||||
|
Percent: Byte;
|
||||||
|
TempX, TempY: Single;
|
||||||
|
begin
|
||||||
|
if (Photo = nil) or (Photo.Picture = nil) then
|
||||||
|
exit;
|
||||||
|
SetClientHeight(15);
|
||||||
|
SetClientWidth(15);
|
||||||
|
if (Photo.Picture.Width > ClientWidth) or (Photo.Picture.Height > ClientHeight) then
|
||||||
|
begin
|
||||||
|
TempX := ((ClientWidth) / Photo.Picture.Width) * 100;
|
||||||
|
TempY := ((ClientHeight) / Photo.Picture.Height) * 100;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
TempX := 100;
|
||||||
|
TempY := 100;
|
||||||
|
end;
|
||||||
|
if TempX <= TempY then
|
||||||
|
Percent := Trunc(TempX)
|
||||||
|
else
|
||||||
|
Percent := Trunc(TempY);
|
||||||
|
Photo.Width := Trunc((Photo.Picture.Width / 100) * Percent);
|
||||||
|
Photo.Height := Trunc((Photo.Picture.Height / 100) * Percent);
|
||||||
|
Photo.Left := Trunc(Width / 2 - Photo.Width / 2);
|
||||||
|
Photo.Top := (Height div 2) - (Photo.Height div 2);
|
||||||
|
case FTitlePlacement of
|
||||||
|
tpUp:
|
||||||
|
Photo.Top := Photo.Top + (FTitlePanel.Height div 2);
|
||||||
|
tpDown:
|
||||||
|
Photo.Top := Photo.Top - (FTitlePanel.Height div 2);
|
||||||
|
end;
|
||||||
|
FShadowObj.SetBounds(Photo.Left + FHShadowOffset, Photo.Top + FVShadowOffset,
|
||||||
|
Photo.Width, Photo.Height);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.THSizeChanged(var Msg: TLMessage);
|
||||||
|
begin
|
||||||
|
CalculateImageSize;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.SetTitle(const Value: string);
|
||||||
|
begin
|
||||||
|
if Value <> FTitle then
|
||||||
|
begin
|
||||||
|
FTitle := Value;
|
||||||
|
FTitlePanel.Caption := Value;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.WMPaint(var Msg: TLMPaint);
|
||||||
|
var
|
||||||
|
ThumbnailTitle: string;
|
||||||
|
begin
|
||||||
|
if not FUpdated then
|
||||||
|
begin
|
||||||
|
ThumbnailTitle := Title;
|
||||||
|
if Assigned(FOnGetTitle) then
|
||||||
|
begin
|
||||||
|
FOnGetTitle(Self, FileName, ThumbnailTitle);
|
||||||
|
SetTitle(ThumbnailTitle);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
if ThumbnailTitle = '' then
|
||||||
|
SetTitle(ExtractFileName(FileName))
|
||||||
|
else
|
||||||
|
SetTitle(ThumbnailTitle);
|
||||||
|
end;
|
||||||
|
FUpdated := True;
|
||||||
|
end;
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.SetTitleColor(const Value: TColor);
|
||||||
|
begin
|
||||||
|
if Value <> FTitleColor then
|
||||||
|
begin
|
||||||
|
FTitleColor := Value;
|
||||||
|
FTitlePanel.Color := Value;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.SetTitleFont(const Value: TFont);
|
||||||
|
begin
|
||||||
|
FTitleFont.Assign(Value);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.RefreshFont(Sender: TObject);
|
||||||
|
begin
|
||||||
|
FTitlePanel.Font.Assign(FTitleFont);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.SetTitlePanel(ATitle: string; AFont: TFont;
|
||||||
|
AColor: TColor);
|
||||||
|
begin
|
||||||
|
SetTitleFont(AFont);
|
||||||
|
SetTitleColor(AColor);
|
||||||
|
SetTitle(ATitle);
|
||||||
|
FUpdated := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.SetTitlePlacement(const AState: TTitlePos);
|
||||||
|
begin
|
||||||
|
if AState <> FTitlePlacement then
|
||||||
|
case AState of
|
||||||
|
tpUp:
|
||||||
|
FTitlePanel.Align := alTop;
|
||||||
|
tpDown:
|
||||||
|
FTitlePanel.Align := alBottom;
|
||||||
|
tpNone:
|
||||||
|
FTitlePanel.Visible := False;
|
||||||
|
end;
|
||||||
|
if FTitlePlacement = tpNone then
|
||||||
|
FTitlePanel.Visible := True;
|
||||||
|
FTitlePlacement := AState;
|
||||||
|
CalculateImageSize;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.SetMinimizeMemory(Min: Boolean);
|
||||||
|
begin
|
||||||
|
if Assigned(Photo.Picture.Graphic) then
|
||||||
|
begin
|
||||||
|
if FMinimizeMemory <> Min then
|
||||||
|
begin
|
||||||
|
if Min then
|
||||||
|
begin
|
||||||
|
if Owner is TJvThumbView then
|
||||||
|
Photo.ScaleDown(TJvThumbView(Owner).MaxWidth, TJvThumbView(Owner).MaxHeight)
|
||||||
|
else
|
||||||
|
Photo.ScaleDown(Width, Height);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if FMinimizeMemory then
|
||||||
|
Photo.Picture.LoadFromFile(FileName);
|
||||||
|
FMinimizeMemory := Min;
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
FMinimizeMemory := Min;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvThumbnail.Refresh;
|
||||||
|
begin
|
||||||
|
CalculateImageSize;
|
||||||
|
inherited Refresh;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
end.
|
Reference in New Issue
Block a user