tvplanit: Trying to get high-dpi correct (many changes)

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5077 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2016-08-06 22:18:53 +00:00
parent 82f445a910
commit d961a31803
28 changed files with 2128 additions and 1773 deletions

View File

@ -9,9 +9,6 @@
<Title Value="demo"/> <Title Value="demo"/>
<ResourceType Value="res"/> <ResourceType Value="res"/>
<UseXPManifest Value="True"/> <UseXPManifest Value="True"/>
<XPManifest>
<DpiAware Value="True"/>
</XPManifest>
</General> </General>
<i18n> <i18n>
<EnableI18N Value="True"/> <EnableI18N Value="True"/>

View File

@ -2,34 +2,34 @@ object MainForm: TMainForm
Left = 301 Left = 301
Height = 600 Height = 600
Top = 177 Top = 177
Width = 900 Width = 978
Caption = 'Turbo Power VisualPlanIt Demo' Caption = 'Turbo Power VisualPlanIt Demo'
ClientHeight = 580 ClientHeight = 580
ClientWidth = 900 ClientWidth = 978
Menu = MainMenu1 Menu = MainMenu1
OnCloseQuery = FormCloseQuery OnCloseQuery = FormCloseQuery
OnCreate = FormCreate OnCreate = FormCreate
LCLVersion = '1.6.0.4' LCLVersion = '1.7'
object Panel1: TPanel object Panel1: TPanel
Left = 120 Left = 125
Height = 580 Height = 580
Top = 0 Top = 0
Width = 780 Width = 853
Align = alClient Align = alClient
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 580 ClientHeight = 580
ClientWidth = 780 ClientWidth = 853
TabOrder = 0 TabOrder = 0
object HeaderPanel: TPanel object HeaderPanel: TPanel
Left = 2 Left = 2
Height = 48 Height = 48
Top = 0 Top = 0
Width = 778 Width = 851
Align = alTop Align = alTop
BorderSpacing.Left = 2 BorderSpacing.Left = 2
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 48 ClientHeight = 48
ClientWidth = 778 ClientWidth = 851
Color = clActiveCaption Color = clActiveCaption
ParentColor = False ParentColor = False
TabOrder = 0 TabOrder = 0
@ -56,8 +56,8 @@ object MainForm: TMainForm
Left = 0 Left = 0
Height = 532 Height = 532
Top = 48 Top = 48
Width = 780 Width = 853
PageIndex = 0 PageIndex = 1
Align = alClient Align = alClient
TabOrder = 1 TabOrder = 1
TabStop = True TabStop = True
@ -270,7 +270,7 @@ object MainForm: TMainForm
Left = 338 Left = 338
Height = 532 Height = 532
Top = 0 Top = 0
Width = 442 Width = 515
DataStore = VpBufDSDataStore1 DataStore = VpBufDSDataStore1
ControlLink = VpControlLink1 ControlLink = VpControlLink1
Color = clWindow Color = clWindow
@ -302,18 +302,18 @@ object MainForm: TMainForm
object Tasks: TPage object Tasks: TPage
object Panel6: TPanel object Panel6: TPanel
Left = 0 Left = 0
Height = 42 Height = 36
Top = 0 Top = 0
Width = 626 Width = 853
Align = alTop Align = alTop
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 42 ClientHeight = 36
ClientWidth = 626 ClientWidth = 853
TabOrder = 0 TabOrder = 0
object RbAllTasks: TRadioButton object RbAllTasks: TRadioButton
Left = 8 Left = 8
Height = 19 Height = 19
Top = 13 Top = 8
Width = 63 Width = 63
Caption = 'All tasks' Caption = 'All tasks'
Checked = True Checked = True
@ -322,10 +322,13 @@ object MainForm: TMainForm
TabStop = True TabStop = True
end end
object RbHideCompletedTasks: TRadioButton object RbHideCompletedTasks: TRadioButton
Left = 120 AnchorSideLeft.Control = RbAllTasks
AnchorSideLeft.Side = asrBottom
Left = 101
Height = 19 Height = 19
Top = 13 Top = 8
Width = 134 Width = 134
BorderSpacing.Left = 30
Caption = 'Hide completed tasks' Caption = 'Hide completed tasks'
OnChange = RbHideCompletedTasksChange OnChange = RbHideCompletedTasksChange
TabOrder = 1 TabOrder = 1
@ -333,9 +336,9 @@ object MainForm: TMainForm
end end
object VpTaskList1: TVpTaskList object VpTaskList1: TVpTaskList
Left = 0 Left = 0
Height = 393 Height = 496
Top = 42 Top = 36
Width = 626 Width = 853
DataStore = VpBufDSDataStore1 DataStore = VpBufDSDataStore1
ControlLink = VpControlLink1 ControlLink = VpControlLink1
Color = clWindow Color = clWindow
@ -367,18 +370,22 @@ object MainForm: TMainForm
object Contacts: TPage object Contacts: TPage
object VpContactButtonBar1: TVpContactButtonBar object VpContactButtonBar1: TVpContactButtonBar
Left = 0 Left = 0
Height = 435 Height = 532
Top = 0 Top = 0
Width = 40 Width = 40
DrawingStyle = dsFlat BorderWidth = 3
RadioStyle = False ButtonHeight = 20
ButtonWidth = 36
ContactGrid = VpContactGrid1
DrawingStyle = dsNoBorder
RadioStyle = True
Align = alLeft Align = alLeft
end end
object VpContactGrid1: TVpContactGrid object VpContactGrid1: TVpContactGrid
Left = 40 Left = 40
Height = 435 Height = 532
Top = 0 Top = 0
Width = 586 Width = 813
DataStore = VpBufDSDataStore1 DataStore = VpBufDSDataStore1
ControlLink = VpControlLink1 ControlLink = VpControlLink1
Color = clWindow Color = clWindow
@ -426,7 +433,7 @@ object MainForm: TMainForm
Left = 16 Left = 16
Height = 23 Height = 23
Top = 24 Top = 24
Width = 235 Width = 323
DataStore = VpBufDSDataStore1 DataStore = VpBufDSDataStore1
Style = csDropDownList Style = csDropDownList
end end
@ -655,6 +662,12 @@ object MainForm: TMainForm
Align = alLeft Align = alLeft
ParentColor = False ParentColor = False
end end
object Splitter1: TSplitter
Left = 120
Height = 580
Top = 0
Width = 5
end
object VpControlLink1: TVpControlLink object VpControlLink1: TVpControlLink
DataStore = VpBufDSDataStore1 DataStore = VpBufDSDataStore1
LocalizationFile = '../../source/vplocalize.xml' LocalizationFile = '../../source/vplocalize.xml'

View File

@ -46,6 +46,7 @@ type
Notebook: TNotebook; Notebook: TNotebook;
Events: TPage; Events: TPage;
OpenDialog: TOpenDialog; OpenDialog: TOpenDialog;
Splitter1: TSplitter;
Tasks: TPage; Tasks: TPage;
Contacts: TPage; Contacts: TPage;
Resources: TPage; Resources: TPage;
@ -365,6 +366,34 @@ begin
PopulateLanguages; PopulateLanguages;
ReadIni; ReadIni;
with VpDayview1 do begin
AllDayEventAttributes.Font.Size := ScaleY(AllDayEventAttributes.Font.Size, DesignTimeDPI);
Font.Size := ScaleY(Font.Size, DesignTimeDPI);
HeadAttributes.Font.Size := ScaleY(HeadAttributes.Font.Size, DesignTimeDPI);
RowHeadAttributes.HourFont.Size := ScaleY(RowHeadAttributes.HourFont.Size, DesignTimeDPI);
RowHeadAttributes.MinuteFont.Size := ScaleY(RowHeadAttributes.MinuteFont.Size, DesignTimeDPI);
end;
with VpWeekView1 do begin
AllDayEventAttributes.Font.Size := ScaleY(AllDayEventAttributes.Font.Size, DesignTimeDPI);
DayHeadAttributes.Font.Size := ScaleY(DayHeadAttributes.Font.Size, DesignTimeDPI);
HeadAttributes.Font.Size := ScaleY(HeadAttributes.Font.Size, DesignTimeDPI);
end;
with VpMonthView1 do begin
DayHeadAttributes.Font.Size := ScaleY(DayHeadAttributes.Font.Size, DesignTimeDPI);
DayNumberFont.Size := ScaleY(DayNumberFont.Size, DesignTimeDPI);
EventFont.Size := ScaleY(EventFont.Size, DesignTimeDPI);
Font.Size := ScaleY(Font.Size, DesignTimeDPI);
HeadAttributes.Font.Size := ScaleY(HeadAttributes.Font.Size, DesignTimeDPI);
TodayAttributes.Font.Size := ScaleY(TodayAttributes.Font.Size, DesignTimeDPI);
end;
with VpTaskList1 do begin
Font.Size := ScaleY(Font.Size, DesignTimeDPI);
TaskHeadAttributes.Font.Size := ScaleY(TaskHeadAttributes.Font.Size, DesignTimeDPI);
end;
with VpContactGrid1 do begin
Font.Size := ScaleY(Font.Size, DesignTimeDPI);
end;
ds := VpControlLink1.Datastore; ds := VpControlLink1.Datastore;
if ds.Resources.Count > 0 then if ds.Resources.Count > 0 then
begin begin
@ -544,7 +573,27 @@ end;
procedure TMainForm.PositionControls; procedure TMainForm.PositionControls;
var var
w: Integer; w: Integer;
cnv: TControlCanvas;
begin begin
// DayView page
DaySelectorPanel.Height := 2*CbGranularity.Top + CbGranularity.Height;
// Tasks page
Panel6.ClientHeight := 2*RbAllTasks.Top + ScaleY(RbAllTasks.Height, DesignTimeDPI);
// Resources page
w := MaxValue([
GetButtonWidth(BtnNewRes),
GetButtonWidth(BtnEditRes),
GetButtonWidth(BtnDeleteRes)
]);
BtnNewRes.Width := w;
BtnEditRes.Width := w;
BtnDeleteRes.Width := w;
BtnEditRes.Left := RightOf(BtnNewRes) + 8;
BtnDeleteRes.Left := RightOf(BtnEditRes) + 8;
VpResourceCombo1.Width := RightOf(BtnDeleteRes) - BtnNewRes.Left;
// Settings page // Settings page
w := MaxValue([ w := MaxValue([
GetLabelWidth(LblLanguage), GetLabelWidth(LblLanguage),

View File

@ -239,18 +239,6 @@ msgstr "Datei"
msgid "Help" msgid "Help"
msgstr "Hilfe" msgstr "Hilfe"
# No need to translate
#: tmainform.menuitem3.caption
msgctxt "tmainform.menuitem3.caption"
msgid "-"
msgstr ""
# No need to translate
#: tmainform.menuitem4.caption
msgctxt "tmainform.menuitem4.caption"
msgid "-"
msgstr ""
#: tmainform.mnuabout.caption #: tmainform.mnuabout.caption
msgid "About Visual PlanIt" msgid "About Visual PlanIt"
msgstr "Über Visual PlanIt" msgstr "Über Visual PlanIt"

View File

@ -233,16 +233,6 @@ msgstr "Bestand"
msgid "Help" msgid "Help"
msgstr "Help" msgstr "Help"
#: tmainform.menuitem3.caption
msgctxt "tmainform.menuitem3.caption"
msgid "-"
msgstr ""
#: tmainform.menuitem4.caption
msgctxt "tmainform.menuitem4.caption"
msgid "-"
msgstr ""
#: tmainform.mnuabout.caption #: tmainform.mnuabout.caption
msgid "About Visual PlanIt" msgid "About Visual PlanIt"
msgstr "Over Visual PlanIt" msgstr "Over Visual PlanIt"

View File

@ -228,16 +228,6 @@ msgstr ""
msgid "Help" msgid "Help"
msgstr "" msgstr ""
#: tmainform.menuitem3.caption
msgctxt "tmainform.menuitem3.caption"
msgid "-"
msgstr ""
#: tmainform.menuitem4.caption
msgctxt "tmainform.menuitem4.caption"
msgid "-"
msgstr ""
#: tmainform.mnuabout.caption #: tmainform.mnuabout.caption
msgid "About Visual PlanIt" msgid "About Visual PlanIt"
msgstr "" msgstr ""

View File

@ -242,16 +242,6 @@ msgstr "Файл"
msgid "Help" msgid "Help"
msgstr "Справка" msgstr "Справка"
#: tmainform.menuitem3.caption
msgctxt "tmainform.menuitem3.caption"
msgid "-"
msgstr ""
#: tmainform.menuitem4.caption
msgctxt "tmainform.menuitem4.caption"
msgid "-"
msgstr ""
#: tmainform.mnuabout.caption #: tmainform.mnuabout.caption
msgid "About Visual PlanIt" msgid "About Visual PlanIt"
msgstr "О Visual PlanIt" msgstr "О Visual PlanIt"

View File

@ -1,55 +1,93 @@
object frmAbout: TfrmAbout object frmAbout: TfrmAbout
Left = 282 Left = 282
Height = 325 Height = 488
Top = 205 Top = 205
Width = 605 Width = 582
HorzScrollBar.Page = 470 HorzScrollBar.Page = 470
VertScrollBar.Page = 311 VertScrollBar.Page = 311
AutoSize = True
BorderStyle = bsDialog BorderStyle = bsDialog
Caption = 'About Visual PlanIt' Caption = 'About Visual PlanIt'
ClientHeight = 325 ClientHeight = 488
ClientWidth = 605 ClientWidth = 582
OnActivate = FormActivate OnActivate = FormActivate
Position = poScreenCenter Position = poScreenCenter
LCLVersion = '1.7' LCLVersion = '1.7'
object Bevel2: TBevel object ButtonPanel: TPanel
Left = 6 Left = 0
Height = 9 Height = 50
Top = 272 Top = 265
Width = 593 Width = 582
Anchors = [akTop, akLeft, akRight] Align = alTop
BorderSpacing.Top = 8
BevelOuter = bvNone
ClientHeight = 50
ClientWidth = 582
TabOrder = 0
object Bevel3: TBevel
Left = 4
Height = 8
Top = 0
Width = 574
Align = alTop
BorderSpacing.Left = 4
BorderSpacing.Right = 4
Shape = bsTopLine Shape = bsTopLine
end end
object CopyrightLabel: TLabel object OKButton: TButton
Left = 7 AnchorSideTop.Control = ButtonPanel
Height = 15 AnchorSideTop.Side = asrCenter
Top = 280 Left = 496
Width = 277 Height = 25
Caption = '(C) Copyright 2001, TurboPower Software Company.' Top = 13
ParentColor = False Width = 75
Anchors = [akTop, akRight]
Cancel = True
Caption = 'OK'
Default = True
ModalResult = 1
TabOrder = 0
end end
object RightsReservedLabel: TLabel object CopyrightLabel: TLabel
Left = 7 AnchorSideTop.Control = ButtonPanel
Height = 15 AnchorSideTop.Side = asrCenter
Top = 296 Left = 8
Width = 97 Height = 30
Caption = 'All rights reserved.' Top = 10
Width = 483
Anchors = [akTop, akLeft, akRight]
Caption = '(C) Copyright 2001, TurboPower Software Company.'#13#10'All rights reserved.'
ParentColor = False ParentColor = False
WordWrap = True
end
end end
object Panel1: TPanel object Panel1: TPanel
Left = 6 Left = 0
Height = 251 Height = 257
Top = 6 Top = 0
Width = 582
Align = alTop
AutoSize = True
BevelOuter = bvNone
ClientHeight = 257
ClientWidth = 582
TabOrder = 1
object ImagePanel: TPanel
Left = 4
Height = 249
Top = 4
Width = 139 Width = 139
BevelOuter = bvLowered Align = alLeft
ClientHeight = 251 BorderSpacing.Around = 4
BevelOuter = bvNone
ClientHeight = 249
ClientWidth = 139 ClientWidth = 139
TabOrder = 0 TabOrder = 0
object Image1: TImage object Image1: TImage
Left = 1 Left = 0
Height = 249 Height = 249
Top = 1 Top = 0
Width = 137 Width = 139
Align = alClient Align = alClient
Picture.Data = { Picture.Data = {
07544269746D6170628C0000424D628C00000000000036040000280000008900 07544269746D6170628C0000424D628C00000000000036040000280000008900
@ -1179,32 +1217,23 @@ object frmAbout: TfrmAbout
} }
end end
end end
object OKButton: TButton object TextPanel: TPanel
Left = 519 Left = 151
Height = 25 Height = 249
Top = 284
Width = 75
Anchors = [akTop, akRight]
Cancel = True
Caption = 'OK'
ModalResult = 1
TabOrder = 1
end
object Panel2: TPanel
Left = 153
Height = 248
Top = 8 Top = 8
Width = 441 Width = 431
Anchors = [akTop, akLeft, akRight] Align = alClient
BorderSpacing.Left = 8
BorderSpacing.Top = 8
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 248 ClientHeight = 249
ClientWidth = 441 ClientWidth = 431
TabOrder = 2 TabOrder = 1
object ProgramName: TLabel object ProgramName: TLabel
Left = 0 Left = 0
Height = 16 Height = 16
Top = 0 Top = 0
Width = 441 Width = 431
Align = alTop Align = alTop
Caption = 'Visual PlanIt' Caption = 'Visual PlanIt'
Font.Height = -13 Font.Height = -13
@ -1213,20 +1242,13 @@ object frmAbout: TfrmAbout
ParentColor = False ParentColor = False
ParentFont = False ParentFont = False
end end
object Bevel1: TBevel
Left = 0
Height = 8
Top = 16
Width = 441
Align = alTop
Shape = bsSpacer
end
object Label1: TLabel object Label1: TLabel
Left = 0 Left = 0
Height = 30 Height = 30
Top = 24 Top = 24
Width = 441 Width = 431
Align = alTop Align = alTop
BorderSpacing.Top = 8
Caption = 'Visual PlanIt was released under the Mozilla 1.1 license in January, 2003. The project is hosted on SourceForge at' Caption = 'Visual PlanIt was released under the Mozilla 1.1 license in January, 2003. The project is hosted on SourceForge at'
ParentColor = False ParentColor = False
WordWrap = True WordWrap = True
@ -1236,7 +1258,7 @@ object frmAbout: TfrmAbout
Left = 0 Left = 0
Height = 15 Height = 15
Top = 54 Top = 54
Width = 441 Width = 431
Align = alTop Align = alTop
Caption = 'http://sourceforge.net/projects/tpvplanit/' Caption = 'http://sourceforge.net/projects/tpvplanit/'
Font.Color = clBlue Font.Color = clBlue
@ -1246,20 +1268,13 @@ object frmAbout: TfrmAbout
OnMouseEnter = lblLinkMouseEnter OnMouseEnter = lblLinkMouseEnter
OnMouseLeave = lblLinkMouseLeave OnMouseLeave = lblLinkMouseLeave
end end
object Bevel4: TBevel
Left = 0
Height = 8
Top = 69
Width = 441
Align = alTop
Shape = bsSpacer
end
object Label4: TLabel object Label4: TLabel
Left = 0 Left = 0
Height = 15 Height = 15
Top = 77 Top = 77
Width = 441 Width = 431
Align = alTop Align = alTop
BorderSpacing.Top = 8
Caption = 'The Lazarus port is hosted at' Caption = 'The Lazarus port is hosted at'
ParentColor = False ParentColor = False
WordWrap = True WordWrap = True
@ -1269,8 +1284,9 @@ object frmAbout: TfrmAbout
Left = 0 Left = 0
Height = 15 Height = 15
Top = 92 Top = 92
Width = 441 Width = 414
Align = alTop Align = alTop
BorderSpacing.Right = 17
Caption = 'http://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/components/tvplanit/' Caption = 'http://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/components/tvplanit/'
Font.Color = clBlue Font.Color = clBlue
ParentColor = False ParentColor = False
@ -1279,23 +1295,25 @@ object frmAbout: TfrmAbout
OnMouseEnter = lblLinkMouseEnter OnMouseEnter = lblLinkMouseEnter
OnMouseLeave = lblLinkMouseLeave OnMouseLeave = lblLinkMouseLeave
end end
object Panel3: TPanel object SupportPanel: TPanel
Left = 0 Left = 0
Height = 133 Height = 133
Top = 115 Top = 115
Width = 441 Width = 421
Align = alBottom Align = alTop
BorderSpacing.Top = 4 AutoSize = True
BorderSpacing.Top = 8
BorderSpacing.Right = 10
BevelInner = bvRaised BevelInner = bvRaised
BevelOuter = bvLowered BevelOuter = bvLowered
ClientHeight = 133 ClientHeight = 133
ClientWidth = 441 ClientWidth = 421
TabOrder = 0 TabOrder = 0
object GeneralNewsgroupsLabel: TLabel object GeneralNewsgroupsLabel: TLabel
Left = 6 Left = 6
Height = 15 Height = 15
Top = 6 Top = 6
Width = 429 Width = 409
Align = alTop Align = alTop
BorderSpacing.Left = 4 BorderSpacing.Left = 4
BorderSpacing.Top = 4 BorderSpacing.Top = 4
@ -1308,7 +1326,7 @@ object frmAbout: TfrmAbout
Left = 18 Left = 18
Height = 15 Height = 15
Top = 25 Top = 25
Width = 417 Width = 397
Align = alTop Align = alTop
BorderSpacing.Left = 16 BorderSpacing.Left = 16
BorderSpacing.Top = 4 BorderSpacing.Top = 4
@ -1321,7 +1339,7 @@ object frmAbout: TfrmAbout
Left = 18 Left = 18
Height = 15 Height = 15
Top = 40 Top = 40
Width = 417 Width = 397
Align = alTop Align = alTop
BorderSpacing.Left = 16 BorderSpacing.Left = 16
BorderSpacing.Right = 4 BorderSpacing.Right = 4
@ -1337,7 +1355,7 @@ object frmAbout: TfrmAbout
Left = 18 Left = 18
Height = 15 Height = 15
Top = 59 Top = 59
Width = 417 Width = 397
Align = alTop Align = alTop
BorderSpacing.Left = 16 BorderSpacing.Left = 16
BorderSpacing.Top = 4 BorderSpacing.Top = 4
@ -1350,7 +1368,7 @@ object frmAbout: TfrmAbout
Left = 18 Left = 18
Height = 15 Height = 15
Top = 74 Top = 74
Width = 417 Width = 397
Align = alTop Align = alTop
BorderSpacing.Left = 16 BorderSpacing.Left = 16
BorderSpacing.Right = 4 BorderSpacing.Right = 4
@ -1366,7 +1384,7 @@ object frmAbout: TfrmAbout
Left = 18 Left = 18
Height = 15 Height = 15
Top = 93 Top = 93
Width = 417 Width = 397
Align = alTop Align = alTop
BorderSpacing.Left = 16 BorderSpacing.Left = 16
BorderSpacing.Top = 4 BorderSpacing.Top = 4
@ -1379,10 +1397,10 @@ object frmAbout: TfrmAbout
Left = 18 Left = 18
Height = 15 Height = 15
Top = 108 Top = 108
Width = 421 Width = 401
Align = alTop Align = alTop
BorderSpacing.Left = 16 BorderSpacing.Left = 16
BorderSpacing.Bottom = 4 BorderSpacing.Bottom = 8
Caption = 'http://forum.lazarus.freepascal.org/' Caption = 'http://forum.lazarus.freepascal.org/'
Font.Color = clBlue Font.Color = clBlue
ParentColor = False ParentColor = False
@ -1393,4 +1411,5 @@ object frmAbout: TfrmAbout
end end
end end
end end
end
end end

View File

@ -54,23 +54,22 @@ type
{ TfrmAbout } { TfrmAbout }
TfrmAbout = class(TForm) TfrmAbout = class(TForm)
Bevel1: TBevel; Bevel3: TBevel;
Bevel2: TBevel;
Bevel4: TBevel;
Label4: TLabel; Label4: TLabel;
Label5: TLabel; Label5: TLabel;
lblLazForumLink: TLabel; lblLazForumLink: TLabel;
lblLazPortLink: TLabel; lblLazPortLink: TLabel;
Panel1: TPanel; ImagePanel: TPanel;
Image1: TImage; Image1: TImage;
Panel2: TPanel; Panel1: TPanel;
Panel3: TPanel; TextPanel: TPanel;
SupportPanel: TPanel;
ButtonPanel: TPanel;
ProgramName: TLabel; ProgramName: TLabel;
GeneralNewsgroupsLabel: TLabel; GeneralNewsgroupsLabel: TLabel;
lblTurboLink: TLabel; lblTurboLink: TLabel;
lblHelp: TLabel; lblHelp: TLabel;
CopyrightLabel: TLabel; CopyrightLabel: TLabel;
RightsReservedLabel: TLabel;
OKButton: TButton; OKButton: TButton;
lblGeneralDiscussion: TLabel; lblGeneralDiscussion: TLabel;
Label2: TLabel; Label2: TLabel;
@ -82,6 +81,7 @@ type
procedure lblLinkClick(Sender: TObject); procedure lblLinkClick(Sender: TObject);
private private
{ Private declarations } { Private declarations }
procedure PositionControls;
public public
{ Public declarations } { Public declarations }
IsServer : boolean; IsServer : boolean;
@ -107,6 +107,7 @@ uses
{$IFNDEF LCL} {$IFNDEF LCL}
ShellAPI, ShellAPI,
{$ENDIF} {$ENDIF}
Math,
VpConst, VpMisc, VpSR; VpConst, VpMisc, VpSR;
const const
@ -151,7 +152,8 @@ var
begin begin
ProgramName.Caption := VpProductName + ' ' + VpVersionStr; ProgramName.Caption := VpProductName + ' ' + VpVersionStr;
DecodeDate(Now, Year, junk, junk); DecodeDate(Now, Year, junk, junk);
CopyrightLabel.Caption := Format('%s Copyright 2000 - %d, TurboPower Software Company.', CopyrightLabel.Caption := Format('%s Copyright 2000 - %d, TurboPower Software Company and Lazarus team.' +
LineEnding + 'All rights reserved.',
[COPYRIGHT, Year]); [COPYRIGHT, Year]);
lblTurboLink.Cursor := crHandPoint; lblTurboLink.Cursor := crHandPoint;
@ -159,6 +161,8 @@ begin
lblGeneralDiscussion.Cursor := crHandPoint; lblGeneralDiscussion.Cursor := crHandPoint;
lblLazPortLink.Cursor := crHandPoint; lblLazPortLink.Cursor := crHandPoint;
lblLazForumLink.Cursor := crHandpoint; lblLazForumLink.Cursor := crHandpoint;
PositionControls;
end; end;
procedure TfrmAbout.lblLinkMouseEnter(Sender: TObject); procedure TfrmAbout.lblLinkMouseEnter(Sender: TObject);
@ -201,5 +205,25 @@ begin
ShowMessage(RSBrowserError); ShowMessage(RSBrowserError);
end; end;
procedure TfrmAbout.PositionControls;
var
VDIST: Integer = 8;
begin
VDIST := ScaleY(VDIST, DesignTimeDPI);
ProgramName.Font.Size := ScaleY(Programname.Font.Size, DesignTimeDPI);
ClientWidth := GetLabelWidth(LblLazPortLink) + Panel1.Width + 48; //ScaleX(ClientWidth, DesignTimeDPI);
// ClientHeight := ScaleY(ClientHeight, DesignTimeDPI);
//SupportPanel.ClientHeight := BottomOf(lblLazForumLink) + VDIST;
ButtonPanel.ClientHeight := CopyRightLabel.Height + 2 * VDIST;
OKButton.Height := ScaleY(OKButton.Height, DesignTimeDPI);
// OKButton.Top := (ButtonPanel.Height - OKButton.Height) div 2;
// CopyrightLabel.Top := (ButtonPanel.Height - CopyrightLabel.Height) div 2;
//ClientHeight := Max(BottomOf(ImagePanel), BottomOf(SupportPanel)) + VDIST + ButtonPanel.Height;
end;
end. end.

View File

@ -215,6 +215,9 @@ var
Offset: Integer; Offset: Integer;
MaxButtons: Integer; MaxButtons: Integer;
MinButtons: Integer; MinButtons: Integer;
btnHeight: Integer;
btnWidth: Integer;
brdrWidth: Integer;
begin begin
I := 0; I := 0;
@ -226,31 +229,31 @@ begin
MinButtons := VP_MIN_BUTTONS; MinButtons := VP_MIN_BUTTONS;
end; end;
btnHeight := ScaleY(FButtonHeight, DesignTimeDPI);
btnWidth := ScaleX(FButtonWidth, DesignTimeDPI);
brdrWidth := ScaleX(FBorderWidth, DesignTimeDPI);
if FBarOrientation = baVertical then begin if FBarOrientation = baVertical then begin
TotalXY := FBorderWidth; TotalXY := FBorderWidth;
while ((TotalXY + FButtonHeight + FBorderWidth < ClientHeight) while ((TotalXY + btnHeight + brdrWidth < ClientHeight) and (I < MaxButtons))
and (I < MaxButtons))
or (I < MinButtons) or (I < MinButtons)
do begin do begin
FButtonsArray[I].Rect := Rect(FBorderWidth, TotalXY, FButtonsArray[I].Rect := Rect(brdrWidth, TotalXY, ClientWidth - brdrWidth, TotalXY + btnHeight);
ClientWidth - FBorderWidth, TotalXY + FButtonHeight);
Inc(I); Inc(I);
TotalXY := TotalXY + FButtonHeight + FBorderWidth; TotalXY := TotalXY + btnHeight + brdrWidth;
end; end;
FButtonCount := I; FButtonCount := I;
end else begin end else begin
TotalXY := FBorderWidth; TotalXY := brdrWidth;
while ((TotalXY + FButtonWidth + FBorderWidth < ClientWidth) while ((TotalXY + btnWidth + brdrWidth < ClientWidth) and (I < MaxButtons))
and (I < MaxButtons))
or (I < MinButtons) or (I < MinButtons)
do begin do begin
FButtonsArray[i].Rect := Rect(TotalXY, FBorderWidth, FButtonsArray[i].Rect := Rect(TotalXY, brdrWidth, TotalXY + btnWidth, ClientHeight - brdrWidth);
TotalXY + FButtonWidth, ClientHeight - FBorderWidth);
Inc(I); Inc(I);
TotalXY := TotalXY + FButtonWidth + FBorderWidth; TotalXY := TotalXY + btnWidth + brdrWidth;
end; end;
FButtonCount := I; FButtonCount := I;
@ -296,37 +299,44 @@ begin
ButtonRect := FButtonsArray[Index].Rect; ButtonRect := FButtonsArray[Index].Rect;
Brush.Color := FButtonColor; Brush.Color := FButtonColor;
FillRect(ButtonRect); FillRect(ButtonRect);
if (FDrawingStyle = dsFlat) then begin case FDrawingStyle of
dsFlat:
begin
if Pressed then if Pressed then
Pen.Color := clBtnShadow Pen.Color := clBtnShadow else
else
Pen.Color := clBtnHighlight; Pen.Color := clBtnHighlight;
PolyLine([
PolyLine([Point(ButtonRect.Right - 1, ButtonRect.Top), Point(ButtonRect.Right - 1, ButtonRect.Top),
Point(ButtonRect.Left, ButtonRect.Top), Point(ButtonRect.Left, ButtonRect.Top),
Point(ButtonRect.Left, ButtonRect.Bottom - 1)]); Point(ButtonRect.Left, ButtonRect.Bottom - 1)
]);
if Pressed then if Pressed then
Pen.Color := clBtnHighlight Pen.Color := clBtnHighlight else
else
Pen.Color := clBtnShadow; Pen.Color := clBtnShadow;
PolyLine([
PolyLine([Point(ButtonRect.Left, ButtonRect.Bottom - 1), Point(ButtonRect.Left, ButtonRect.Bottom - 1),
Point(ButtonRect.Right - 1, ButtonRect.Bottom - 1), Point(ButtonRect.Right - 1, ButtonRect.Bottom - 1),
Point(ButtonRect.Right - 1, ButtonRect.Top)]); Point(ButtonRect.Right - 1, ButtonRect.Top)
]);
InflateRect(ButtonRect, -2, -2); InflateRect(ButtonRect, -2, -2);
end else begin end;
ds3D:
begin
if Pressed then if Pressed then
DrawFrameControl(Handle, ButtonRect, DrawFrameControl(Handle, ButtonRect, DFC_BUTTON, DFCS_BUTTONPUSH or DFCS_PUSHED)
DFC_BUTTON, DFCS_BUTTONPUSH or DFCS_PUSHED)
else else
DrawFrameControl(Handle, ButtonRect, DFC_BUTTON, DFCS_BUTTONPUSH); DrawFrameControl(Handle, ButtonRect, DFC_BUTTON, DFCS_BUTTONPUSH);
InflateRect(ButtonRect, -2, -2); InflateRect(ButtonRect, -2, -2);
FillRect(ButtonRect); FillRect(ButtonRect);
end; end;
dsNoBorder:
begin
if Pressed then begin
Pen.Color := clBtnShadow;
Rectangle(ButtonRect);
end;
end;
end;
if Pressed then begin if Pressed then begin
ButtonRect.Left := ButtonRect.Left + 2; ButtonRect.Left := ButtonRect.Left + 2;
@ -335,8 +345,7 @@ begin
DrawText(Handle, PChar(FButtonsArray[Index].Caption), DrawText(Handle, PChar(FButtonsArray[Index].Caption),
Length(FButtonsArray[Index].Caption), ButtonRect, Length(FButtonsArray[Index].Caption), ButtonRect,
{DrawTextBiDiModeFlagsReadingOnly or }DT_SINGLELINE or DT_CENTER {DrawTextBiDiModeFlagsReadingOnly or }DT_SINGLELINE or DT_CENTER or DT_VCENTER);
or DT_VCENTER);
end; end;
end; end;
{=====} {=====}

View File

@ -1,13 +1,13 @@
object ContactEditForm: TContactEditForm object ContactEditForm: TContactEditForm
Left = 311 Left = 311
Height = 511 Height = 382
Top = 245 Top = 245
Width = 433 Width = 433
HorzScrollBar.Page = 432 HorzScrollBar.Page = 432
VertScrollBar.Page = 320 VertScrollBar.Page = 320
ActiveControl = tsContacts ActiveControl = tsContacts
Caption = 'ContactEdit' Caption = 'ContactEdit'
ClientHeight = 511 ClientHeight = 382
ClientWidth = 433 ClientWidth = 433
OnCreate = FormCreate OnCreate = FormCreate
OnKeyDown = FormKeyDown OnKeyDown = FormKeyDown
@ -16,7 +16,7 @@ object ContactEditForm: TContactEditForm
LCLVersion = '1.7' LCLVersion = '1.7'
object tsContacts: TPageControl object tsContacts: TPageControl
Left = 0 Left = 0
Height = 470 Height = 341
Top = 0 Top = 0
Width = 433 Width = 433
ActivePage = tabMain ActivePage = tabMain
@ -26,7 +26,7 @@ object ContactEditForm: TContactEditForm
OnChange = tsContactsChange OnChange = tsContactsChange
object tabMain: TTabSheet object tabMain: TTabSheet
Caption = 'RSMasterData' Caption = 'RSMasterData'
ClientHeight = 442 ClientHeight = 313
ClientWidth = 425 ClientWidth = 425
object LastNameLbl: TLabel object LastNameLbl: TLabel
Left = 9 Left = 9
@ -168,7 +168,7 @@ object ContactEditForm: TContactEditForm
Left = 136 Left = 136
Height = 23 Height = 23
Top = 151 Top = 151
Width = 121 Width = 153
MaxLength = 10 MaxLength = 10
OnChange = ItemChanged OnChange = ItemChanged
TabOrder = 7 TabOrder = 7
@ -177,7 +177,7 @@ object ContactEditForm: TContactEditForm
Left = 136 Left = 136
Height = 23 Height = 23
Top = 224 Top = 224
Width = 121 Width = 152
MaxLength = 50 MaxLength = 50
OnChange = ItemChanged OnChange = ItemChanged
TabOrder = 11 TabOrder = 11
@ -186,7 +186,7 @@ object ContactEditForm: TContactEditForm
Left = 136 Left = 136
Height = 23 Height = 23
Top = 56 Top = 56
Width = 121 Width = 153
MaxLength = 50 MaxLength = 50
OnChange = ItemChanged OnChange = ItemChanged
TabOrder = 2 TabOrder = 2
@ -204,7 +204,7 @@ object ContactEditForm: TContactEditForm
Left = 136 Left = 136
Height = 23 Height = 23
Top = 251 Top = 251
Width = 121 Width = 153
ItemHeight = 15 ItemHeight = 15
MaxLength = 65535 MaxLength = 65535
TabOrder = 12 TabOrder = 12
@ -259,10 +259,8 @@ object ContactEditForm: TContactEditForm
Left = 136 Left = 136
Height = 23 Height = 23
Top = 280 Top = 280
Width = 121 Width = 153
CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames] CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
OKCaption = 'OK'
CancelCaption = 'Cancel'
DateOrder = doNone DateOrder = doNone
ButtonWidth = 23 ButtonWidth = 23
NumGlyphs = 1 NumGlyphs = 1
@ -491,7 +489,7 @@ object ContactEditForm: TContactEditForm
object pnlBottom: TPanel object pnlBottom: TPanel
Left = 0 Left = 0
Height = 41 Height = 41
Top = 470 Top = 341
Width = 433 Width = 433
Align = alBottom Align = alBottom
BevelOuter = bvNone BevelOuter = bvNone

View File

@ -391,16 +391,20 @@ var
FieldTop: Integer; FieldTop: Integer;
delta: Integer; delta: Integer;
corr: Integer; // difference between form's client width and tabsheet width corr: Integer; // difference between form's client width and tabsheet width
editHeight: Integer; // Height of an edit control editHeight: Integer; // DPI-aware height of an edit control
btnHeight: Integer; // DPI-aware height of a button control
vDist: Integer = 4; // Vertical distance between edits vDist: Integer = 4; // Vertical distance between edits
hBorder: Integer = 8; // Distance between container border and label hBorder: Integer = 8; // Distance between container border and label
dist: Integer = 4; // distance between label and edit/combo dist: Integer = 4; // Distance between label and edit/combo
begin begin
dist := round(dist * Screen.PixelsPerInch / DesignTimeDPI); dist := ScaleX(dist , DesignTimeDPI);
vdist := round(vdist * Screen.PixelsPerInch / DesignTimeDPI); vdist := ScaleY(vdist, DesignTimeDPI);
hBorder := round(hBorder * Screen.PixelsPerInch / DesignTimeDPI); hBorder := ScaleX(hBorder, DesignTimeDPI);
editHeight := LastNameEdit.Height * Screen.PixelsPerInch div DesignTimeDPI; editHeight := ScaleY(LastNameEdit.Height, DesignTimeDPI);
btnHeight := ScaleY(OKBtn.Height, DesignTimeDPI);
BirthdateEdit.ButtonWidth := editHeight;
{ Note: The resizing algorithm is dependent upon the labels having their { Note: The resizing algorithm is dependent upon the labels having their
FocusControl property set to the corresponding edit field or combobox. } FocusControl property set to the corresponding edit field or combobox. }
@ -423,8 +427,7 @@ begin
for i := Low(Labels) to High(Labels) do for i := Low(Labels) to High(Labels) do
LargestLabelWidth := Max(LargestLabelWidth, GetLabelWidth(Labels[i])); LargestLabelWidth := Max(LargestLabelWidth, GetLabelWidth(Labels[i]));
{ Determine width of label based upon whether large or small fonts are { Determine width of label based upon dpi of screen }
in effect. }
for i := Low(Labels) to High(Labels) do begin for i := Low(Labels) to High(Labels) do begin
Labels[i].FocusControl.Left := HBorder + LargestLabelWidth + Dist; Labels[i].FocusControl.Left := HBorder + LargestLabelWidth + Dist;
Labels[i].Left := Labels[i].FocusControl.Left - DIST - GetLabelWidth(Labels[i]); Labels[i].Left := Labels[i].FocusControl.Left - DIST - GetLabelWidth(Labels[i]);
@ -439,13 +442,11 @@ begin
OldFont := TFont.Create; OldFont := TFont.Create;
try try
OldFont.Assign(Canvas.Font); OldFont.Assign(Canvas.Font);
if cboxCountry.Visible then begin if cboxCountry.Visible then begin
Canvas.Font.Assign(cboxCountry.Font); Canvas.Font.Assign(cboxCountry.Font);
for j := 0 to cboxCountry.Items.Count - 1 do for j := 0 to cboxCountry.Items.Count - 1 do
widestField := Max(widestField, Canvas.TextWidth(cboxCountry.Items[j]) + ComboArrowWidth); widestField := Max(widestField, Canvas.TextWidth(cboxCountry.Items[j]) + ComboArrowWidth);
end; end;
if cboxState.Visible then begin if cboxState.Visible then begin
Canvas.Font.Assign(cboxCountry.Font); Canvas.Font.Assign(cboxCountry.Font);
for j := 0 to cboxState.Items.Count - 1 do for j := 0 to cboxState.Items.Count - 1 do
@ -480,8 +481,14 @@ begin
inc(FieldTop, editHeight + VDist); inc(FieldTop, editHeight + VDist);
end; end;
OKBtn.Top := vDist;
OKBtn.Height := btnHeight;
CancelBtn.Top := OKBtn.Top;
CancelBtn.Height := OKBtn.Height;
pnlBottom.ClientHeight := btnHeight + vDist*2;
{ Set form height such that first tab is filled completely by controls } { Set form height such that first tab is filled completely by controls }
ClientHeight := BirthDateEdit.Top + editHeight + TopField + // required height of tab sheet ClientHeight := BirthDateEdit.Top + editHeight + TopField + VDist + // required height of tab sheet
pnlBottom.Height + // height of button panel pnlBottom.Height + // height of button panel
tsContacts.Height - tabMain.ClientHeight; // Height of tab + border tsContacts.Height - tabMain.ClientHeight; // Height of tab + border

View File

@ -1,5 +1,5 @@
object frmEditElement: TfrmEditElement object frmEditElement: TfrmEditElement
Left = 954 Left = 1069
Height = 503 Height = 503
Top = 231 Top = 231
Width = 489 Width = 489
@ -12,7 +12,7 @@ object frmEditElement: TfrmEditElement
OnCreate = FormCreate OnCreate = FormCreate
OnShow = FormShow OnShow = FormShow
Position = poScreenCenter Position = poScreenCenter
LCLVersion = '1.4.4.0' LCLVersion = '1.7'
object gbVisual: TGroupBox object gbVisual: TGroupBox
Left = 12 Left = 12
Height = 152 Height = 152

View File

@ -324,13 +324,7 @@ begin
edCaptionText.Height := hEd; edCaptionText.Height := hEd;
// Fix button heights a higher dpi // Fix button heights a higher dpi
with TButton.Create(self) do hBtn := ScaleY(btnOK.Height, DesignTimeDPI);
try
Parent := self;
hBtn := Height;
finally
Free;
end;
btnOK.Height := hBtn; btnOK.Height := hBtn;
btnCancel.Height := hBtn; btnCancel.Height := hBtn;
btnShape.Height := hBtn; btnShape.Height := hBtn;
@ -359,6 +353,9 @@ begin
chkVisible.Left := edTop.Left; chkVisible.Left := edTop.Left;
Panel3.Width := RightOf(udHeight) + 2*DELTA; Panel3.Width := RightOf(udHeight) + 2*DELTA;
// Caption
btnCaptionFont.Width := GetButtonWidth(btnCaptionFont);
// Buttons at the bottom // Buttons at the bottom
w := Max(GetButtonWidth(btnOK), GetButtonWidth(btnCancel)); w := Max(GetButtonWidth(btnOK), GetButtonWidth(btnCancel));
btnOK.Width := w; btnOK.Width := w;

View File

@ -155,7 +155,7 @@ end;
procedure TfrmEditFormat.PositionControls; procedure TfrmEditFormat.PositionControls;
var var
DELTA: integer = 8; DELTA: integer = 8;
margin: Integer = 16; margin: Integer = 8;
vdist: Integer = 4; vdist: Integer = 4;
var var
w, h: Integer; w, h: Integer;
@ -172,17 +172,11 @@ begin
Free; Free;
end; end;
with TButton.Create(self) do btnHeight := ScaleY(btnOK.Height, DesignTimeDPI);
try
Parent := self;
btnHeight := Height;
finally
Free;
end;
DELTA := Round(DELTA * Screen.PixelsPerInch / DesignTimeDPI); DELTA := ScaleX(DELTA, DesignTimeDPI);
MARGIN := Round(MARGIN * Screen.PixelsPerInch / DesignTimeDPI); MARGIN := ScaleX(MARGIN, DesignTimeDPI);
VDIST := Round(VDIST * Screen.PixelsPerInch / DesignTimeDPI); VDIST := ScaleY(VDIST, DesignTimeDPI);
w := MaxValue([GetLabelWidth(LblName), GetLabelWidth(LblDescription), GetLabelWidth(LblIncrement)]); w := MaxValue([GetLabelWidth(LblName), GetLabelWidth(LblDescription), GetLabelWidth(LblIncrement)]);
edName.Left := margin + w + DELTA; edName.Left := margin + w + DELTA;
@ -195,6 +189,7 @@ begin
lblIncrement.Left := edIncrement.Left - GetLabelWidth(lblIncrement) - DELTA; lblIncrement.Left := edIncrement.Left - GetLabelWidth(lblIncrement) - DELTA;
ClientWidth := MARGIN + w + DELTA + edName.Width + MARGIN; ClientWidth := MARGIN + w + DELTA + edName.Width + MARGIN;
rgDayIncrement.Left := MARGIN;
rgDayIncrement.Width := ClientWidth - 2*MARGIN; rgDayIncrement.Width := ClientWidth - 2*MARGIN;
w := Max(GetButtonWidth(btnOK), GetButtonWidth(btnCancel)); w := Max(GetButtonWidth(btnOK), GetButtonWidth(btnCancel));
@ -223,7 +218,7 @@ begin
rgdayIncrement.Height := h + 2*LblName.Height; rgdayIncrement.Height := h + 2*LblName.Height;
btnOK.Height := btnHeight; btnOK.Height := btnHeight;
btnCancel.Height := btnHeight; btnCancel.Height := btnHeight;
btnOK.Top := Bottomof(rgDayIncrement) + VDIST; btnOK.Top := Bottomof(rgDayIncrement) + MARGIN;
btnCancel.Top := btnOK.Top; btnCancel.Top := btnOK.Top;
ClientHeight := Bottomof(btnOK) + VDIST*2; ClientHeight := Bottomof(btnOK) + VDIST*2;

View File

@ -1,12 +1,12 @@
object frmPrnFormat: TfrmPrnFormat object frmPrnFormat: TfrmPrnFormat
Left = 250 Left = 250
Height = 480 Height = 471
Top = 165 Top = 165
Width = 694 Width = 694
HorzScrollBar.Page = 639 HorzScrollBar.Page = 639
VertScrollBar.Page = 479 VertScrollBar.Page = 479
Caption = 'Print Format Designer' Caption = 'Print Format Designer'
ClientHeight = 480 ClientHeight = 471
ClientWidth = 694 ClientWidth = 694
OnCloseQuery = FormCloseQuery OnCloseQuery = FormCloseQuery
OnCreate = FormCreate OnCreate = FormCreate
@ -94,30 +94,36 @@ object frmPrnFormat: TfrmPrnFormat
TabOrder = 1 TabOrder = 1
end end
object PrintPreviewPanel: TPanel object PrintPreviewPanel: TPanel
Left = 365 Left = 368
Height = 439 Height = 430
Top = 0 Top = 0
Width = 320 Width = 320
BorderSpacing.Top = 4 Align = alRight
BorderSpacing.Right = 4
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 439 ClientHeight = 430
ClientWidth = 320 ClientWidth = 320
TabOrder = 8 TabOrder = 8
object PrintPreview: TVpPrintPreview object PrintPreview: TVpPrintPreview
Left = 0 Left = 0
Height = 439 Height = 401
Top = 0 Top = 21
Width = 320 Width = 320
CurPage = 0 CurPage = 0
DrawingStyle = dsFlat DrawingStyle = dsFlat
EndDate = 37377.6447728357 EndDate = 37377.6447728357
StartDate = 37370.6447728357 StartDate = 37370.6447728357
Align = alClient
Parent = PrintPreviewPanel Parent = PrintPreviewPanel
TabStop = True TabStop = True
TabOrder = 0 TabOrder = 0
end end
object LblPrintPreview: TLabel
Left = 1
Height = 15
Top = 2
Width = 44
Caption = 'Preview:'
ParentColor = False
end
end end
object lbFormats: TListBox object lbFormats: TListBox
Left = 8 Left = 8
@ -132,7 +138,7 @@ object frmPrnFormat: TfrmPrnFormat
end end
object lbElements: TListBox object lbElements: TListBox
Left = 8 Left = 8
Height = 193 Height = 179
Top = 246 Top = 246
Width = 257 Width = 257
ItemHeight = 0 ItemHeight = 0
@ -195,7 +201,7 @@ object frmPrnFormat: TfrmPrnFormat
object ButtonPanel: TPanel object ButtonPanel: TPanel
Left = 0 Left = 0
Height = 41 Height = 41
Top = 439 Top = 430
Width = 694 Width = 694
Align = alBottom Align = alBottom
BevelOuter = bvNone BevelOuter = bvNone
@ -234,13 +240,21 @@ object frmPrnFormat: TfrmPrnFormat
Height = 25 Height = 25
Top = 8 Top = 8
Width = 75 Width = 75
Anchors = [akRight, akBottom] Anchors = [akTop, akRight]
Caption = 'OK' Caption = 'OK'
Default = True Default = True
OnClick = btnOkClick OnClick = btnOkClick
TabOrder = 3 TabOrder = 3
end end
end end
object Bevel1: TBevel
Left = 688
Height = 430
Top = 0
Width = 6
Align = alRight
Shape = bsSpacer
end
object OpenDialog1: TOpenDialog object OpenDialog1: TOpenDialog
Title = 'Open filter file' Title = 'Open filter file'
DefaultExt = '.xml' DefaultExt = '.xml'

View File

@ -50,7 +50,11 @@ const
UnnamedFile = '<Unnamed>'; UnnamedFile = '<Unnamed>';
type type
{ TfrmPrnFormat }
TfrmPrnFormat = class(TForm) TfrmPrnFormat = class(TForm)
Bevel1: TBevel;
btnDeleteElement: TButton; btnDeleteElement: TButton;
btnDeleteFormat: TButton; btnDeleteFormat: TButton;
btnEditElement: TButton; btnEditElement: TButton;
@ -62,6 +66,7 @@ type
btnNewFile: TButton; btnNewFile: TButton;
btnNewFormat: TButton; btnNewFormat: TButton;
btnSaveFile: TButton; btnSaveFile: TButton;
LblPrintPreview: TLabel;
LblFormats: TLabel; LblFormats: TLabel;
LblElements: TLabel; LblElements: TLabel;
lbElements: TListBox; lbElements: TListBox;
@ -84,12 +89,12 @@ type
procedure btnNewFileClick(Sender: TObject); procedure btnNewFileClick(Sender: TObject);
procedure btnNewFormatClick(Sender: TObject); procedure btnNewFormatClick(Sender: TObject);
procedure btnSaveFileClick(Sender: TObject); procedure btnSaveFileClick(Sender: TObject);
procedure btnOkClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure lbElementsClick(Sender: TObject); procedure lbElementsClick(Sender: TObject);
procedure lbFormatsClick(Sender: TObject); procedure lbFormatsClick(Sender: TObject);
procedure btnOkClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure lbElementsMouseDown(Sender: TObject; Button: TMouseButton; procedure lbElementsMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); Shift: TShiftState; X, Y: Integer);
procedure lbElementsDragDrop(Sender, Source: TObject; X, Y: Integer); procedure lbElementsDragDrop(Sender, Source: TObject; X, Y: Integer);
@ -655,6 +660,7 @@ begin
LblFormats.Caption := RSFormats; LblFormats.Caption := RSFormats;
LblElements.Caption := RSElements; LblElements.Caption := RSElements;
lblPrintOrder.Caption := RSPrintOrder; lblPrintOrder.Caption := RSPrintOrder;
LblPrintPreview.Caption := RSDlgPrintPreview;
btnOK.Caption := RSOKBtn; btnOK.Caption := RSOKBtn;
btnNewFormat.Caption := RSNewBtn; btnNewFormat.Caption := RSNewBtn;
btnEditFormat.Caption := RSEditBtn; btnEditFormat.Caption := RSEditBtn;
@ -670,38 +676,53 @@ end;
procedure TfrmPrnFormat.PositionControls; procedure TfrmPrnFormat.PositionControls;
var var
w: Integer; w: Integer;
DIST: Integer = 8; HDist: Integer = 8;
VDist: Integer = 8;
btndist: Integer; btndist: Integer;
hBtn: Integer; hBtn: Integer;
btnHeight: Integer;
po: TPosition;
begin begin
DIST := round(DIST * Screen.PixelsPerInch / DesignTimeDPI); po := Position;
btnDist := btnEditFormat.Top - BottomOf(btnNewFormat);
HDist := ScaleX(HDist, DesignTimeDPI);
VDist := ScaleY(VDist, DesignTimeDPI);
hBtn := ScaleY(btnOK.Height, DesignTimeDPI);
// Fix button height at higher dpi
with TButton.Create(self) do
try
Parent := self;
hBtn := Height;
finally
Free;
end;
btnNewFormat.Height := hBtn; btnNewFormat.Height := hBtn;
btnEditFormat.Height := hBtn; btnEditFormat.Height := hBtn;
btnDeleteFormat.Height := hBtn; btnDeleteFormat.Height := hBtn;
btnNewElement.Height := hBtn; btnNewElement.Height := hBtn;
btnEditElement.Height := hbtn; btnEditElement.Height := hbtn;
btnDeleteElement.Height := hBtn; btnDeleteElement.Height := hBtn;
btnMoveElementUp.Height := hBtn; btnMoveElementUp.Width := hBtn;
btnMoveElementDn.Height := hBtn; btnMoveElementDn.Width := hBtn;
btnNewFile.Height := hBtn; btnNewFile.Height := hBtn;
btnLoadFile.Height := hBtn; btnLoadFile.Height := hBtn;
btnSaveFile.Height := hBtn; btnSaveFile.Height := hBtn;
btnOK.Height := hBtn; btnOK.Height := hBtn;
LblFormats.Top := VDist div 2;
lbFormats.Top := BottomOf(LblFormats) + VDist div 2;
lbFormats.Height := 5*hBtn + lblPrintOrder.Height + 3*VDist; //ScaleY(lbFormats.Height, DesignTimeDPI);
LblElements.Top := BottomOf(lbFormats) + VDist;
lbElements.Top := Bottomof(LblElements) + VDist div 2;
lbElements.Height := lbFormats.Height;
btnNewFormat.Top := lbFormats.Top;
btnEditFormat.Top := BottomOf(btnNewFormat) + VDist div 2;
btnDeleteFormat.Top := BottomOf(btnEditFormat) + VDist div 2;
btnNewElement.Top := lbElements.Top;
btnEditElement.Top := BottomOf(btnNewElement) + VDist div 2;
btnDeleteElement.Top := BottomOf(btnEditElement) + VDist div 2;
w := MaxValue([GetButtonWidth(btnNewFile), GetButtonWidth(btnLoadFile), GetButtonWidth(btnSaveFile)]); w := MaxValue([GetButtonWidth(btnNewFile), GetButtonWidth(btnLoadFile), GetButtonWidth(btnSaveFile)]);
btnNewFile.Width := w; btnNewFile.Width := w;
btnLoadFile.Width := w; btnLoadFile.Width := w;
btnSaveFile.Width := w; btnSaveFile.Width := w;
btnLoadFile.Left := RightOf(btnNewFile) + DIST; btnLoadFile.Left := RightOf(btnNewFile) + HDist;
btnSaveFile.Left := RightOf(btnLoadFile) + DIST; btnSaveFile.Left := RightOf(btnLoadFile) + HDist;
w := MaxValue([GetButtonWidth(btnNewFormat), GetButtonWidth(btnEditFormat), GetButtonWidth(btnDeleteFormat)]); w := MaxValue([GetButtonWidth(btnNewFormat), GetButtonWidth(btnEditFormat), GetButtonWidth(btnDeleteFormat)]);
btnNewFormat.Width := w; btnNewFormat.Width := w;
@ -711,7 +732,7 @@ begin
btnEditElement.Width := w; btnEditElement.Width := w;
btnDeleteElement.Width := w; btnDeleteElement.Width := w;
w := Max(w, GetLabelWidth(LblPrintOrder)); w := Max(w, GetLabelWidth(LblPrintOrder));
btnNewFormat.Left := RightOf(lbFormats) + DIST + (w - btnNewFormat.Width) div 2; btnNewFormat.Left := RightOf(lbFormats) + HDist + (w - btnNewFormat.Width) div 2;
btnEditFormat.Left := btnNewFormat.Left; btnEditFormat.Left := btnNewFormat.Left;
btnDeleteFormat.Left := btnNewFormat.Left; btnDeleteFormat.Left := btnNewFormat.Left;
btnNewElement.Left := btnNewFormat.Left; btnNewElement.Left := btnNewFormat.Left;
@ -721,15 +742,30 @@ begin
LblPrintOrder.Left := BtnNewFormat.Left + (BtnNewFormat.Width - GetLabelWidth(LblPrintOrder)) div 2; LblPrintOrder.Left := BtnNewFormat.Left + (BtnNewFormat.Width - GetLabelWidth(LblPrintOrder)) div 2;
btnMoveElementUp.Left := BtnNewFormat.Left + (BtnNewFormat.Width - btnMoveElementUp.Width) div 2; btnMoveElementUp.Left := BtnNewFormat.Left + (BtnNewFormat.Width - btnMoveElementUp.Width) div 2;
btnMoveElementDn.Left := btnMoveElementUp.Left; btnMoveElementDn.Left := btnMoveElementUp.Left;
LblPrintOrder.Top := BottomOf(BtnDeleteElement) + btndist; LblPrintOrder.Top := BottomOf(BtnDeleteElement) + VDist;
btnMoveElementUp.Top := BottomOf(LblPrintOrder) + Round(8 * Screen.PixelsPerInch / DesignTimeDPI); btnMoveElementUp.Top := BottomOf(LblPrintOrder) + VDist div 2;
btnMoveElementDn.Top := BottomOf(BtnMoveElementUp) + Round(8 * Screen.PixelsPerInch / DesignTimeDPI); btnMoveElementDn.Top := BottomOf(BtnMoveElementUp) + VDist div 2;
PrintPreviewPanel.Left := Max(RightOf(btnNewFormat), RightOf(LblPrintOrder)) + DIST; //RightOf(lbFormats) + DIST + w + DIST; btnOK.Top := VDist;
PrintPreviewPanel.Width := round(PrintPreview.Height * 210 / 297); // size ratio of A4 paper btnNewFile.Top := VDist;
btnSaveFile.Top := VDist;
btnLoadFile.Top := VDist;
ButtonPanel.ClientHeight := BottomOf(btnOK) + btnOK.Top; ButtonPanel.ClientHeight := VDist + hBtn + VDist;
ClientWidth := PrintPreviewPanel.Left + PrintPreviewPanel.Width + 4; // + DIST; ClientHeight := BottomOf(lbElements) + ButtonPanel.Height;
Bevel1.Width := lbFormats.Left;
PrintPreview.Top := lbFormats.Top;
LblPrintPreview.Top := LblFormats.Top;
PrintPreview.Height := PrintPreviewPanel.ClientHeight - PrintPreview.Top;
PrintPreviewPanel.Width := Round(PrintPreview.Height * 210 / 297); // size ratio of A4 paper
PrintPreview.Width := PrintPreviewPanel.ClientWidth;
ClientWidth := Max(RightOf(btnNewFormat), RightOf(LblPrintOrder) + HDist) + PrintPreviewPanel.Width + Bevel1.Width;
PrintPreviewPanel.Left := 0; // make sure that spacer is at right
Position := poDefault;
Position := poScreenCenter;
end; end;
{ {

View File

@ -308,6 +308,8 @@ var
shape: TVpShapeType; shape: TVpShapeType;
DELTA: Integer = 8; DELTA: Integer = 8;
VDIST: Integer = 4; VDIST: Integer = 4;
cnv: TControlCanvas;
i: Integer;
begin begin
AutoSize := false; AutoSize := false;
gbPen.AutoSize := false; gbPen.AutoSize := false;
@ -329,16 +331,15 @@ begin
cbBrushColor.ItemHeight := hc; cbBrushColor.ItemHeight := hc;
// Fix button hight at higher dpi. // Fix button hight at higher dpi.
with TButton.Create(self) do hb := ScaleY(btnOK.Height, DesignTimeDPI);
try
Parent := self;
hb := Height;
finally
Free;
end;
DELTA := round(DELTA * Screen.PixelsPerInch / DesignTimeDPI); DELTA := ScaleX(DELTA, DesignTimeDPI);
VDIST := round(VDIST * Screen.PixelsPerInch / DesignTimeDPI); VDIST := ScaleY(VDIST, DesignTimeDPI);
{ gsShapes - vert }
gbShapes.ClientHeight := SpeedButton1.Height + 3 * VDIST;
for shape := Low(TVpShapeType) to High(TVpShapeType) do
FShapeButtons[shape].Top := VDIST;
{ gbPen - hor } { gbPen - hor }
w := MaxValue([GetLabelWidth(lblPenColor), GetLabelWidth(lblPenStyle), w := MaxValue([GetLabelWidth(lblPenColor), GetLabelWidth(lblPenStyle),
@ -353,6 +354,23 @@ begin
lblPenMode.Left := cbPenColor.Left - GetLabelWidth(lblPenMode) - DELTA; lblPenMode.Left := cbPenColor.Left - GetLabelWidth(lblPenMode) - DELTA;
udPenWidth.Left := RightOf(edPenWidth); udPenWidth.Left := RightOf(edPenWidth);
{ gbPen - Width }
cnv := TControlCanvas.Create;
try
cnv.Control := cbPenStyle;
cnv.Font.Assign(cbPenStyle.Font);
w := 0;
for i:=0 to cbPenStyle.Items.Count-1 do
w := Max(w, cnv.TextWidth(cbPenStyle.Items[i]));
w := w + 10 + 2*cbPenStyle.Height;
finally
cnv.Free;
end;
cbPenColor.Width := w;
cbPenStyle.Width := w;
cbPenMode.Width := w;
{ gbPen - vert } { gbPen - vert }
lblPenColor.Top := cbPenColor.Top + (cbPenColor.Height - lblPenColor.Height) div 2; lblPenColor.Top := cbPenColor.Top + (cbPenColor.Height - lblPenColor.Height) div 2;
cbPenStyle.Top := BottomOf(cbPenColor) + VDIST; cbPenStyle.Top := BottomOf(cbPenColor) + VDIST;
@ -365,6 +383,7 @@ begin
{ gpPen - set size } { gpPen - set size }
gbPen.AutoSize := true; gbPen.AutoSize := true;
gbPen.Top := BottomOf(gbShapes) + VDIST*2;
{ gbBrush - hor } { gbBrush - hor }
w := MaxValue([GetLabelWidth(lblBrushColor), GetLabelWidth(lblBrushStyle)]) + 2*DELTA; w := MaxValue([GetLabelWidth(lblBrushColor), GetLabelWidth(lblBrushStyle)]) + 2*DELTA;
@ -383,6 +402,7 @@ begin
{ gbBrush - set size } { gbBrush - set size }
gbBrush.AutoSize := true; gbBrush.AutoSize := true;
gbBrush.Top := gbPen.Top;
{ Buttons - hor } { Buttons - hor }
btnOK.Width := Max(GetButtonWidth(btnOK), GetButtonWidth(btnCancel)); btnOK.Width := Max(GetButtonWidth(btnOK), GetButtonWidth(btnCancel));
@ -465,6 +485,8 @@ end;
procedure TfrmEditShape.cbBrushStyleDrawItem(Control: TWinControl; procedure TfrmEditShape.cbBrushStyleDrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState); Index: Integer; Rect: TRect; State: TOwnerDrawState);
const
DIST = 2;
var var
SavePenColor, SaveBrushColor: TColor; SavePenColor, SaveBrushColor: TColor;
x: Integer; x: Integer;
@ -515,8 +537,9 @@ begin
end; end;
{ draw the item text } { draw the item text }
inc(x, ScaleX(DIST, DesignTimeDPI));
TxtRect := Classes.Rect(x, Rect.Top, Rect.Right, Rect.Bottom); TxtRect := Classes.Rect(x, Rect.Top, Rect.Right, Rect.Bottom);
TextRect(TxtRect, TxtRect.Left + 1, TxtRect.Top + 1, Item); // Font color already set TextRect(TxtRect, TxtRect.Left, TxtRect.Top + 1, Item); // Font color already set
finally finally
{ restore settings } { restore settings }
@ -540,6 +563,8 @@ end;
procedure TfrmEditShape.cbPenStyleDrawItem(Control: TWinControl; procedure TfrmEditShape.cbPenStyleDrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState); Index: Integer; Rect: TRect; State: TOwnerDrawState);
const
DIST = 2;
var var
SavePenColor, SaveBrushColor: TColor; SavePenColor, SaveBrushColor: TColor;
SavePenStyle: TPenStyle; SavePenStyle: TPenStyle;
@ -583,8 +608,9 @@ begin
LineTo(x - 1, y + 1); LineTo(x - 1, y + 1);
{ Draw the item text } { Draw the item text }
inc(x, ScaleX(DIST, DesignTimeDPI));
TxtRect := Classes.Rect(x, Rect.Top, Rect.Right, Rect.Bottom); TxtRect := Classes.Rect(x, Rect.Top, Rect.Right, Rect.Bottom);
TextRect(TxtRect, TxtRect.Left + 1, TxtRect.Top + 1, Item); // Color already set TextRect(TxtRect, TxtRect.Left, TxtRect.Top + 1, Item); // Color already set
finally finally
{ restore settings } { restore settings }

View File

@ -1,7 +1,7 @@
object DlgEventEdit: TDlgEventEdit object DlgEventEdit: TDlgEventEdit
Left = 512 Left = 673
Height = 433 Height = 433
Top = 221 Top = 379
Width = 697 Width = 697
BorderStyle = bsToolWindow BorderStyle = bsToolWindow
Caption = 'Add / Edit Events' Caption = 'Add / Edit Events'
@ -177,52 +177,110 @@ object DlgEventEdit: TDlgEventEdit
ClientWidth = 677 ClientWidth = 677
TabOrder = 1 TabOrder = 1
object imgClock: TImage object imgClock: TImage
Left = 16 Left = 8
Height = 16 Height = 32
Top = 5 Top = 5
Width = 16 Width = 32
AutoSize = True
Picture.Data = { Picture.Data = {
1754506F727461626C654E6574776F726B477261706869633D03000089504E47 1754506F727461626C654E6574776F726B477261706869639C0A000089504E47
0D0A1A0A0000000D49484452000000100000001008060000001FF3FF61000003 0D0A1A0A0000000D4948445200000020000000200806000000737A7AF4000000
044944415478DA5D936B48537118C60F8104117D8BFA12047D90280AA21B4581 1974455874536F6674776172650041646F626520496D616765526561647971C9
10154141D0876E064117AA85589695561B6499599999A899B7D5A495D37476B7 653C00000A3E4944415478DA9457797454E515FFBD6D32432624848449080944
ADE33CBACCE65A9AA7990B97E5DAE62EC7637A747B7AFF434775E0777878DFE7 2089464044C106414E45A06C42DD690B5AE8E160B12A4539078F52B7D65AC583
79FE9C3F1C0E0037DCC84D23D4849D78474C67F3BFA1D99CC9BD95489C9A7301 1BC72AE7543C50B7485864B51E15A580D402862504C2921066926126CB4C667B
039740E40CB7EFF9AEF84C08B5EFF558EBB75AD25E2B66C23F89B9AD7E3B1FB6 4BEFFDDE4B98D0FED377CE376FE6BDFBFDEEBDBFBB7D23E1CA2537D7CC5A909D
1DF18D7467FAC96F25E6C50A3CD55C46C89A3C3036D8086FEBFEC07BFD1A29DB A9AEA5EF19FCC08215387B295A3562FE9EB3E2E7FF7749B51F4C2E1D52E0DD27
E24341BB07F73A7FC660FA06DF874EFD3239E8D0C852E7C95F94EB2012387705 41F239CF12ED517DC9C0395BDFA7EFA610725EA8C12D333FCD2A2BB9532B2E80
773E6CCFF40F36EF0F08F7D78CE7B7F6E3A1FD0774FC37141ABA90FFA80B154D A428E2A1158DC2A8AB473CDAF2C7AC3BBE5E3577EE67531445FDB5692963E975
7DD0D9BEA3ECAD099FEB374546DC8F2606EB168A944DE4BE1673EB7A4A66882D B1C53659368A6443354A300F7474A5DEFD74D9EAF1597D7DCF486565409F4C92
A54BE41C531FAAADFD30985CE87587E00B49F0868621F687A07DD98BB266171E 93601906528D7E749EBAB0396FF6B6BB495EE75DF2A9F55317159717BCE3BAA6
3EC9855DB77AB4BB64D607CA26C62E22ED5EC3B5F41A074A2C2EE8E934F60C05 440891282489964AE81E1DFFD8E8D6576F9AD831BC3433F7F65B4B50599E8FD2
83F832F013BF4933A4285064EC45A1D9890B7A1E47CB85ACD81DB0D79EE20EF3 6237D2F48B8FB38D71D49E0C62F7DE26B4079BF19B072F60E28446F25B255C19
A9C70E143D13D14D27CBE35148B28C3B65E5F05051787414352FDE80FF12C415 962503E45CB2E1021AEBFC8BCBE6EF7A8FF77ADA6B66B67BAE1BA6412101D384
FD47302FCBC40B76E4F1FE54DD075C7D60876744C1D0680463B438ABD6E0BEE1 2C5B50541DED9D1978E2D509F0F429C12FEF1A8EC1455938521747532085D636
09D22F6AF052B0C2115470A2D00AE6659978C1B62BCFFC874AAD5097DBD02F29 FDBF38CFCF5151E4D330AADC8D738D116CA83E8578FC3C5E5EF62D72FA2660E8
5412813B18C6A5DCEBB1306FFB08EF38F0DEA7E0785E2B989765E2059B2F3C36 6408C810C342ECF8E954F69C6DD92A1B404A352B9912DECB9229949FA8EB8F15
EFBC698246DB81B7CE207ED047BBC30A9E9A5BD0E70F61700270C940EDA7004E 6F4DC23DB347E0B6AA62FCEB7817BE3C1416AE0A4FA07587BA273D0221132DE1
14B7817959265E9074AA52BD455D8794BB02B2F522BC7461430A108E10A40354 38FE7D3286B2C11958FEF08DF86A5F1EE6AF70E3ED277761D0804EE8BA064B56
E0257D4E2B4255CC837959265EB0F678E172A26BE3F906A492E1AABE07365700 D95106F0B0012AC8193D1A876C19C4908E0B4D5958FEE62C3CFDF868E8A682EA
12DD87242BB093CEAAFE0C55C11B300FF3B24CBC80B1F260EEE123D95A79C399 3D61249312540AC9B0A20614FB2EA020274061A2C84B4CAD49CB82BFCD87C640
5AECCB7D85D4DB3CD26E59907AB319AA3C1392739E63D765230E6455CACC1BFF 094E5F2C45DDD924CE5D4CA06AB40F2B1FCBC5E297BDF8CBC26A540CBE4C982E
17A6842008490E87034D267E62EDB152AC50E9B02AC51083E92DA72BD16C6989 C0B0738FCD1F10DE38EDA28BF85355036D511716BD350FCB978E271915076AE3
B6084294BCEBFF29301A8DB309C9E974A2BEA1C1BF7477A666F1CE0C33E19F84 64AC8A9B2B4FE1FAD206628758D25C50335CD0DC2AD6ACDD8947974C432AAE43
6935EDC2A22882BCE3C48278415555D54CA287182316FDFF2B4F41BBF9449018 4F2461A478C9A86D188AEF8F970987C65DEF86425EBEFAE677786FE946647B12
20E6B2D91FE7D3E5DB1129EAA60000000049454E44AE426082 8805227ACE033B8B98CBD4EA4DA71759E110B444079ED9301B33A65420A1CBD8
FF6382D2C2C2FDD3FE89AA1BFD58BFE53B6417E42323CB2B8C90651731A0883B
FF7679BDC8CAEF8F759F7E839B4736E1BEA9FBA05032338E494C4D27DCA7095F
6D0BE095CFEA17B26E3620F6FC27A7BF3DDF78A966D7C161869C3904A347F870
E45482F83170CFD41F514876AEAB3E0C6F76215C19E48DAA4192B954997EC9A9
43852A4D8641215BF6E8CF9191ED45BECFC2DD538F42930D1C3A9610B84AE660
FCA166DC8E173E39F31DEB66148E86FEF6EE96C3EDDAB3BF983B6398BB392C21
D40ECC9E7C1E252509B83C2E1CF8FE3CBEFCE62482C1086EBDA58C8B0526E5DE
4FC656D0774E4C3643B68DE19AA7A5BA541059F0F649E16443369294E4E543DC
D8BDDF3BB0EECC863F9370A7ECA470ECF6F12F8D2C2ECCC8CEEDEF4673C0C0A0
C22E5494C5B1E6AF3BA87C643CB6E40E4C1A3F0C3BBF388AD7D6EE81C7E3A1F8
525999B6320E45F7A2622733786958F3EE0EDC30222AF018B75FAE07830A5C99
D326BD311942D2BEB41B2B173E3766744959C2CA445B2730B12A82BCFC4EDC72
D3B5C253935CBCB5AA027E7F08DBF71C464B6B07264EBC5E64BF284251115796
F82D4BC4D0B51429AA2ED98DBA7A6E5E16BC6E13979ABBDC274E5757AB8E0119
8AA48DC91B908960D48241757EDD7571E17937BD26C73A6EE0F78FCF816E98D8
B2FD7B18868E154FDE0B7425A8BE0D614CFAC58653858AE6C3789B774A688F9A
603DAC8FF5761BA0115D85DE4C171A439C1516C55D473CA2883A678718DC20C4
2495DB8A27EE21E5066AB6EEA7BB89952BE701D447D8885ED348927AEE8CC7B8
B104E5C4001787A790F5761BA0308F89A44E8A34E131A85B699A6DBD504E8A4C
CA3C8318D19306563EB500AA22E193EABDD46E1378F69905E471AA8705599629
47643B243CF8084F848B16EB719AA7A2F658CB2F1266DAD4D5B1F6BDED22A958
F99245339D82914482B1CDAAE6A67729F15E92545A57F62B54A66BDFDD268CB0
A8C32E7D64BAF3CED6233986AA6984D996C172BC50F0DBC57344DFEF6680BD11
9E7932F0DA6B1FE3B3CDDFE0CE3B2760D5AAC5D06331D1171CD60573BCDF4E4A
5318CF2D5B1C0A841EA9B70136038633D72D27892C41BBD53D7649B946B5BDE6
F51AECD87510B3665461C58A076126E322E1F87DF7C5F29C333CD6C574ED7153
B2F57487AA27638D64201C8AD2CEA4D8507F92EB5C719A8BDCABC64D029E72FB
4DA4FC2158290E017AC95C9195C57EC6613CC6859500EB617DE90C18C954676D
3818F3E5659201B4E1F8090DC32B6834B301862594767BF5F8237709066993CD
10ECBABFFA92A90F2894A8504D81272B8461A6100EC6C1FA18AE9B8154B0EDE4
A690BF13C9AE0ECA6EE0D02195269C0BEBDEFF9C125815C734EEFFDC0F743248
D72D272CCAFF5E24CFFB783FE3301EE3327EC8DF01D6C77ABBCDE64368F1BC9F
561F2B18DEDF9553E0A3438307E5C32DDCF7809D00866E27507AAFE184E424B3
9C5CB952FF4E6DABB260EAA3BF4BD40529FA660C6DFE00FCF597931BBFBCAB92
CF90DD0C2469B55FBCFCC39F424D517484C3449D85E3C7251C3A68D3AB688AE8
FD222FA839B172F6F06FEBB78BBB6D8C1D6F2147F2BC8FF7330EE3312EE3B31E
D6C77AE5B4A48D7C7DE4C50FDB42B140A82982B6E06564102F359B2DA24F1247
B00F36505F5028962A536C1FA654EE5650C56FFBB92DC7F2BC8FF7D30447A8A5
15971937140FB01ED6C77A95F4D6CD1F0FCD6C4F349D1B3539C6E39688C9CEF5
E2582D9DF5FCC0BCFB2BC580B1DBB32C2AA2B6B60E234754C09E3F76C58CACAC
C0471FA6B077AF41075A19AD9702B8EC8F20D112C1CD23DE79E18B4367F6F128
8618DCBDAFACCE9D771C684D0CBF76E9AA59C82E55D12FBF0F0A07F9A8D4A87E
E326C6DDA262E4480DA5D7A84E33917A3ADCD9061D478FA67060BF4E5ECB82F6
4B4D01845BBBD07ED6C0FBAF7C0CB7DE74226BDAEE718E01E865C0AF26170F7C
67F9988B9E51B9089FD6B0E4C99F41CAF620D3E7A2D19C8B2C3AE5A452540129
53D47E7A423203FC7F46D5A859D168EB6C8F20D81A42349084D51EC7DA973E47
BFA129C46A4358FCCA0F451F7CD1D89C7E1E103DA1E6A9B16B72CA07DEA0F4CD
82A75F1CD36FAAC5FEBD03C80305F164149D5D9D743296C504F17A332847245A
B2BDDC0A527A1CF15817FCCD7E7404DAD0D51C87CFD58A379EDB8ABE43B91F64
89DC18D35FCD5BB3A5611B873D6D16C09DE3921768430721597701F18600229D
91865115CF7FFCD6A61956456AC2323314CB68097641E2D3BC4BEEFD6F91B94C
52538AE93023D41D1366A2BE79EFEA29733F97DAEA8BEED5FD99D7B84B7D7095
0D42CE8F8D0B487A2927627A0872EB5EBF6D6B5EA65675EC6264FBFC378FBC7D
AE25167462C5D9953376E8C24903736E98EAD1FA95AB4A46FED506E846A23596
0AD735B71DDE75F0CCBAAFE8699B93DC59430678F2D62F1DF5706591777A309A
DA57FEBBAF67D1F350BA01CC4F092B724A24E4DC138E7F7D6865D3EAEB7CD7D2
6789A32845AB8B568753E75D4E8672A3F3B293CE9D0DBBC0CEA51B60FF4DB381
B931C5C5A1A037C92E074CBB2A7FBA2FC33122E1605857E1BB1D0C96E1F9ADFF
47800100EAB6B7AAC6FFDD6B0000000049454E44AE426082
} }
end end
object CBAllDay: TCheckBox object CBAllDay: TCheckBox
Left = 89 Left = 89
Height = 19 Height = 19
Top = 2 Top = 3
Width = 89 Width = 89
Caption = 'All Day Event' Caption = 'All Day Event'
OnClick = CBAllDayClick OnClick = CBAllDayClick
TabOrder = 0 TabOrder = 0
end end
object StartTimeLbl: TLabel object StartTimeLbl: TLabel
Left = 36 Left = 47
Height = 15 Height = 15
Top = 23 Top = 23
Width = 54 Width = 54
@ -231,13 +289,11 @@ object DlgEventEdit: TDlgEventEdit
ParentColor = False ParentColor = False
end end
object StartDate: TDateEdit object StartDate: TDateEdit
Left = 107 Left = 109
Height = 23 Height = 23
Top = 19 Top = 19
Width = 104 Width = 104
CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames] CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
OKCaption = 'OK'
CancelCaption = 'Cancel'
DateOrder = doNone DateOrder = doNone
ButtonWidth = 23 ButtonWidth = 23
Glyph.Data = { Glyph.Data = {
@ -281,22 +337,20 @@ object DlgEventEdit: TDlgEventEdit
TabOrder = 1 TabOrder = 1
end end
object EndTimeLbl: TLabel object EndTimeLbl: TLabel
Left = 38 Left = 47
Height = 15 Height = 15
Top = 50 Top = 48
Width = 50 Width = 50
Alignment = taRightJustify Alignment = taRightJustify
Caption = 'End time:' Caption = 'End time:'
ParentColor = False ParentColor = False
end end
object EndDate: TDateEdit object EndDate: TDateEdit
Left = 107 Left = 109
Height = 23 Height = 23
Top = 46 Top = 46
Width = 104 Width = 104
CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames] CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
OKCaption = 'OK'
CancelCaption = 'Cancel'
DateOrder = doNone DateOrder = doNone
ButtonWidth = 23 ButtonWidth = 23
Glyph.Data = { Glyph.Data = {
@ -388,32 +442,64 @@ object DlgEventEdit: TDlgEventEdit
ParentColor = False ParentColor = False
end end
object ImgRecurring: TImage object ImgRecurring: TImage
Left = 368 Left = 360
Height = 18 Height = 32
Top = 5 Top = 5
Width = 18 Width = 32
Picture.Data = { Picture.Data = {
1754506F727461626C654E6574776F726B477261706869637802000089504E47 1754506F727461626C654E6574776F726B477261706869638006000089504E47
0D0A1A0A0000000D49484452000000100000001008060000001FF3FF61000002 0D0A1A0A0000000D4948445200000020000000200806000000737A7AF4000000
3F4944415478DA8D93DB4BD3611CC607FB336276D09242BAB042D639CB642D4F 1974455874536F6674776172650041646F626520496D616765526561647971C9
6406AD365FD774E4A18165CEC59AFEDCDCA11DDC49CDB161494625FCC0688465 653C000006224944415478DABC576B4C145714FE666796055914C48A1A448D44
B58D0DD761F923E8DA3B11BC0DEF9EBE1B5D38FD61BB786FDEC3F33CEFF3E12B E2038C8FAA818AB6BC111FA4DA58FF4849DBB43669AA49AB6DB5491B31DA1FF2
0120F9DFBAF1BC71B0655A21153B939422D034552F28C62F447615E8FBAC95DD A769629B1ADBA6C4681BB558542A3EB015ACD144D8161F288F15E4B1BC1658F6
5DD418746F5571CD7CDBFACD17CDB81655A2215C07FDCB76743C53E1A4F9B84F 39D37367EE2AE22EBB35A4935C76973B73CF77BE73CE77CE00637B85AC3D0825
54A077A943AE7FAFE6B9A411FEAC03919F4144574298CAF910FCFA04DEE5318C F74B94D27729980774630C20DC23032B67212FBD08C7E8B7F87F03D03B3DC0AB
A52C680D35A2AAB772B448A0E743BBACEBDD2DDEB36CC5ECAF694CFEF0E269CE 2B3E454A3CF2D38A703C1088403409597BB1461151A008C825E7C214856FF8B8
8FD037377C593B5C690ED694198FBF1871D55D8F83BA03CE22018A6C307F7A80 996D0D3900370CC858B485DC2BC9C75E1CAFD88D4DB4E5F92F0084CC2F902B18
196112915C10EE8C0DBA3935CEDBE4F9C8383670144D3E05AEB8EA50A1DD17D8 F08B5E8221253E198BE296606ECC7CA800742206DDA5DCB9615068D3A3B82188
F105F5EBD6B8236929383A531C2EB9CEAC9EE56ADC5B2F5576960BE56C6F4CB4 51A86D2941D6A202BAE548BE4020CEFB01E1CB1129E700CE0B2256652E4847C6
C4EB330D6BD4F226B5FCA7D67E6AE3B4E504B7FDD27E4D99A94CB5474A668C90 BC1C8814A876EB75586D4D18B03743A04D97D2EC97874159DB11E84F626C21CA
3242CA94818B8CCC98845A66973DE718456614995164D69FEE921A12774CDB85 6B0FE3AA09A7CF7D827C30824661409F7D00CD91C68953DEC9781B311193D0D8
C88C23B38D7F669B64B626CA9D90C608A9B0758F90BAC96CD593B611153B0616 5506735705DC0A3F14C3A3AA3C4B1DFD4B17F204DA5DCB4F589EB00055B74D79
EEE5FB89EF784C4803D68C09C38987A0C8A0C8A0C8E87EA3852BC915903AD223 F4338C56BF3F0022C5FB5894316ACA87EB7641113AF157CB5ED81CBD10F4DCA6
689B68CE2335143D26A44E2E65C4DCEF6801694C9828423A92182A20D5CEDEC6 A01DAC48FEE9F3C2523803B2E4C0B5072638ADB8CC1CF49703C2CB1F633D21DF
91EE433C2195150910D2D1471FFB115B09179086BF7B319E75C295B162786908 5090B911765D3D4C6DDF503C69C3401EE904841B6260108D147E113ABD0EBDF6
3DF33AB4F89538ACAFE009A95C741628B2AF8FEF84FE15CB230521458DA91AD5 3AD5C0C84B26FADD4E7E38A16E7C085CB884CACA03789FFEE5F207C060988092
F7ABD629729C901A08A96CD761CA0F0EB52C943268A29B84544A48074B11F80B F4C5CB1011E1419DE50742AE79181E128DE871091818B2E3C6BD063CEA70A0BB
84AC88992D6E2B460000000049454E44AE426082 4F8721E7B30CB004755384B7BEA67D6FA234B9705135BE9DB65B5991F8022024
6F4372A841322C4E9C8EC6C133704A6E75677CC8344C352E456D7D23CE5DAD41
9F19A75B6FE2AC3E14C2DDDF71DB4712E8B3F7E38C7E1C505F0F54543C36CE32
B6C757153000FAF0186C4F4A88C520DDD7E779A4063C5467C4CCC85CDCBA67C2
A9F29A8E7F7EC6076D26D5A8959693D3298F382F4A64B49BC9F8D9C0C6BD0042
45D28DD8E93A589D0DD0B1C421BFA647A4C36997505A598DABC5D86CEF4303DD
DB4DCBCE0F937D950103505186EACB4118F70208A164324C9ADA43196FA564D0
00CC8ECAC4B12B87D0DF869364FC01DDF7887BAD8CA29CAE5F7760212F90D640
C61F27A1DB863FBFFDAE2745969F94D1516C53BDB136E3243FC819442F18A4D5
C4D9190A64DC5BCA11B4E2684DF2214CEC402A24740409E06939FF1CA9E2385C
72C95A55806B8328A869F65BD947D82071A4CDDCC8C8CA62B269F355BFC17446
727F6BFA9C446C5C5248E1B5D0E93ACA318AB7A4C77B47F7AC61CA287123FD23
257264A868C838214AC82BDD41AD2E0836A62EC404290C6FAC4CC886B9E71AEA
CC47D504677DA5C7A632E260FA13CC3C20B2E1820D191E2D47C20351BF7A2766
CDDD841B9B97E5C1181689264B196BA0D091BBE43C1E5221BB07F04730F380C8
860A365CB021A3E241117CE939339AB31FCB9C367848BA0BC9C8BB9B96AFC1D2
592FE24EEB8FB079AC10F56A0454BAEF77016DB7709831298D6A9CFAF84B7390
9F91B4451D32D8B0F1CA3EB4FBEA016CB69A3D733262A323B12A2113C6D030DC
6D2F81C57647F59C3DC37A83A9854078E0FCFB14AA99A6487E6927E329F3909F
9554805BCD47B03AE12B7CFDE65A8AA144992A3CD5FB6447925A79B2A8C0E5B1
A16BA00EF75B2AE8BB53F39C1927805692B01A2AD2F69BD8C515D5E57320C9DA
8713C90B9097995888DA8787D51252B84008A350A6E89ED43633EA5DCC783F19
2FBF4175DD8DCB178AF016DD62F6C7409840D9CE8608364CB059C06B540E9430
C393821E52B39E8919A949F94DA2DE852E32CE24BA9396037E265663DC72AC90
223A668E9FE0D1045FD062AC6360443FCB3BA488EAC8082A59C8F45C1D75902B
35946D03A829DF83D7B9E7BD5E7F7C01901A2A512DC762FEC41730237AA2462D
3B98B5596AC5900C3E56885652ECB3938EBF47D256554BD96E81CB5C85CFAE1D
C2416EBC7BF85C28F8E90F914C9E5377A2382D0DA933E2344ABFA7570D8967B4
3F6117B45C71D87B71DD7207E74C27709153DEC9C5CE1D682C77F3E603DECF8B
D3B3911A1F4F6D9342707617720248B3C2CF607DA48FAF7E1E7325D8F702CF70
10E455B1B49E1A8B16B006EFDE2897CCE5DAC13F95E77DD51279975C9CB61B55
EB0EAA074D1ECB7739214810948A98C63D3107C1C09802F0862A8CBFCC0E3DC7
6CE0F7FA5780010015A12AA4DE4975590000000049454E44AE426082
} }
end end
object RecurrenceEndsLbl: TLabel object RecurrenceEndsLbl: TLabel
@ -431,8 +517,6 @@ object DlgEventEdit: TDlgEventEdit
Top = 55 Top = 55
Width = 100 Width = 100
CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames] CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
OKCaption = 'OK'
CancelCaption = 'Cancel'
DateOrder = doNone DateOrder = doNone
ButtonWidth = 23 ButtonWidth = 23
Glyph.Data = { Glyph.Data = {
@ -494,39 +578,82 @@ object DlgEventEdit: TDlgEventEdit
ClientWidth = 677 ClientWidth = 677
TabOrder = 2 TabOrder = 2
object ImgAlarm: TImage object ImgAlarm: TImage
Left = 13 Left = 8
Height = 25 Height = 32
Top = 5 Top = 5
Width = 23 Width = 32
Picture.Data = { Picture.Data = {
1754506F727461626C654E6574776F726B47726170686963E002000089504E47 1754506F727461626C654E6574776F726B477261706869633E08000089504E47
0D0A1A0A0000000D49484452000000100000001008060000001FF3FF61000002 0D0A1A0A0000000D4948445200000020000000200806000000737A7AF4000000
A74944415478DA95925B48D36118C685AE82826E0A821D6DFB5B6E2D4FA98545 1974455874536F6674776172650041646F626520496D616765526561647971C9
9AB5B28BA0A88CF04282A80B233148C5B26645782A47A6094B4971289B9339E7 653C000007E04944415478DAC4576B8C5C65197ECE3973BFEDECCE4EF7D29669
D40DE9346613358F9B3A9B5BDA0E364F34B5914FDF028751665D3CF07DF03EBF 0BDB6E29629A16114B09FCA83192188D26CA0FE01F3626266A888AF2871F2DFA
EF7DDFEF090210F43F1A69A2548372AECF501AACF0DF373628A9ED2625154A8C 4381621B13909806636A822620B595082128599AD2B25BA5DBED65DBDDEEEECC
DB4C4A6E9E5515017773225AF2D8BE0D019616EA3931DA8615D41C79F5BB4DBD CEEEDC76E6DC2F3EDF9933EDBAB4B61288D3BC3DD3ED77BEE779DFF779DEEF5B
1FFAC7EC157D111FF21C56D3BA0062E48EAAA945674F1A965C5A2C3B5B31DB95 C9F33CFC3F3F21F19724499F368EF4FEEFBFF5A56C2A72B89370BD657E6DDB43
0E57533C06CAC3A0CC65E5AED6FEC97CD6DA7100EEA17C7C73A931D77D1E9E37 875E0D7D0A60CAC86F1ED81356BCEF8562D9A824C930B50A14B7E6E40A43E81A
09702A787034C6C0A1390AB58865FA0D408C3B89DAA78CC958B0D661C9FE1273 CCC0AC3680F1DA9FB836F14912908EECBBF7AE5C5AFE63777F61F59AE17B1009
C624CCBC8DC7B4EE20DC9A48B85402B8B427D155CCF10500A32A8A4B8C5364D6 03AEDB82EC6A58983DAF9C3BF12FACD3D622978F019E5FF578E813034EC92F44
1577FF1DF8668DF86AB90FB75E08A7EE30269B633056BB1776191FCE46D245EB 93E93BD76E7E00E9DE3E78560396A902FA341CA8C8E6A2886F2D60E2E4143C33
09743C085E0E0086E55CADBBEF1C961D12782732E135A562B1FF0C5CAFE2315A 0F498EF812F8B804A4BF3CB763433A267F2516C19E48BC2B3EB0E97EF40EDE06
1F8EA14A1E3E9451B04A437E8E31A53E8EC66C962D00E8ABE24CCE5BAE61DE22 DBACC3156137E1A9E390080F250CC9B39148C551D8BC1A97CF95F1C2AB338F70
C2FB1A3E7AEB433158178D3122A7261AC6120EBA9FEC82BD960377DB314CC8E2 1F3B74D3593EB7737D2619FAAA2CD99F0F49EE8391642E91ED1B42AEB00DF174
507793290B003A9F06578CA8E2E031E760A0E13454F762A1131F81B6808D8F32 1F41ABCCB802CF6EC1735578AD331477002E2B7E78928278320EDB32B0FFD0D8
013CAD61E813B3619130E1684944CF331E6AAE3384BF2CF175315BDF238D205D 08F755AF4740FAF32F770CADCA2A2FCA70B6B361F118DB168BBAE8D9B21BA9FC
6443714B00AFB5105F7A33A1C9E7A3B3888199668A0058641F2440B7D99EB5BF 10C2F12EB8060109ECE88B709D25C021B0C7683273C9267884C0B20F2E88989A
1638B43D649B0D55E130BCB880715D06BCE3228CA82EA224652B7477776041C9 C9754EC7757C01C6B50848AF3FF385CF0DF67823B76C7F183D1B76716396539F
85ADE110A43798837F04F84502D2A02BDE87B6C258283279D09725A0F4D2163C 83553D0EB7F57748660A36FF78560D60AF3D0A0D226BCF20F8E920F3ABE09212
4ADA8C6E310D166914AAAED227D605F825CF6609E5594CE849E2EC8653F8FC4E 826351094D0DB174B243C065782B09C86F1ED8F9684F57F4A58D3BBF8B786E98
0883640F3EA977A3B74C808ACBF4CEBF025625CD608AA4E90CE80A78305747C1 D995B8941B53B572E6B39093C3308B6F887711CEDFEB83921D49F0A99DFF0838
5C1989A6AC1094A6D044FF04F0AB3A8DB14972859E539E4A778A5368D325C9B4 08EE51099AAAC3B63DB46A2A2CDB5BF88F417415FCBE4773D9C44B9BBEB807D1
7671328DB5B6E607EA5FBE1E3353EA940000000049454E44AE426082 44171C96D773743FE08AB0182622F9ED70B422CCB95710CADC4E906420383BE8
79002E87FCA75A6F519C0EC2D130AAA53A8E7D58F915F12CBFDC6232B124D28B
4F6EDF74D7E6AED31B773C8C6854215E195272089E92A1B0D8025B10D0982DAB
2188881638145C63CCFF2E29513FDB8EE0C090430AF496015D337C02FC21C64F
5D3C7FFFEEB71FE43FA6185AA702E1AD1B7BDE1E18886061F42066A61B887344
AC1A4CA167ED1094EC366E9A61D308CA0A50797E489E0B294592C63453C1B2CC
09AE28ECBB0BCB70E0D82E92D90C2E8C9EC32B6FCE3E45BC4521C0E52D48C8B2
B42A9D51F0EEDFE6E1EFC1113A35D5447CB48C4D779CC5E0E6BB2145D771A9C3
BE0B0216312D1262656451C5AB990B22E2A9EB3AC16D5F3F061D305FD1DE7FFE
0F67FF1138C0F5FB1E10F0C79263F9EDE0780A211491F954281860EC4411EF1D
390A7B7184C49A5CE312D3F2ABE13925129145FA57C065BE6F1A2635C40A382E
E299144A937378ED9DB967095365985784B7DC02E1583830A2875038847822DA
8E640CF5AA81770E1F4363E6045F62EF45F6F63CC1151F5C42FB44957CD5CB30
5493AA17E5777C1DD4EBADF97D87CEBECB252DDF422B5DE0D24FA62947BB7B23
3C4412E8CEA5B925D7F9ED90582F0FEA520BA3236771EB161D831B06FCF73C01
EE671F1CE9AECBB5322CFADE66EF0501D1EED397967EC72F8D8EFA5756C09D2E
A9872B8B3A0AB7AD429233DB751D88AD3CD7E3776EC9AAA4BB52286CE8477DBE
8166AD058955923BE03E1152A6AB84DD62A92447AE8904CB5F9929E3172F4FBC
2C46EFF2EC9713D07FB86FF467B59A89C1753D88C664BF0D6243A9BD37DA326F
BF9B4CC751992E41AD524B21F90AB8BF904FDBD0902059415E6BAA5055ABF4E1
64A3D451FE35094C4C2DCDCECCAB6F958B2AFA0A5DFE792D8ADADE53EAECCDA7
F8B98B546F3722F1302CAA5B963B22947DA2A66E41AF37782C67A1370D4CCEB5
5E179EF72D741D02B6E8CFF79FF9E0C9E26C1361DE2452DD3172703F0A4EEF47
D309E487EF44A4EF33309B35D83C600409A105430C1D5AC7D074CE2505A6AA61
EC5CFDE872E55F8B80F8A8672E2D5D3A3E5E7DFEE2850A06D7F72222AE347E2B
DAE0BECE482077CB6A20B30552FA56C4B279680BF3BEFA0DCE7B613FCBB46869
1BAD0A2F258685A77F7BFAD8B5CABF9280A842EDB1BDC77FBDB0A85D989DAE61
60A8DF0714BDF075863699486E40D88627E32CA4442FC2B24D3D54383B221CB9
3609B4A35AAE6149B5C783F2DB3722806061E9BE6FBFF55079AE014DB3B06A5D
BF38307CF1FA2DF0DDC6CB855186A77108698B905929BD5242249968DB8F5510
443C3A49513822DBE0DECD107003AF5E7EE2C0A9AF4F9D29F1E21143BED01FFC
37498438806B04D6993D6F401247B1A9DB98BE340F5B6DD082519804374DC31F
4EBAE1CE74C6EECD10403028168F8E144FBC71ACB867E2E44528BC0EF5AE1B08
F42063E1FC045AE56934AB554C8E5FC2E9D14968ECB5D5AAD3195156C082C9E9
27FAFF83673FF8E9CAE173230208145B7EFCB9D18347468A4F4F9CB840A52B18
18DEC87B82B8523B68968AB4DA2245A723918EA1BB274159386894AB307482F3
F87D62FFA96F8C9EAD5D1436BFEE6533B80F5C8F5C9231B0EBEEBEAD7B77DF71
70707D5F6470680D8C660346A3EE5B509CF952701467D7DF8EC9B1F39C9435FC
68FFA96FFE75A4F81EDF2F5ECF013722D0211167E419AB0FEDBDE727C385CC97
736BF2E8E9EF453CDFDD7689B08827A33A55C4C5B109FCF8C03F05F8B165E0DE
C72510CC60FFB8CE32FA0AFD89D54F3DB6E591A135A95DB1A89CBBB235572D36
CC53DFF9F9C9C7CF5D6E9E116EBA11F8CD12B8F23B9FB8B830320CA60ECE6B44
038208C66C23005E087474C35FBDFF1702CB89C402F0E5975A2FC858FB6FAA5F
F9F9B7000300BF7ACAD5D4ACB2C90000000049454E44AE426082
} }
end end
object AlarmSet: TCheckBox object AlarmSet: TCheckBox
Left = 38 Left = 47
Height = 19 Height = 19
Top = 7 Top = 7
Width = 74 Width = 74

View File

@ -638,7 +638,17 @@ const
VBEVELDIST = 8; VBEVELDIST = 8;
var var
w, h: Integer; w, h: Integer;
cnv: TControlCanvas;
editHeight: Integer;
begin begin
editHeight := startDate.Height; //ScaleY(startDate.Height, DesigntimeDPI);
startDate.ButtonWidth := editHeight;
endDate.ButtonWidth := editHeight;
{$IFDEF NEW_TIME_EDIT}
startTime.ButtonWidth := editHeight;
endTime.ButtonWidth := editHeight;
{$ENDIF}
// This is needed as workaround for the combobox height at higher dpi. // This is needed as workaround for the combobox height at higher dpi.
// We design it with Style csDropdown where the height is correct, and then // We design it with Style csDropdown where the height is correct, and then
// use the corresponding, correct ItemHeight after switching to csOwnerDrawFixed // use the corresponding, correct ItemHeight after switching to csOwnerDrawFixed
@ -651,6 +661,8 @@ begin
// Position controls according to label widths // Position controls according to label widths
w := MaxValue([GetLabelWidth(DescriptionLbl), GetLabelWidth(LocationLbl), GetLabelWidth(StartTimeLbl), GetLabelWidth(EndTimeLbl)]); w := MaxValue([GetLabelWidth(DescriptionLbl), GetLabelWidth(LocationLbl), GetLabelWidth(StartTimeLbl), GetLabelWidth(EndTimeLbl)]);
if w < GetlabelWidth(StartTimeLbl) + imgClock.Picture.Width + DELTA then
w := GetLabelWidth(StartTimeLbl) + imgClock.Picture.Width + DELTA;
DescriptionEdit.Left := w + 2*DELTA; DescriptionEdit.Left := w + 2*DELTA;
DescriptionEdit.Width := PanelDescription.ClientWidth - DescriptionEdit.Left - DELTA; DescriptionEdit.Width := PanelDescription.ClientWidth - DescriptionEdit.Left - DELTA;
DescriptionLbl.Left := DescriptionEdit.Left - GetLabelWidth(DescriptionLbl) - DELTA; DescriptionLbl.Left := DescriptionEdit.Left - GetLabelWidth(DescriptionLbl) - DELTA;
@ -658,6 +670,19 @@ begin
LocationEdit.Left := DescriptionEdit.Left; LocationEdit.Left := DescriptionEdit.Left;
LocationLbl.Left := LocationEdit.Left - GetLabelWidth(LocationLbl) - DELTA; LocationLbl.Left := LocationEdit.Left - GetLabelWidth(LocationLbl) - DELTA;
cnv := TControlCanvas.Create;
try
cnv.Control := startDate;
cnv.Font.Assign(startDate.Font);
w := cnv.TextWidth('99.99.9999') + startDate.ButtonWidth + 10;
finally
cnv.Free;
end;;
StartDate.Width := w;
EndDate.Width := w;
StartTime.Width := w;
EndTime.Width := w;
StartDate.Left := DescriptionEdit.Left; StartDate.Left := DescriptionEdit.Left;
StartTimeLbl.Left := StartDate.Left - GetLabelWidth(StartTimeLbl) - DELTA; StartTimeLbl.Left := StartDate.Left - GetLabelWidth(StartTimeLbl) - DELTA;
@ -667,13 +692,13 @@ begin
StartTime.Left := StartDate.Left + StartDate.Width + DELTA; StartTime.Left := StartDate.Left + StartDate.Width + DELTA;
EndTime.Left := StartTime.Left; EndTime.Left := StartTime.Left;
CbAllDay.Left := ImgClock.Left + ImgClock.Picture.Width + DELTA; CbAllDay.Left := StartDate.Left; //ImgClock.Left + ImgClock.Picture.Width + DELTA;
AlarmSet.Left := ImgAlarm.Left + ImgAlarm.Picture.Width + DELTA; AlarmSet.Left := ImgAlarm.Left + ImgAlarm.Picture.Width + DELTA;
Bevel3.Left := StartTime.Left + StartTime.Width + 2*DELTA; Bevel3.Left := StartTime.Left + StartTime.Width + 2*DELTA;
ImgRecurring.Left := Bevel3.Left + Bevel3.Width + 2*DELTA; ImgRecurring.Left := Bevel3.Left + Bevel3.Width + 2*DELTA;
RecurringType.Left := ImgRecurring.Left; RecurringType.Left := RightOf(ImgRecurring) + DELTA;
RecurringLbl.Left := ImgRecurring.Left + ImgRecurring.Picture.Width + DELTA; RecurringLbl.Left := ImgRecurring.Left + ImgRecurring.Picture.Width + DELTA;
w := Max( w := Max(
@ -682,7 +707,7 @@ begin
); );
if w > RecurringType.Width then RecurringType.Width := w; if w > RecurringType.Width then RecurringType.Width := w;
RepeatUntil.Left := RecurringType.Left + Recurringtype.Width - RepeatUntil.Width; RepeatUntil.Left := RightOf(RecurringType) - RepeatUntil.Width;
RecurrenceEndsLbl.Left := RepeatUntil.Left - DELTA - GetLabelWIdth(RecurrenceEndsLbl); RecurrenceEndsLbl.Left := RepeatUntil.Left - DELTA - GetLabelWIdth(RecurrenceEndsLbl);
w := GetLabelWidth(IntervalLbl); w := GetLabelWidth(IntervalLbl);
@ -692,7 +717,7 @@ begin
IntervalUpdown.Left := FCustomInterval.Left + FCustomInterval.Width; IntervalUpdown.Left := FCustomInterval.Left + FCustomInterval.Width;
IntervalLbl.Left := FCustomInterval.Left; IntervalLbl.Left := FCustomInterval.Left;
LocationEdit.Width := Bevel3.Left - LocationEdit.Left; LocationEdit.Width := Bevel3.Left - LocationEdit.Left - DELTA;
if AlarmSet.Left + AlarmSet.Width + DELTA < StartDate.Left + StartDate.Width - AdvanceUpdown.Width - AlarmAdvance.Width then if AlarmSet.Left + AlarmSet.Width + DELTA < StartDate.Left + StartDate.Width - AdvanceUpdown.Width - AlarmAdvance.Width then
begin begin
@ -707,9 +732,13 @@ begin
Width := RightOf(IntervalUpdown) + DELTA + Width - AppointmentGroupbox.ClientWidth; Width := RightOf(IntervalUpdown) + DELTA + Width - AppointmentGroupbox.ClientWidth;
CategoryLbl.Left := Bevel3.Left + Bevel3.Width + DELTA;
Category.Left := CategoryLbl.Left + GetLabelWidth(CategoryLbl) + DELTA;
Category.Width := RightOf(DescriptionEdit) - Category.Left;
{
Category.Left := DescriptionEdit.Left + DescriptionEdit.Width - category.Width; Category.Left := DescriptionEdit.Left + DescriptionEdit.Width - category.Width;
CategoryLbl.Left := Category.Left - DELTA - GetLabelWidth(CategoryLbl); CategoryLbl.Left := Category.Left - DELTA - GetLabelWidth(CategoryLbl);
}
// *** Vertical positions *** // *** Vertical positions ***
DescriptionEdit.Top := VDELTA; DescriptionEdit.Top := VDELTA;
DescriptionLbl.Top := DescriptionEdit.Top + (DescriptionEdit.Height - DescriptionLbl.Height) div 2; DescriptionLbl.Top := DescriptionEdit.Top + (DescriptionEdit.Height - DescriptionLbl.Height) div 2;
@ -719,9 +748,7 @@ begin
Category.Top := LocationEdit.Top; Category.Top := LocationEdit.Top;
PanelDescription.ClientHeight := BottomOf(LocationEdit) + VDIST; PanelDescription.ClientHeight := BottomOf(LocationEdit) + VDIST;
// Bevel1.Top := BottomOf(LocationEdit) + VBEVELDIST; imgClock.Top := VDELTA;
imgClock.Top := VDELTA; //Bevel1.Top + 2 + VBEVELDIST;
CbAllDay.Top := imgClock.Top; CbAllDay.Top := imgClock.Top;
imgRecurring.Top := imgClock.Top; imgRecurring.Top := imgClock.Top;
@ -751,21 +778,27 @@ begin
SoundFinderBtn.Height := AlarmAdvanceType.Height; SoundFinderBtn.Height := AlarmAdvanceType.Height;
SoundFinderBtn.Width := SoundFinderBtn.Height; SoundFinderBtn.Width := SoundFinderBtn.Height;
SoundFinderBtn.Top := AlarmAdvanceType.Top; SoundFinderBtn.Top := AlarmAdvanceType.Top;
PanelAlarm.ClientHeight := BottomOf(AlarmAdvance) + VDIST; PanelAlarm.ClientHeight := Max(BottomOf(ImgAlarm), BottomOf(AlarmAdvance)) + VDIST;
OKBtn.Width := Max(GetButtonWidth(OKBtn), GetButtonWidth(CancelBtn)); OKBtn.Width := Max(GetButtonWidth(OKBtn), GetButtonWidth(CancelBtn));
CancelBtn.Width := OKBtn.Width; CancelBtn.Width := OKBtn.Width;
CancelBtn.Left := ButtonPanel.ClientWidth - ResourcenameLbl.Left - CancelBtn.Width; CancelBtn.Left := ButtonPanel.ClientWidth - ResourcenameLbl.Left - CancelBtn.Width;
OKBtn.Left := CancelBtn.Left - DELTA - OKBtn.Width; OKBtn.Left := CancelBtn.Left - DELTA - OKBtn.Width;
ResourceNameLbl.Font.Size := ScaleY(ResourceNameLbl.Font.Size, DesignTimeDPI);
ResourceNameLbl.Top := (ButtonPanel.ClientHeight - Panel1.BorderWidth - ResourceNameLbl.Height) div 2; ResourceNameLbl.Top := (ButtonPanel.ClientHeight - Panel1.BorderWidth - ResourceNameLbl.Height) div 2;
OKBtn.Top := (ButtonPanel.ClientHeight - Panel1.BorderWidth - OKBtn.Height) div 2; OKBtn.Top := (ButtonPanel.ClientHeight - Panel1.BorderWidth - OKBtn.Height) div 2;
CancelBtn.Top := OKBtn.Top; CancelBtn.Top := OKBtn.Top;
OKBtn.Height := ScaleY(OKBtn.Height, DesigntimeDPI);
CancelBtn.Height := OKBtn.Height;
ButtonPanel.ClientHeight := OKBtn.Height + Bevel4.Height;
ResourceNameLbl.Top := OKBtn.Top + (OKBtn.Height - ResourceNameLbl.Height) div 2;
NotesMemo.Top := BottomOf(AppointmentGroupbox) + Bevel4.Height; NotesMemo.Top := BottomOf(AppointmentGroupbox) + Bevel4.Height;
NotesMemo.Width := AppointmentGroupbox.Width; NotesMemo.Width := AppointmentGroupbox.Width;
NotesMemo.Left := AppointmentGroupbox.Left; NotesMemo.Left := AppointmentGroupbox.Left;
ClientHeight := AppointmentGroupbox.Height + Bevel4.Height + NotesMemo.Height + ButtonPanel.Height; ClientHeight := AppointmentGroupbox.Height + Bevel4.Height + ScaleY(NotesMemo.Height, DesignTimeDPI) + ButtonPanel.Height;
end; end;

View File

@ -173,6 +173,7 @@ begin
ReturnCode := rtAbandon; ReturnCode := rtAbandon;
SetCaptions; SetCaptions;
Toolbar1.ButtonHeight := ScaleY(Toolbar1.ButtonHeight, DesignTimeDPI); Toolbar1.ButtonHeight := ScaleY(Toolbar1.ButtonHeight, DesignTimeDPI);
Toolbar1.ButtonWidth := Toolbar1.ButtonHeight;
end; end;
procedure TfrmPrintPreview.SetCaptions; procedure TfrmPrintPreview.SetCaptions;

View File

@ -1,13 +1,13 @@
object ResEditForm: TResEditForm object ResEditForm: TResEditForm
Left = 280 Left = 280
Height = 250 Height = 302
Top = 234 Top = 234
Width = 400 Width = 455
HorzScrollBar.Page = 399 HorzScrollBar.Page = 399
VertScrollBar.Page = 249 VertScrollBar.Page = 249
Caption = 'Resource Edit' Caption = 'Resource Edit'
ClientHeight = 250 ClientHeight = 302
ClientWidth = 400 ClientWidth = 455
Constraints.MinHeight = 250 Constraints.MinHeight = 250
Constraints.MinWidth = 400 Constraints.MinWidth = 400
OnCreate = FormCreate OnCreate = FormCreate
@ -16,15 +16,15 @@ object ResEditForm: TResEditForm
object pnlBottom: TPanel object pnlBottom: TPanel
Left = 0 Left = 0
Height = 41 Height = 41
Top = 209 Top = 261
Width = 400 Width = 455
Align = alBottom Align = alBottom
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 41 ClientHeight = 41
ClientWidth = 400 ClientWidth = 455
TabOrder = 1 TabOrder = 1
object OKBtn: TButton object OKBtn: TButton
Left = 236 Left = 291
Height = 25 Height = 25
Top = 7 Top = 7
Width = 75 Width = 75
@ -36,7 +36,7 @@ object ResEditForm: TResEditForm
TabStop = False TabStop = False
end end
object CancelBtn: TButton object CancelBtn: TButton
Left = 315 Left = 370
Height = 25 Height = 25
Top = 7 Top = 7
Width = 75 Width = 75
@ -50,9 +50,9 @@ object ResEditForm: TResEditForm
end end
object pgResource: TPageControl object pgResource: TPageControl
Left = 0 Left = 0
Height = 209 Height = 261
Top = 0 Top = 0
Width = 400 Width = 455
TabStop = False TabStop = False
ActivePage = tabResource ActivePage = tabResource
Align = alClient Align = alClient
@ -60,8 +60,8 @@ object ResEditForm: TResEditForm
TabOrder = 0 TabOrder = 0
object tabResource: TTabSheet object tabResource: TTabSheet
Caption = 'Resource' Caption = 'Resource'
ClientHeight = 181 ClientHeight = 233
ClientWidth = 392 ClientWidth = 447
object lblDescription: TLabel object lblDescription: TLabel
Left = 8 Left = 8
Height = 15 Height = 15
@ -79,7 +79,7 @@ object ResEditForm: TResEditForm
ParentColor = False ParentColor = False
end end
object imgResources: TImage object imgResources: TImage
Left = 350 Left = 405
Height = 32 Height = 32
Top = 15 Top = 15
Width = 32 Width = 32
@ -114,7 +114,7 @@ object ResEditForm: TResEditForm
Left = 80 Left = 80
Height = 23 Height = 23
Top = 20 Top = 20
Width = 257 Width = 318
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
MaxLength = 255 MaxLength = 255
OnChange = Change OnChange = Change
@ -122,9 +122,9 @@ object ResEditForm: TResEditForm
end end
object NotesMemo: TMemo object NotesMemo: TMemo
Left = 8 Left = 8
Height = 102 Height = 154
Top = 67 Top = 67
Width = 374 Width = 429
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
MaxLength = 1024 MaxLength = 1024
OnChange = Change OnChange = Change

View File

@ -216,25 +216,32 @@ end;
procedure TResEditForm.PositionControls; procedure TResEditForm.PositionControls;
var var
Delta: Integer; HDelta: Integer = 8;
VDelta: Integer = 8;
begin begin
delta := round(8 *Screen.PixelsPerInch / DesignTimeDPI); HDelta := ScaleX(HDelta, DesignTimeDPI);
VDelta := ScaleY(VDelta, DesignTimeDPI);
DescriptionEdit.Left := lblDescription.Left + GetLabelWidth(lblDescription) + Delta; DescriptionEdit.Left := lblDescription.Left + GetLabelWidth(lblDescription) + HDelta;
DescriptionEdit.Width := imgResources.Left - delta - delta - DescriptionEdit.Left; DescriptionEdit.Width := imgResources.Left - 2*HDelta - DescriptionEdit.Left;
DescriptionEdit.Top := imgResources.Top + (imgResources.Height - DescriptionEdit.Height) div 2; DescriptionEdit.Top := imgResources.Top; // + (imgResources.Height - DescriptionEdit.Height) div 2;
lblDescription.Top := DescriptionEdit.Top + (DescriptionEdit.Height - lblDescription.Height) div 2; lblDescription.Top := DescriptionEdit.Top + (DescriptionEdit.Height - lblDescription.Height) div 2;
lblNotes.Top := BottomOf(DescriptionEdit) + delta; lblNotes.Top := BottomOf(DescriptionEdit) + VDelta;
NotesMemo.Top := BottomOf(lblNotes) + delta div 2; NotesMemo.Top := BottomOf(lblNotes) + VDelta;
NotesMemo.Height := tabResource.ClientHeight - NotesMemo.Top - NotesMemo.Left; ClientHeight := ClientHeight + ScaleY(NotesMemo.Height, DesignTimeDPI) - NotesMemo.Height;
NotesMemo.Height := tabResource.ClientHeight - NotesMemo.Top - VDelta;
OKBtn.Height := ScaleY(OKBtn.Height, DesignTimeDPI);
CancelBtn.Height := OKBtn.Height;
pnlBottom.Height := VDelta + OKBtn.Height + VDelta;
OKBtn.Top := VDelta;
CancelBtn.Top := VDelta;
OKBtn.Width := Max(GetButtonWidth(OKBtn), GetButtonWidth(CancelBtn)); OKBtn.Width := Max(GetButtonWidth(OKBtn), GetButtonWidth(CancelBtn));
CancelBtn.Width := OKBtn.Width; CancelBtn.Width := OKBtn.Width;
CancelBtn.Left := pnlBottom.ClientWidth - lblDescription.Left - CancelBtn.Width; CancelBtn.Left := pnlBottom.ClientWidth - lblDescription.Left - CancelBtn.Width;
OKBtn.Left := CancelBtn.Left - OKBtn.Width - delta - (ClientWidth - tabResource.ClientWidth); OKBtn.Left := CancelBtn.Left - OKBtn.Width - HDelta; // - (ClientWidth - tabResource.ClientWidth);
OKBtn.Top := (pnlBottom.ClientHeight - OKBtn.Height) div 2;
CancelBtn.Top := OKBtn.Top;
end; end;
procedure TResEditForm.OKBtnClick(Sender: TObject); procedure TResEditForm.OKBtnClick(Sender: TObject);

View File

@ -1,15 +1,13 @@
object TaskEditForm: TTaskEditForm object TaskEditForm: TTaskEditForm
Left = 243 Left = 243
Height = 340 Height = 378
Top = 283 Top = 283
Width = 547 Width = 547
HorzScrollBar.Page = 545 HorzScrollBar.Page = 545
VertScrollBar.Page = 339 VertScrollBar.Page = 339
Caption = 'TaskEditForm' Caption = 'TaskEditForm'
ClientHeight = 340 ClientHeight = 378
ClientWidth = 547 ClientWidth = 547
Constraints.MinHeight = 340
Constraints.MinWidth = 545
OnCreate = FormCreate OnCreate = FormCreate
OnShow = FormShow OnShow = FormShow
Position = poScreenCenter Position = poScreenCenter
@ -17,7 +15,7 @@ object TaskEditForm: TTaskEditForm
object ButtonPanel: TPanel object ButtonPanel: TPanel
Left = 0 Left = 0
Height = 37 Height = 37
Top = 303 Top = 341
Width = 547 Width = 547
Align = alBottom Align = alBottom
BevelOuter = bvNone BevelOuter = bvNone
@ -27,9 +25,8 @@ object TaskEditForm: TTaskEditForm
object ResourceNameLbl: TLabel object ResourceNameLbl: TLabel
Left = 6 Left = 6
Height = 16 Height = 16
Top = 10 Top = 8
Width = 100 Width = 100
AutoSize = False
Caption = 'Resource Name' Caption = 'Resource Name'
Font.CharSet = ANSI_CHARSET Font.CharSet = ANSI_CHARSET
Font.Color = clMaroon Font.Color = clMaroon
@ -64,7 +61,7 @@ object TaskEditForm: TTaskEditForm
end end
object PageControl1: TPageControl object PageControl1: TPageControl
Left = 0 Left = 0
Height = 303 Height = 341
Top = 0 Top = 0
Width = 547 Width = 547
TabStop = False TabStop = False
@ -74,7 +71,7 @@ object TaskEditForm: TTaskEditForm
TabOrder = 0 TabOrder = 0
object tabTask: TTabSheet object tabTask: TTabSheet
Caption = 'Task' Caption = 'Task'
ClientHeight = 275 ClientHeight = 313
ClientWidth = 539 ClientWidth = 539
object DueDateLbl: TLabel object DueDateLbl: TLabel
Left = 52 Left = 52
@ -270,7 +267,7 @@ object TaskEditForm: TTaskEditForm
end end
object DetailsMemo: TMemo object DetailsMemo: TMemo
Left = 4 Left = 4
Height = 146 Height = 208
Top = 96 Top = 96
Width = 529 Width = 529
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
@ -283,13 +280,11 @@ object TaskEditForm: TTaskEditForm
TabOrder = 3 TabOrder = 3
end end
object DueDateEdit: TDateEdit object DueDateEdit: TDateEdit
Left = 126 Left = 128
Height = 23 Height = 23
Top = 41 Top = 41
Width = 103 Width = 103
CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames] CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
OKCaption = 'OK'
CancelCaption = 'Cancel'
DateOrder = doNone DateOrder = doNone
ButtonWidth = 23 ButtonWidth = 23
Glyph.Data = { Glyph.Data = {

View File

@ -157,37 +157,74 @@ end;
procedure TTaskEditForm.PositionControls; procedure TTaskEditForm.PositionControls;
var var
VBevelDist: Integer; // Distance bevel-to-control VBevelDist: Integer = 8; // Distance bevel-to-control
VDist: Integer; // Vertical distance between controls VDist: Integer = 8; // Vertical distance between controls
HDist: Integer; // Horizontal distance between controls: HDist: Integer = 8; // Horizontal distance between controls:
w: Integer;
cnv: TControlCanvas;
cb: TCheckbox;
editHeight: Integer;
begin begin
VBevelDist := round(8 * Screen.PixelsPerInch / DesignTimeDPI); VBevelDist := ScaleY(VBevelDist, DesignTimeDPI);
VDist := round(8 * Screen.PixelsPerInch / DesignTimeDPI); VDist := ScaleY(VDist, DesignTimeDPI);
HDist := round(8 * Screen.PixelsPerInch / DesignTimeDPI); HDist := ScaleX(HDist, DesignTimeDPI);
editHeight := ScaleY(DueDateEdit.Height, DesignTimeDPI);
OKBtn.Height := ScaleY(OKBtn.Height, DesignTimeDPI);
OKBtn.Top := VDist;
CancelBtn.Height := OKBtn.Height;
CancelBtn.Top := OKBtn.Top;
ButtonPanel.Height := OKBtn.Height + VDIST*2;
ResourceNameLbl.Font.Size := ScaleY(ResourceNameLbl.Font.Size, DesignTimeDPI);
ResourceNameLbl.Top := OKBtn.Top + (OKBtn.Height - ScaleY(ResourceNameLbl.Height, DesignTimeDPI)) div 2;
DueDateEdit.ButtonWidth := ScaleX(DueDateEdit.Height, DesigntimeDPI);
DueDateEdit.Left := DueDateLbl.Left + GetLabelWidth(DueDateLbl) + HDist; DueDateEdit.Left := DueDateLbl.Left + GetLabelWidth(DueDateLbl) + HDist;
cnv := TControlCanvas.Create;
try
cnv.Control := DueDateEdit;
cnv.Font.Assign(DueDateEdit.Font);
w := cnv.TextWidth(' 99-99-9999 ') + DueDateEdit.ButtonWidth + 10;
finally
cnv.Free;
end;
DueDateEdit.Width := w;
if RightOf(DueDateEdit) + 3*HDist > ImgCompleted.Left then begin
ImgCompleted.Left := RightOf(DueDateEdit) + 3*HDist;
CompleteCB.Left := RightOf(ImgCompleted) + HDist;
CompletedOnLbl.Left := CompleteCB.Left;
cnv := TControlCanvas.Create;
try
cnv.Control := CompleteCB;
cnv.Font.Assign(CompleteCB.Font);
w := cnv.TextWidth(CompleteCB.Caption) + GetSystemMetrics(SM_CXMENUCHECK);
finally
cnv.Free;
end;
w := Max(GetlabelWidth(CompletedOnLbl), w);
ClientWidth := ClientWidth - tabTask.ClientWidth + CompleteCB.Left + w + HDist*2;
end;
OKBtn.Width := Max(GetButtonWidth(OKBtn), GetButtonWidth(CancelBtn)); OKBtn.Width := Max(GetButtonWidth(OKBtn), GetButtonWidth(CancelBtn));
CancelBtn.Width := OKBtn.Width; CancelBtn.Width := OKBtn.Width;
CancelBtn.Left := ButtonPanel.ClientWidth - ResourcenameLbl.Left - CancelBtn.Width; CancelBtn.Left := ButtonPanel.ClientWidth - ResourcenameLbl.Left - CancelBtn.Width;
OKBtn.Left := CancelBtn.Left - HDist - OKBtn.Width; OKBtn.Left := CancelBtn.Left - HDist - OKBtn.Width;
Bevel1.Top := BottomOf(DescriptionEdit) + VBevelDist; Bevel1.Top := DescriptionEdit.Top + editHeight + VBevelDist; //BottomOf(DescriptionEdit) + VBevelDist;
ImgCalendar.Top := Bevel1.Top + 2 + VBevelDist; ImgCalendar.Top := Bevel1.Top + 2 + VBevelDist;
ImgCompleted.Top := ImgCalendar.Top; ImgCompleted.Top := ImgCalendar.Top;
DueDateEdit.Top := ImgCalendar.Top + (ImgCalendar.Height - DueDateEdit.Height) div 2; DueDateEdit.Top := ImgCalendar.Top; // + (ImgCalendar.Height - DueDateEdit.Height) div 2;
DueDateLbl.Top := DueDateEdit.Top + (DueDateEdit.Height - DueDateLbl.Height) div 2; DueDateLbl.Top := DueDateEdit.Top + (DueDateEdit.Height - DueDateLbl.Height) div 2;
CompleteCB.Top := ImgCompleted.Top + (ImgCompleted.Height - CompleteCB.Height) div 2; CompleteCB.Top := ImgCompleted.Top; // + (ImgCompleted.Height - CompleteCB.Height) div 2;
CreatedOnLbl.Top := BottomOf(DueDateEdit) + VDist; CreatedOnLbl.Top := DueDateEdit.Top + editHeight + VDist; //BottomOf(DueDateEdit) + VDist;
CompletedOnLbl.Top := CreatedOnLbl.Top; CompletedOnLbl.Top := CreatedOnLbl.Top;
DetailsMemo.Top := BottomOf(CreatedOnLbl) + VBevelDist; DetailsMemo.Top := BottomOf(CreatedOnLbl) + VBevelDist;
DetailsMemo.Height := tabTask.ClientHeight - DetailsMemo.Top - DescriptionEdit.Top; DetailsMemo.Height := tabTask.ClientHeight - DetailsMemo.Top - DescriptionEdit.Top;
OKBtn.Top := (ButtonPanel.Height - OKBtn.Height) div 2;
CancelBtn.Top := OKBtn.Top;
ResourceNameLbl.Top := (ButtonPanel.Height - ResourceNameLbl.Height) div 2;
end; end;
{=====} {=====}

View File

@ -27,30 +27,32 @@ object FrmSoundDialog: TFrmSoundDialog
ClientHeight = 446 ClientHeight = 446
ClientWidth = 728 ClientWidth = 728
object RightPanel: TPanel object RightPanel: TPanel
Left = 395 Left = 209
Height = 446 Height = 446
Top = 0 Top = 0
Width = 333 Width = 519
Align = alRight Align = alClient
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 446 ClientHeight = 446
ClientWidth = 333 ClientWidth = 519
TabOrder = 2 TabOrder = 1
object Panel1: TPanel object Panel1: TPanel
Left = 0 Left = 0
Height = 34 Height = 27
Top = 0 Top = 0
Width = 333 Width = 519
Align = alTop Align = alTop
AutoSize = True
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 34 ClientHeight = 27
ClientWidth = 333 ClientWidth = 519
TabOrder = 0 TabOrder = 0
object CBDefault: TCheckBox object CBDefault: TCheckBox
Left = 8 Left = 4
Height = 19 Height = 19
Top = 8 Top = 4
Width = 73 Width = 73
BorderSpacing.Around = 4
Caption = 'CBDefault' Caption = 'CBDefault'
OnClick = CBDefaultClick OnClick = CBDefaultClick
TabOrder = 0 TabOrder = 0
@ -60,14 +62,14 @@ object FrmSoundDialog: TFrmSoundDialog
Left = 0 Left = 0
Height = 38 Height = 38
Top = 408 Top = 408
Width = 333 Width = 519
Align = alBottom Align = alBottom
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 38 ClientHeight = 38
ClientWidth = 333 ClientWidth = 519
TabOrder = 2 TabOrder = 2
object PlayButton: TSpeedButton object PlayButton: TSpeedButton
Left = 8 Left = 4
Height = 25 Height = 25
Top = 8 Top = 8
Width = 29 Width = 29
@ -93,7 +95,7 @@ object FrmSoundDialog: TFrmSoundDialog
OnClick = PlayButtonClick OnClick = PlayButtonClick
end end
object OkBtn: TButton object OkBtn: TButton
Left = 170 Left = 356
Height = 25 Height = 25
Top = 8 Top = 8
Width = 75 Width = 75
@ -105,7 +107,7 @@ object FrmSoundDialog: TFrmSoundDialog
TabOrder = 0 TabOrder = 0
end end
object CancelBtn: TButton object CancelBtn: TButton
Left = 250 Left = 436
Height = 25 Height = 25
Top = 8 Top = 8
Width = 75 Width = 75
@ -119,9 +121,9 @@ object FrmSoundDialog: TFrmSoundDialog
end end
object ShellListView: TShellListView object ShellListView: TShellListView
Left = 0 Left = 0
Height = 374 Height = 381
Top = 34 Top = 27
Width = 329 Width = 515
Align = alClient Align = alClient
BorderSpacing.Right = 4 BorderSpacing.Right = 4
Color = clDefault Color = clDefault
@ -157,22 +159,32 @@ object FrmSoundDialog: TFrmSoundDialog
end end
end end
object Splitter1: TSplitter object Splitter1: TSplitter
Left = 390 Left = 204
Height = 446 Height = 446
Top = 0 Top = 0
Width = 5 Width = 5
Align = alRight
ResizeAnchor = akRight
end end
object ShellTreeView: TShellTreeView object Panel4: TPanel
Left = 4 Left = 4
Height = 438 Height = 438
Top = 4 Top = 4
Width = 386 Width = 200
Align = alClient Align = alLeft
BorderSpacing.Left = 4 BorderSpacing.Left = 4
BorderSpacing.Top = 4 BorderSpacing.Top = 4
BorderSpacing.Bottom = 4 BorderSpacing.Bottom = 4
BevelOuter = bvNone
BorderStyle = bsSingle
ClientHeight = 434
ClientWidth = 196
Constraints.MinWidth = 200
TabOrder = 2
object ShellTreeView: TShellTreeView
Left = 4
Height = 306
Top = 136
Width = 180
BorderStyle = bsNone
FileSortType = fstNone FileSortType = fstNone
ReadOnly = True ReadOnly = True
TabOrder = 0 TabOrder = 0
@ -180,22 +192,11 @@ object FrmSoundDialog: TFrmSoundDialog
ObjectTypes = [otFolders] ObjectTypes = [otFolders]
ShellListView = ShellListView ShellListView = ShellListView
end end
object Panel4: TPanel
Left = 61
Height = 90
Top = 110
Width = 170
BevelOuter = bvNone
BorderStyle = bsSingle
ClientHeight = 86
ClientWidth = 166
TabOrder = 3
object Label4: TLabel object Label4: TLabel
Left = 0 Left = 0
Height = 86 Height = 86
Top = 0 Top = 16
Width = 166 Width = 166
Align = alClient
Alignment = taCenter Alignment = taCenter
AutoSize = False AutoSize = False
Caption = 'Nothing to select from' Caption = 'Nothing to select from'

View File

@ -105,7 +105,7 @@ begin
ShellTreeview.Visible := not CBDefault.Checked; ShellTreeview.Visible := not CBDefault.Checked;
ShellListview.Visible := not CBDefault.Checked; ShellListview.Visible := not CBDefault.Checked;
Panel3.Visible := CBDefault.Checked; Panel3.Visible := CBDefault.Checked;
Panel4.Visible := CBDefault.Checked; Label4.Visible := CBDefault.Checked;
PlayButton.Visible := not CBDefault.Checked; PlayButton.Visible := not CBDefault.Checked;
end; end;
{=====} {=====}
@ -126,7 +126,9 @@ end;
procedure TFrmSoundDialog.FormCreate(Sender: TObject); procedure TFrmSoundDialog.FormCreate(Sender: TObject);
begin begin
Panel3.Align := alClient; Panel3.Align := alClient;
Panel4.Align := alClient; Panel4.Align := alLeft;
ShellTreeView.Align := alClient;
Label4.Align := alClient;
end; end;
{=====} {=====}
@ -159,6 +161,7 @@ end;
procedure TFrmSoundDialog.Populate; procedure TFrmSoundDialog.Populate;
var var
DIST: Integer = 8; DIST: Integer = 8;
VDIST: Integer = 8;
HBORDER: Integer = 8; HBORDER: Integer = 8;
begin begin
TabSheet1.Caption := RSSelectASound; TabSheet1.Caption := RSSelectASound;
@ -170,7 +173,16 @@ begin
Label4.Caption := RSNothingToSelectFrom; Label4.Caption := RSNothingToSelectFrom;
DIST := ScaleX(DIST, DesignTimeDPI); DIST := ScaleX(DIST, DesignTimeDPI);
VDist := ScaleY(VDist, DesignTimeDPI);
HBORDER := ScaleX(HBORDER, DesignTimeDPI); HBORDER := ScaleX(HBORDER, DesignTimeDPI);
OKBtn.Height := ScaleX(OKBtn.Height, DesignTimeDPI);
CancelBtn.Height := OKBtn.Height;
ButtonPanel.Height := VDist + OKBtn.Height + VDist;
OKBtn.Top := VDist;
CancelBtn.Top := VDist;
PlayButton.Top := (ButtonPanel.Height - PlayButton.Height) div 2;
OKBtn.Width := Max(GetButtonWidth(OKBtn), GetButtonWidth(CancelBtn)); OKBtn.Width := Max(GetButtonWidth(OKBtn), GetButtonWidth(CancelBtn));
CancelBtn.Width := OKBtn.Width; CancelBtn.Width := OKBtn.Width;
CancelBtn.Left := ButtonPanel.ClientWidth - HBORDER - CancelBtn.Width; CancelBtn.Left := ButtonPanel.ClientWidth - HBORDER - CancelBtn.Width;