tvplanit: Expose task priority and category in task editor. Update translations.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5170 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2016-09-17 15:14:53 +00:00
parent 05aad697c4
commit b7aa833a11
17 changed files with 844 additions and 157 deletions

View File

@ -1,6 +1,10 @@
This demo shows how a Firebird database can be used for VisualPlanIt. It This demo shows how a Firebird database can be used for VisualPlanIt. It
takes advantage of the prebuilt TVpFirefordDatastore. takes advantage of the prebuilt TVpFirefordDatastore.
Login parameters for the created database:
username: SYSDBA
password: masterkey
NOTE: NOTE:
The project creates a new database on the fly. For reasons unknown at the moment, The project creates a new database on the fly. For reasons unknown at the moment,
an exception is raised here if started from the IDE. This does not happen any an exception is raised here if started from the IDE. This does not happen any

View File

@ -267,7 +267,7 @@ begin
'CREATE TABLE Resources ( '+ 'CREATE TABLE Resources ( '+
'ResourceID COUNTER, ' + 'ResourceID COUNTER, ' +
'Description VARCHAR(255), '+ 'Description VARCHAR(255), '+
'Notes VARCHAR, '+ // 1024 --> - 'Notes VARCHAR, '+ // 1024 --> -
'ImageIndex INTEGER, '+ 'ImageIndex INTEGER, '+
'ResourceActive LOGICAL, '+ // BOOL --> LOGICAL 'ResourceActive LOGICAL, '+ // BOOL --> LOGICAL
'UserField0 VARCHAR(100), '+ 'UserField0 VARCHAR(100), '+

View File

@ -24,16 +24,19 @@
<FormatVersion Value="1"/> <FormatVersion Value="1"/>
</local> </local>
</RunParams> </RunParams>
<RequiredPackages Count="3"> <RequiredPackages Count="4">
<Item1> <Item1>
<PackageName Value="SQLDBLaz"/> <PackageName Value="FCL"/>
</Item1> </Item1>
<Item2> <Item2>
<PackageName Value="laz_visualplanit"/> <PackageName Value="SQLDBLaz"/>
</Item2> </Item2>
<Item3> <Item3>
<PackageName Value="LCL"/> <PackageName Value="laz_visualplanit"/>
</Item3> </Item3>
<Item4>
<PackageName Value="LCL"/>
</Item4>
</RequiredPackages> </RequiredPackages>
<Units Count="2"> <Units Count="2">
<Unit0> <Unit0>

View File

@ -54,6 +54,7 @@ object Form1: TForm1
Align = alClient Align = alClient
TabIndex = 0 TabIndex = 0
TabOrder = 1 TabOrder = 1
OnChange = PageControl1Change
object TabSheet1: TTabSheet object TabSheet1: TTabSheet
Caption = 'Events and tasks' Caption = 'Events and tasks'
ClientHeight = 624 ClientHeight = 624
@ -152,8 +153,12 @@ object Form1: TForm1
DayNameStyle = dsShort DayNameStyle = dsShort
DrawingStyle = dsFlat DrawingStyle = dsFlat
EventDayStyle = [] EventDayStyle = []
HeadAttributes.Color = clBtnFace
LineColor = clGray LineColor = clGray
TimeFormat = tf12Hour TimeFormat = tf12Hour
TodayAttributes.Color = clSilver
TodayAttributes.BorderPen.Color = clRed
TodayAttributes.BorderPen.Width = 3
OffDayColor = clSilver OffDayColor = clSilver
SelectedDayColor = clRed SelectedDayColor = clRed
ShowEvents = True ShowEvents = True
@ -244,6 +249,64 @@ object Form1: TForm1
DrawingStyle = dsFlat DrawingStyle = dsFlat
end end
end end
object TabSheet3: TTabSheet
Caption = 'Grids'
ClientHeight = 624
ClientWidth = 972
object DBNavigator: TDBNavigator
Left = 8
Height = 25
Top = 8
Width = 241
BevelOuter = bvNone
ChildSizing.EnlargeHorizontal = crsScaleChilds
ChildSizing.EnlargeVertical = crsScaleChilds
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 100
ClientHeight = 25
ClientWidth = 241
Options = []
TabOrder = 0
end
object Button1: TButton
Left = 264
Height = 25
Top = 8
Width = 120
Caption = 'Apply to planner'
TabOrder = 1
end
object TabControl1: TTabControl
Left = 8
Height = 577
Top = 39
Width = 960
OnChange = TabControl1Change
TabIndex = 0
Tabs.Strings = (
'Resources'
'Contacts'
'Events'
'Tasks'
)
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Around = 8
TabOrder = 2
object Grid: TDBGrid
Left = 2
Height = 552
Top = 23
Width = 956
Align = alClient
Color = clWindow
Columns = <>
Options = [dgEditing, dgTitles, dgIndicator, dgColumnResize, dgColumnMove, dgColLines, dgRowLines, dgTabs, dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit, dgThumbTracking]
TabOrder = 1
end
end
end
end end
object VpControlLink1: TVpControlLink object VpControlLink1: TVpControlLink
DataStore = VpSqlite3Datastore1 DataStore = VpSqlite3Datastore1
@ -292,11 +355,14 @@ object Form1: TForm1
CategoryColorMap.Category8.Description = 'Category 8' CategoryColorMap.Category8.Description = 'Category 8'
CategoryColorMap.Category9.Color = clMaroon CategoryColorMap.Category9.Color = clMaroon
CategoryColorMap.Category9.Description = 'Category 9' CategoryColorMap.Category9.Description = 'Category 9'
HiddenCategories.BackgroundColor = clSilver
HiddenCategories.Color = clGray
EnableEventTimer = True EnableEventTimer = True
PlayEventSounds = True PlayEventSounds = True
Connection = SQLite3Connection1 Connection = SQLite3Connection1
AutoConnect = False AutoConnect = False
AutoCreate = False AutoCreate = False
DayBuffer = 31
left = 136 left = 136
top = 192 top = 192
end end
@ -317,4 +383,345 @@ object Form1: TForm1
left = 256 left = 256
top = 120 top = 120
end end
object QryAllResources: TSQLQuery
PacketRecords = -1
FieldDefs = <
item
Name = 'ResourceID'
Attributes = [faReadonly]
DataType = ftAutoInc
Precision = -1
end
item
Name = 'Description'
DataType = ftString
Precision = -1
Size = 255
end
item
Name = 'Notes'
DataType = ftString
Precision = -1
Size = 255
end
item
Name = 'ImageIndex'
DataType = ftInteger
Precision = -1
end
item
Name = 'ResourceActive'
DataType = ftBoolean
Precision = -1
end
item
Name = 'UserField0'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'UserField1'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'UserField2'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'UserField3'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'UserField4'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'UserField5'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'UserField6'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'UserField7'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'UserField8'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'UserField9'
DataType = ftString
Precision = -1
Size = 100
end>
Database = SQLite3Connection1
Transaction = SQLTransaction1
SQL.Strings = (
'SELECT * FROM Resources'
)
Options = [sqoKeepOpenOnCommit, sqoAutoCommit]
Params = <>
UsePrimaryKeyAsKey = False
left = 560
top = 160
end
object QryAllContacts: TSQLQuery
PacketRecords = -1
FieldDefs = <
item
Name = 'RecordID'
Attributes = [faReadonly]
DataType = ftAutoInc
Precision = -1
end
item
Name = 'ResourceID'
DataType = ftInteger
Precision = -1
end
item
Name = 'FirstName'
DataType = ftString
Precision = -1
Size = 50
end
item
Name = 'LastName'
DataType = ftString
Precision = -1
Size = 50
end
item
Name = 'Birthdate'
DataType = ftDateTime
Precision = -1
end
item
Name = 'Anniversary'
DataType = ftDateTime
Precision = -1
end
item
Name = 'Title'
DataType = ftString
Precision = -1
Size = 50
end
item
Name = 'Company'
DataType = ftString
Precision = -1
Size = 50
end
item
Name = 'Job_Position'
DataType = ftString
Precision = -1
Size = 30
end
item
Name = 'Address'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'City'
DataType = ftString
Precision = -1
Size = 50
end
item
Name = 'State'
DataType = ftString
Precision = -1
Size = 25
end
item
Name = 'Zip'
DataType = ftString
Precision = -1
Size = 10
end
item
Name = 'Country'
DataType = ftString
Precision = -1
Size = 25
end
item
Name = 'Notes'
DataType = ftString
Precision = -1
Size = 255
end
item
Name = 'Phone1'
DataType = ftString
Precision = -1
Size = 25
end
item
Name = 'Phone2'
DataType = ftString
Precision = -1
Size = 25
end
item
Name = 'Phone3'
DataType = ftString
Precision = -1
Size = 25
end
item
Name = 'Phone4'
DataType = ftString
Precision = -1
Size = 25
end
item
Name = 'Phone5'
DataType = ftString
Precision = -1
Size = 25
end
item
Name = 'PhoneType1'
DataType = ftInteger
Precision = -1
end
item
Name = 'PhoneType2'
DataType = ftInteger
Precision = -1
end
item
Name = 'PhoneType3'
DataType = ftInteger
Precision = -1
end
item
Name = 'PhoneType4'
DataType = ftInteger
Precision = -1
end
item
Name = 'PhoneType5'
DataType = ftInteger
Precision = -1
end
item
Name = 'Category'
DataType = ftInteger
Precision = -1
end
item
Name = 'EMail'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'Custom1'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'Custom2'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'Custom3'
DataType = ftString
Precision = -1
Size = 100
end
item
Name = 'Custom4'
DataType = ftString
Precision = -1
Size = 100
end>
Database = SQLite3Connection1
Transaction = SQLTransaction1
SQL.Strings = (
'SELECT * FROM Contacts'
)
Options = [sqoKeepOpenOnCommit, sqoAutoCommit]
Params = <>
UsePrimaryKeyAsKey = False
left = 560
top = 214
end
object QryAllEvents: TSQLQuery
PacketRecords = -1
FieldDefs = <>
Database = SQLite3Connection1
Transaction = SQLTransaction1
SQL.Strings = (
'SELECT * FROM Events'
)
Options = [sqoKeepOpenOnCommit, sqoAutoCommit]
Params = <>
UsePrimaryKeyAsKey = False
left = 560
top = 274
end
object QryAllTasks: TSQLQuery
PacketRecords = -1
FieldDefs = <>
Database = SQLite3Connection1
Transaction = SQLTransaction1
SQL.Strings = (
'SELECT * FROM Tasks'
)
Options = [sqoKeepOpenOnCommit, sqoAutoCommit]
Params = <>
UsePrimaryKeyAsKey = False
left = 560
top = 341
end
object DsAllResources: TDataSource
DataSet = QryAllResources
left = 656
top = 160
end
object DsAllContacts: TDataSource
DataSet = QryAllContacts
left = 659
top = 214
end
object DsAllEvents: TDataSource
DataSet = QryAllEvents
left = 654
top = 274
end
object DsAllTasks: TDataSource
DataSet = QryAllTasks
left = 656
top = 341
end
end end

View File

@ -6,9 +6,9 @@ interface
uses uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
StdCtrls, ComCtrls, VpBaseDS, VpDayView, VpWeekView, VpTaskList, StdCtrls, ComCtrls, DbCtrls, DBGrids, VpBaseDS, VpDayView, VpWeekView,
VpContactGrid, VpMonthView, VpResEditDlg, VpContactButtons, VpSQLite3DS, VpTaskList, VpContactGrid, VpMonthView, VpResEditDlg, VpContactButtons,
sqlite3conn, sqldb, VpData; VpSQLite3DS, sqlite3conn, sqldb, db, VpData;
type type
@ -17,16 +17,29 @@ type
TForm1 = class(TForm) TForm1 = class(TForm)
BtnNewRes: TButton; BtnNewRes: TButton;
BtnEditRes: TButton; BtnEditRes: TButton;
Button1: TButton;
DBNavigator: TDBNavigator;
DsAllContacts: TDataSource;
DsAllEvents: TDataSource;
DsAllResources: TDataSource;
DsAllTasks: TDataSource;
Grid: TDBGrid;
PageControl1: TPageControl; PageControl1: TPageControl;
Panel1: TPanel; Panel1: TPanel;
Panel2: TPanel; Panel2: TPanel;
QryAllContacts: TSQLQuery;
QryAllEvents: TSQLQuery;
QryAllResources: TSQLQuery;
QryAllTasks: TSQLQuery;
Splitter1: TSplitter; Splitter1: TSplitter;
Splitter2: TSplitter; Splitter2: TSplitter;
Splitter3: TSplitter; Splitter3: TSplitter;
SQLite3Connection1: TSQLite3Connection; SQLite3Connection1: TSQLite3Connection;
SQLTransaction1: TSQLTransaction; SQLTransaction1: TSQLTransaction;
TabControl1: TTabControl;
TabSheet1: TTabSheet; TabSheet1: TTabSheet;
TabSheet2: TTabSheet; TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
VpContactButtonBar1: TVpContactButtonBar; VpContactButtonBar1: TVpContactButtonBar;
VpContactGrid1: TVpContactGrid; VpContactGrid1: TVpContactGrid;
VpControlLink1: TVpControlLink; VpControlLink1: TVpControlLink;
@ -40,6 +53,8 @@ type
procedure BtnNewResClick(Sender: TObject); procedure BtnNewResClick(Sender: TObject);
procedure BtnEditResClick(Sender: TObject); procedure BtnEditResClick(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure TabControl1Change(Sender: TObject);
private private
{ private declarations } { private declarations }
public public
@ -99,5 +114,32 @@ begin
end; end;
end; end;
procedure TForm1.PageControl1Change(Sender: TObject);
begin
if PageControl1.PageIndex = 2 then TabControl1Change(nil);
end;
procedure TForm1.TabControl1Change(Sender: TObject);
var
i: Integer;
Datasource: TDataSource;
begin
DsAllResources.Dataset.Close;
DsAllContacts.Dataset.Close;
DsAllEvents.Dataset.Close;
DsAllTasks.Dataset.Close;
case TabControl1.TabIndex of
0: Grid.Datasource := DsAllResources;
1: Grid.Datasource := DsAllContacts;
2: Grid.Datasource := DsAllEvents;
3: Grid.Datasource := DsAllTasks;
end;
DBNavigator.Datasource := Grid.Datasource;
Grid.Datasource.Dataset.Open;
for i:=0 to Grid.Columns.Count-1 do
Grid.Columns[i].Width := 100;;
end;
end. end.

View File

@ -173,6 +173,11 @@ msgstr "Kategorie"
msgid "Category %d" msgid "Category %d"
msgstr "Kategorie %d" msgstr "Kategorie %d"
#: vpsr.rscategorylabel
msgctxt "vpsr.rscategorylabel"
msgid "Category:"
msgstr "Kategorie:"
#: vpsr.rscategorylabel1 #: vpsr.rscategorylabel1
msgctxt "vpsr.rscategorylabel1" msgctxt "vpsr.rscategorylabel1"
msgid "Business" msgid "Business"
@ -197,6 +202,7 @@ msgid "Other"
msgstr "Andere" msgstr "Andere"
#: vpsr.rscategorylbl #: vpsr.rscategorylbl
msgctxt "vpsr.rscategorylbl"
msgid "Category:" msgid "Category:"
msgstr "Kategorie:" msgstr "Kategorie:"
@ -329,7 +335,8 @@ msgctxt "vpsr.rsdescriptionlbl"
msgid "Description:" msgid "Description:"
msgstr "Beschreibung:" msgstr "Beschreibung:"
#: vpsr.rsdetails #: vpsr.rsdetailslabel
msgctxt "vpsr.rsdetailslabel"
msgid "Details:" msgid "Details:"
msgstr "Details:" msgstr "Details:"
@ -364,9 +371,10 @@ msgstr "Beschreibung"
msgid "Task" msgid "Task"
msgstr "Aufgabe" msgstr "Aufgabe"
#: vpsr.rsduedate #: vpsr.rsduedatelabel
msgctxt "vpsr.rsduedatelabel"
msgid "Due date:" msgid "Due date:"
msgstr "Fälligkeitsdatum:" msgstr "Fällig am:"
#: vpsr.rsduplicateresource #: vpsr.rsduplicateresource
msgid "Error: Duplicate resource." msgid "Error: Duplicate resource."
@ -478,6 +486,10 @@ msgstr "Von Ihrem Zeitplan?"
msgid "Height" msgid "Height"
msgstr "Höhe" msgstr "Höhe"
#: vpsr.rshigh
msgid "High"
msgstr "Hoch"
#: vpsr.rshomeaddress #: vpsr.rshomeaddress
msgid "Home address" msgid "Home address"
msgstr "Zuhause" msgstr "Zuhause"
@ -565,6 +577,10 @@ msgstr "Ort"
msgid "Location:" msgid "Location:"
msgstr "Ort:" msgstr "Ort:"
#: vpsr.rslow
msgid "Low"
msgstr "Niedrig"
#: vpsr.rslsaturday #: vpsr.rslsaturday
msgctxt "vpsr.rslsaturday" msgctxt "vpsr.rslsaturday"
msgid "S" msgid "S"
@ -707,6 +723,10 @@ msgstr "keine"
msgid "No print formats have been defined" msgid "No print formats have been defined"
msgstr "Es sind keine Druckformate definiert." msgstr "Es sind keine Druckformate definiert."
#: vpsr.rsnormal
msgid "Normal"
msgstr "Normal"
#: vpsr.rsnotdoneyet #: vpsr.rsnotdoneyet
msgid "This feature is not implemented at this time." msgid "This feature is not implemented at this time."
msgstr "Dieses Feature ist zur Zeit nicht implementiert." msgstr "Dieses Feature ist zur Zeit nicht implementiert."
@ -980,6 +1000,10 @@ msgstr "&Drucken"
msgid "Print" msgid "Print"
msgstr "Drucken" msgstr "Drucken"
#: vpsr.rsprioritylabel
msgid "Priority:"
msgstr "Priorität:"
#: vpsr.rsprtcontrolowner #: vpsr.rsprtcontrolowner
msgid "Print controller is not owned by a TVpControlLink!" msgid "Print controller is not owned by a TVpControlLink!"
msgstr "Print Controll hat nicht TVpControlLink als Owner" msgstr "Print Controll hat nicht TVpControlLink als Owner"

View File

@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n" "POT-Creation-Date: \n"
"PO-Revision-Date: 2016-09-12 22:32+0200\n" "PO-Revision-Date: 2016-09-17 17:11+0200\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"Language: fr_FR\n" "Language: fr_FR\n"
@ -130,7 +130,6 @@ msgid "Brush"
msgstr "" msgstr ""
#: vpsr.rsbusinesswebsitelabel #: vpsr.rsbusinesswebsitelabel
#, fuzzy
msgctxt "vpsr.rsbusinesswebsitelabel" msgctxt "vpsr.rsbusinesswebsitelabel"
msgid "Business" msgid "Business"
msgstr "Professionnel" msgstr "Professionnel"
@ -180,6 +179,11 @@ msgstr "Catégorie"
msgid "Category %d" msgid "Category %d"
msgstr "Catégorie %d" msgstr "Catégorie %d"
#: vpsr.rscategorylabel
msgctxt "vpsr.rscategorylabel"
msgid "Category:"
msgstr "Catégorie:"
#: vpsr.rscategorylabel1 #: vpsr.rscategorylabel1
msgctxt "vpsr.rscategorylabel1" msgctxt "vpsr.rscategorylabel1"
msgid "Business" msgid "Business"
@ -204,6 +208,7 @@ msgid "Other"
msgstr "Autre" msgstr "Autre"
#: vpsr.rscategorylbl #: vpsr.rscategorylbl
msgctxt "vpsr.rscategorylbl"
msgid "Category:" msgid "Category:"
msgstr "Catégorie:" msgstr "Catégorie:"
@ -336,7 +341,8 @@ msgctxt "vpsr.rsdescriptionlbl"
msgid "Description:" msgid "Description:"
msgstr "Sujet:" msgstr "Sujet:"
#: vpsr.rsdetails #: vpsr.rsdetailslabel
msgctxt "vpsr.rsdetailslabel"
msgid "Details:" msgid "Details:"
msgstr "Détails:" msgstr "Détails:"
@ -359,8 +365,6 @@ msgid "Print preview"
msgstr "Aperçu avant impression" msgstr "Aperçu avant impression"
#: vpsr.rsdlgreseditcaption #: vpsr.rsdlgreseditcaption
#, fuzzy
#| msgid "Resource Edit"
msgid "Resource edit" msgid "Resource edit"
msgstr "Modifier la resource" msgstr "Modifier la resource"
@ -373,9 +377,8 @@ msgstr "Déscription"
msgid "Task" msgid "Task"
msgstr "Tache" msgstr "Tache"
#: vpsr.rsduedate #: vpsr.rsduedatelabel
#, fuzzy msgctxt "vpsr.rsduedatelabel"
#| msgid "Due Date:"
msgid "Due date:" msgid "Due date:"
msgstr "Date d'échéance:" msgstr "Date d'échéance:"
@ -489,18 +492,20 @@ msgstr "de votre agenda?"
msgid "Height" msgid "Height"
msgstr "" msgstr ""
#: vpsr.rshigh
msgid "High"
msgstr ""
#: vpsr.rshomeaddress #: vpsr.rshomeaddress
msgid "Home address" msgid "Home address"
msgstr "" msgstr ""
#: vpsr.rshomeaddresslabel #: vpsr.rshomeaddresslabel
#, fuzzy
msgctxt "vpsr.rshomeaddresslabel" msgctxt "vpsr.rshomeaddresslabel"
msgid "Home" msgid "Home"
msgstr "Maison" msgstr "Maison"
#: vpsr.rshomeemaillabel #: vpsr.rshomeemaillabel
#, fuzzy
msgctxt "vpsr.rshomeemaillabel" msgctxt "vpsr.rshomeemaillabel"
msgid "Home" msgid "Home"
msgstr "Maison" msgstr "Maison"
@ -578,6 +583,10 @@ msgstr ""
msgid "Location:" msgid "Location:"
msgstr "Lieu:" msgstr "Lieu:"
#: vpsr.rslow
msgid "Low"
msgstr ""
#: vpsr.rslsaturday #: vpsr.rslsaturday
msgctxt "vpsr.rslsaturday" msgctxt "vpsr.rslsaturday"
msgid "S" msgid "S"
@ -720,6 +729,10 @@ msgstr ""
msgid "No print formats have been defined" msgid "No print formats have been defined"
msgstr "Formats d'impression non-défini" msgstr "Formats d'impression non-défini"
#: vpsr.rsnormal
msgid "Normal"
msgstr ""
#: vpsr.rsnotdoneyet #: vpsr.rsnotdoneyet
msgid "This feature is not implemented at this time." msgid "This feature is not implemented at this time."
msgstr "Cette fonctionnalité n'est pas mise en œuvre à ce moment" msgstr "Cette fonctionnalité n'est pas mise en œuvre à ce moment"
@ -759,7 +772,6 @@ msgid "&Open Item"
msgstr "&Item ouvert" msgstr "&Item ouvert"
#: vpsr.rsotheremaillabel #: vpsr.rsotheremaillabel
#, fuzzy
msgctxt "vpsr.rsotheremaillabel" msgctxt "vpsr.rsotheremaillabel"
msgid "Other" msgid "Other"
msgstr "Autre" msgstr "Autre"
@ -797,7 +809,6 @@ msgid "This operation cannot be undone!"
msgstr "Ce processus est irreversible!" msgstr "Ce processus est irreversible!"
#: vpsr.rspersonalwebsitelabel #: vpsr.rspersonalwebsitelabel
#, fuzzy
msgctxt "vpsr.rspersonalwebsitelabel" msgctxt "vpsr.rspersonalwebsitelabel"
msgid "Personal" msgid "Personal"
msgstr "Personnel" msgstr "Personnel"
@ -995,6 +1006,10 @@ msgstr "&Imprimer"
msgid "Print" msgid "Print"
msgstr "Imprimer" msgstr "Imprimer"
#: vpsr.rsprioritylabel
msgid "Priority:"
msgstr ""
#: vpsr.rsprtcontrolowner #: vpsr.rsprtcontrolowner
msgid "Print controller is not owned by a TVpControlLink!" msgid "Print controller is not owned by a TVpControlLink!"
msgstr "Le contrôleur d'impression n'est pas la propriété d'un TVpControlLink!" msgstr "Le contrôleur d'impression n'est pas la propriété d'un TVpControlLink!"
@ -1243,13 +1258,11 @@ msgid "Work address"
msgstr "" msgstr ""
#: vpsr.rsworkaddresslabel #: vpsr.rsworkaddresslabel
#, fuzzy
msgctxt "vpsr.rsworkaddresslabel" msgctxt "vpsr.rsworkaddresslabel"
msgid "Work" msgid "Work"
msgstr "Travail" msgstr "Travail"
#: vpsr.rsworkemaillabel #: vpsr.rsworkemaillabel
#, fuzzy
msgctxt "vpsr.rsworkemaillabel" msgctxt "vpsr.rsworkemaillabel"
msgid "Work" msgid "Work"
msgstr "Travail" msgstr "Travail"
@ -1578,4 +1591,3 @@ msgstr "Spécificateur d'axe inconnu"
#: vpsr.sxmldecnotatbeg #: vpsr.sxmldecnotatbeg
msgid "The XML declaration must appear before the first element" msgid "The XML declaration must appear before the first element"
msgstr "La déclaration XML doit apparaître avant le premier élément" msgstr "La déclaration XML doit apparaître avant le premier élément"

View File

@ -124,7 +124,6 @@ msgid "Brush"
msgstr "" msgstr ""
#: vpsr.rsbusinesswebsitelabel #: vpsr.rsbusinesswebsitelabel
#, fuzzy
msgctxt "vpsr.rsbusinesswebsitelabel" msgctxt "vpsr.rsbusinesswebsitelabel"
msgid "Business" msgid "Business"
msgstr "Zakelijk" msgstr "Zakelijk"
@ -174,6 +173,11 @@ msgstr "Categorie"
msgid "Category %d" msgid "Category %d"
msgstr "Categorie %d" msgstr "Categorie %d"
#: vpsr.rscategorylabel
msgctxt "vpsr.rscategorylabel"
msgid "Category:"
msgstr "Categorie:"
#: vpsr.rscategorylabel1 #: vpsr.rscategorylabel1
msgctxt "vpsr.rscategorylabel1" msgctxt "vpsr.rscategorylabel1"
msgid "Business" msgid "Business"
@ -198,6 +202,7 @@ msgid "Other"
msgstr "Anders" msgstr "Anders"
#: vpsr.rscategorylbl #: vpsr.rscategorylbl
msgctxt "vpsr.rscategorylbl"
msgid "Category:" msgid "Category:"
msgstr "Categorie:" msgstr "Categorie:"
@ -330,7 +335,8 @@ msgctxt "vpsr.rsdescriptionlbl"
msgid "Description:" msgid "Description:"
msgstr "Onderwerp:" msgstr "Onderwerp:"
#: vpsr.rsdetails #: vpsr.rsdetailslabel
msgctxt "vpsr.rsdetailslabel"
msgid "Details:" msgid "Details:"
msgstr "Details:" msgstr "Details:"
@ -353,8 +359,6 @@ msgid "Print preview"
msgstr "Afdruk voorbeeld" msgstr "Afdruk voorbeeld"
#: vpsr.rsdlgreseditcaption #: vpsr.rsdlgreseditcaption
#, fuzzy
#| msgid "Resource Edit"
msgid "Resource edit" msgid "Resource edit"
msgstr "Middel bewerken" msgstr "Middel bewerken"
@ -367,9 +371,8 @@ msgstr "Omschrijving"
msgid "Task" msgid "Task"
msgstr "Taak" msgstr "Taak"
#: vpsr.rsduedate #: vpsr.rsduedatelabel
#, fuzzy msgctxt "vpsr.rsduedatelabel"
#| msgid "Due Date:"
msgid "Due date:" msgid "Due date:"
msgstr "Vervaldatum:" msgstr "Vervaldatum:"
@ -483,18 +486,20 @@ msgstr "van uw tijdschema?"
msgid "Height" msgid "Height"
msgstr "" msgstr ""
#: vpsr.rshigh
msgid "High"
msgstr ""
#: vpsr.rshomeaddress #: vpsr.rshomeaddress
msgid "Home address" msgid "Home address"
msgstr "" msgstr ""
#: vpsr.rshomeaddresslabel #: vpsr.rshomeaddresslabel
#, fuzzy
msgctxt "vpsr.rshomeaddresslabel" msgctxt "vpsr.rshomeaddresslabel"
msgid "Home" msgid "Home"
msgstr "Thuis" msgstr "Thuis"
#: vpsr.rshomeemaillabel #: vpsr.rshomeemaillabel
#, fuzzy
msgctxt "vpsr.rshomeemaillabel" msgctxt "vpsr.rshomeemaillabel"
msgid "Home" msgid "Home"
msgstr "Thuis" msgstr "Thuis"
@ -572,6 +577,10 @@ msgstr ""
msgid "Location:" msgid "Location:"
msgstr "Plaats:" msgstr "Plaats:"
#: vpsr.rslow
msgid "Low"
msgstr ""
#: vpsr.rslsaturday #: vpsr.rslsaturday
msgctxt "vpsr.rslsaturday" msgctxt "vpsr.rslsaturday"
msgid "S" msgid "S"
@ -714,6 +723,10 @@ msgstr ""
msgid "No print formats have been defined" msgid "No print formats have been defined"
msgstr "Er zijn geen afdrukformaten gedefinieerd." msgstr "Er zijn geen afdrukformaten gedefinieerd."
#: vpsr.rsnormal
msgid "Normal"
msgstr ""
#: vpsr.rsnotdoneyet #: vpsr.rsnotdoneyet
msgid "This feature is not implemented at this time." msgid "This feature is not implemented at this time."
msgstr "Dit onderdeel is nog niet geimplementeerd." msgstr "Dit onderdeel is nog niet geimplementeerd."
@ -753,7 +766,6 @@ msgid "&Open Item"
msgstr "&Open Item" msgstr "&Open Item"
#: vpsr.rsotheremaillabel #: vpsr.rsotheremaillabel
#, fuzzy
msgctxt "vpsr.rsotheremaillabel" msgctxt "vpsr.rsotheremaillabel"
msgid "Other" msgid "Other"
msgstr "Andere" msgstr "Andere"
@ -791,7 +803,6 @@ msgid "This operation cannot be undone!"
msgstr "Deze operatie kan niet ongedaan gemaakt worden!" msgstr "Deze operatie kan niet ongedaan gemaakt worden!"
#: vpsr.rspersonalwebsitelabel #: vpsr.rspersonalwebsitelabel
#, fuzzy
msgctxt "vpsr.rspersonalwebsitelabel" msgctxt "vpsr.rspersonalwebsitelabel"
msgid "Personal" msgid "Personal"
msgstr "Persoonlijk" msgstr "Persoonlijk"
@ -989,6 +1000,10 @@ msgstr "&Afdrukken"
msgid "Print" msgid "Print"
msgstr "Afdrukken" msgstr "Afdrukken"
#: vpsr.rsprioritylabel
msgid "Priority:"
msgstr ""
#: vpsr.rsprtcontrolowner #: vpsr.rsprtcontrolowner
msgid "Print controller is not owned by a TVpControlLink!" msgid "Print controller is not owned by a TVpControlLink!"
msgstr "Print Controller heeft niet TVpControlLink als Owner" msgstr "Print Controller heeft niet TVpControlLink als Owner"
@ -1237,13 +1252,11 @@ msgid "Work address"
msgstr "" msgstr ""
#: vpsr.rsworkaddresslabel #: vpsr.rsworkaddresslabel
#, fuzzy
msgctxt "vpsr.rsworkaddresslabel" msgctxt "vpsr.rsworkaddresslabel"
msgid "Work" msgid "Work"
msgstr "Werk" msgstr "Werk"
#: vpsr.rsworkemaillabel #: vpsr.rsworkemaillabel
#, fuzzy
msgctxt "vpsr.rsworkemaillabel" msgctxt "vpsr.rsworkemaillabel"
msgid "Work" msgid "Work"
msgstr "Werk" msgstr "Werk"
@ -1572,4 +1585,3 @@ msgstr "Onbekende as specificatie: %s"
#: vpsr.sxmldecnotatbeg #: vpsr.sxmldecnotatbeg
msgid "The XML declaration must appear before the first element" msgid "The XML declaration must appear before the first element"
msgstr "De XML declaratie moet voor het eerste element staan" msgstr "De XML declaratie moet voor het eerste element staan"

View File

@ -163,6 +163,11 @@ msgstr ""
msgid "Category %d" msgid "Category %d"
msgstr "" msgstr ""
#: vpsr.rscategorylabel
msgctxt "vpsr.rscategorylabel"
msgid "Category:"
msgstr ""
#: vpsr.rscategorylabel1 #: vpsr.rscategorylabel1
msgctxt "vpsr.rscategorylabel1" msgctxt "vpsr.rscategorylabel1"
msgid "Business" msgid "Business"
@ -187,6 +192,7 @@ msgid "Other"
msgstr "" msgstr ""
#: vpsr.rscategorylbl #: vpsr.rscategorylbl
msgctxt "vpsr.rscategorylbl"
msgid "Category:" msgid "Category:"
msgstr "" msgstr ""
@ -319,7 +325,8 @@ msgctxt "vpsr.rsdescriptionlbl"
msgid "Description:" msgid "Description:"
msgstr "" msgstr ""
#: vpsr.rsdetails #: vpsr.rsdetailslabel
msgctxt "vpsr.rsdetailslabel"
msgid "Details:" msgid "Details:"
msgstr "" msgstr ""
@ -354,7 +361,8 @@ msgstr ""
msgid "Task" msgid "Task"
msgstr "" msgstr ""
#: vpsr.rsduedate #: vpsr.rsduedatelabel
msgctxt "vpsr.rsduedatelabel"
msgid "Due date:" msgid "Due date:"
msgstr "" msgstr ""
@ -468,6 +476,10 @@ msgstr ""
msgid "Height" msgid "Height"
msgstr "" msgstr ""
#: vpsr.rshigh
msgid "High"
msgstr ""
#: vpsr.rshomeaddress #: vpsr.rshomeaddress
msgid "Home address" msgid "Home address"
msgstr "" msgstr ""
@ -555,6 +567,10 @@ msgstr ""
msgid "Location:" msgid "Location:"
msgstr "" msgstr ""
#: vpsr.rslow
msgid "Low"
msgstr ""
#: vpsr.rslsaturday #: vpsr.rslsaturday
msgctxt "vpsr.rslsaturday" msgctxt "vpsr.rslsaturday"
msgid "S" msgid "S"
@ -697,6 +713,10 @@ msgstr ""
msgid "No print formats have been defined" msgid "No print formats have been defined"
msgstr "" msgstr ""
#: vpsr.rsnormal
msgid "Normal"
msgstr ""
#: vpsr.rsnotdoneyet #: vpsr.rsnotdoneyet
msgid "This feature is not implemented at this time." msgid "This feature is not implemented at this time."
msgstr "" msgstr ""
@ -970,6 +990,10 @@ msgstr ""
msgid "Print" msgid "Print"
msgstr "" msgstr ""
#: vpsr.rsprioritylabel
msgid "Priority:"
msgstr ""
#: vpsr.rsprtcontrolowner #: vpsr.rsprtcontrolowner
msgid "Print controller is not owned by a TVpControlLink!" msgid "Print controller is not owned by a TVpControlLink!"
msgstr "" msgstr ""

View File

@ -124,7 +124,6 @@ msgid "Brush"
msgstr "" msgstr ""
#: vpsr.rsbusinesswebsitelabel #: vpsr.rsbusinesswebsitelabel
#, fuzzy
msgctxt "vpsr.rsbusinesswebsitelabel" msgctxt "vpsr.rsbusinesswebsitelabel"
msgid "Business" msgid "Business"
msgstr "Дела" msgstr "Дела"
@ -174,6 +173,11 @@ msgstr "Категория"
msgid "Category %d" msgid "Category %d"
msgstr "Категория %d" msgstr "Категория %d"
#: vpsr.rscategorylabel
msgctxt "vpsr.rscategorylabel"
msgid "Category:"
msgstr "Категория:"
#: vpsr.rscategorylabel1 #: vpsr.rscategorylabel1
msgctxt "vpsr.rscategorylabel1" msgctxt "vpsr.rscategorylabel1"
msgid "Business" msgid "Business"
@ -198,6 +202,7 @@ msgid "Other"
msgstr "Другое" msgstr "Другое"
#: vpsr.rscategorylbl #: vpsr.rscategorylbl
msgctxt "vpsr.rscategorylbl"
msgid "Category:" msgid "Category:"
msgstr "Категория:" msgstr "Категория:"
@ -330,7 +335,8 @@ msgctxt "vpsr.rsdescriptionlbl"
msgid "Description:" msgid "Description:"
msgstr "Описание:" msgstr "Описание:"
#: vpsr.rsdetails #: vpsr.rsdetailslabel
msgctxt "vpsr.rsdetailslabel"
msgid "Details:" msgid "Details:"
msgstr "Детали:" msgstr "Детали:"
@ -353,8 +359,6 @@ msgid "Print preview"
msgstr "Предварительный просмотр печати" msgstr "Предварительный просмотр печати"
#: vpsr.rsdlgreseditcaption #: vpsr.rsdlgreseditcaption
#, fuzzy
#| msgid "Resource Edit"
msgid "Resource edit" msgid "Resource edit"
msgstr "Редактор ресурсов" msgstr "Редактор ресурсов"
@ -367,9 +371,8 @@ msgstr "Описание"
msgid "Task" msgid "Task"
msgstr "Задача" msgstr "Задача"
#: vpsr.rsduedate #: vpsr.rsduedatelabel
#, fuzzy msgctxt "vpsr.rsduedatelabel"
#| msgid "Due Date:"
msgid "Due date:" msgid "Due date:"
msgstr "Срок:" msgstr "Срок:"
@ -483,18 +486,20 @@ msgstr "из вашего расписания?"
msgid "Height" msgid "Height"
msgstr "Высота" msgstr "Высота"
#: vpsr.rshigh
msgid "High"
msgstr ""
#: vpsr.rshomeaddress #: vpsr.rshomeaddress
msgid "Home address" msgid "Home address"
msgstr "" msgstr ""
#: vpsr.rshomeaddresslabel #: vpsr.rshomeaddresslabel
#, fuzzy
msgctxt "vpsr.rshomeaddresslabel" msgctxt "vpsr.rshomeaddresslabel"
msgid "Home" msgid "Home"
msgstr "Домашний" msgstr "Домашний"
#: vpsr.rshomeemaillabel #: vpsr.rshomeemaillabel
#, fuzzy
msgctxt "vpsr.rshomeemaillabel" msgctxt "vpsr.rshomeemaillabel"
msgid "Home" msgid "Home"
msgstr "Домашний" msgstr "Домашний"
@ -572,6 +577,10 @@ msgstr ""
msgid "Location:" msgid "Location:"
msgstr "Расположение:" msgstr "Расположение:"
#: vpsr.rslow
msgid "Low"
msgstr ""
#: vpsr.rslsaturday #: vpsr.rslsaturday
msgctxt "vpsr.rslsaturday" msgctxt "vpsr.rslsaturday"
msgid "S" msgid "S"
@ -714,6 +723,10 @@ msgstr ""
msgid "No print formats have been defined" msgid "No print formats have been defined"
msgstr "Не определён формат печати" msgstr "Не определён формат печати"
#: vpsr.rsnormal
msgid "Normal"
msgstr ""
#: vpsr.rsnotdoneyet #: vpsr.rsnotdoneyet
msgid "This feature is not implemented at this time." msgid "This feature is not implemented at this time."
msgstr "Эта возможность не рализована." msgstr "Эта возможность не рализована."
@ -753,7 +766,6 @@ msgid "&Open Item"
msgstr "Открыть эелемент" msgstr "Открыть эелемент"
#: vpsr.rsotheremaillabel #: vpsr.rsotheremaillabel
#, fuzzy
msgctxt "vpsr.rsotheremaillabel" msgctxt "vpsr.rsotheremaillabel"
msgid "Other" msgid "Other"
msgstr "Другой" msgstr "Другой"
@ -791,7 +803,6 @@ msgid "This operation cannot be undone!"
msgstr "" msgstr ""
#: vpsr.rspersonalwebsitelabel #: vpsr.rspersonalwebsitelabel
#, fuzzy
msgctxt "vpsr.rspersonalwebsitelabel" msgctxt "vpsr.rspersonalwebsitelabel"
msgid "Personal" msgid "Personal"
msgstr "Персонал" msgstr "Персонал"
@ -989,6 +1000,10 @@ msgstr "Печать"
msgid "Print" msgid "Print"
msgstr "Печать" msgstr "Печать"
#: vpsr.rsprioritylabel
msgid "Priority:"
msgstr ""
#: vpsr.rsprtcontrolowner #: vpsr.rsprtcontrolowner
msgid "Print controller is not owned by a TVpControlLink!" msgid "Print controller is not owned by a TVpControlLink!"
msgstr "" msgstr ""
@ -1237,13 +1252,11 @@ msgid "Work address"
msgstr "" msgstr ""
#: vpsr.rsworkaddresslabel #: vpsr.rsworkaddresslabel
#, fuzzy
msgctxt "vpsr.rsworkaddresslabel" msgctxt "vpsr.rsworkaddresslabel"
msgid "Work" msgid "Work"
msgstr "Рабочий" msgstr "Рабочий"
#: vpsr.rsworkemaillabel #: vpsr.rsworkemaillabel
#, fuzzy
msgctxt "vpsr.rsworkemaillabel" msgctxt "vpsr.rsworkemaillabel"
msgid "Work" msgid "Work"
msgstr "Рабочий" msgstr "Рабочий"
@ -1572,4 +1585,3 @@ msgstr ""
#: vpsr.sxmldecnotatbeg #: vpsr.sxmldecnotatbeg
msgid "The XML declaration must appear before the first element" msgid "The XML declaration must appear before the first element"
msgstr "" msgstr ""

View File

@ -60,13 +60,14 @@ type
TVpContactSort = (csLastFirst, csFirstLast); TVpContactSort = (csLastFirst, csFirstLast);
TVpTaskPriority = (tpLow=-1, tpNormal=0, tpHigh=1);
TVpOverlayPattern = (opSolid, opClear, opHorizontal, opVertical, TVpOverlayPattern = (opSolid, opClear, opHorizontal, opVertical,
opFDiagonal, opBDiagonal, opCross, opDiagCross); opFDiagonal, opBDiagonal, opCross, opDiagCross);
TVpOverlayDetail = (odResource, odEventDescription, odEventCategory); TVpOverlayDetail = (odResource, odEventDescription, odEventCategory);
TVpOverlayDetails = set of TVpOverlayDetail; TVpOverlayDetails = set of TVpOverlayDetail;
{ forward declarations } { forward declarations }
TVpResource = class; TVpResource = class;
TVpResourceGroup = class; TVpResourceGroup = class;
@ -440,8 +441,6 @@ type
property Complete: Boolean read FComplete write SetComplete; property Complete: Boolean read FComplete write SetComplete;
property CreatedOn: TDateTime read FCreatedOn write SetCreatedOn; property CreatedOn: TDateTime read FCreatedOn write SetCreatedOn;
property CompletedOn: TDateTIme read FCompletedOn write SetCompletedOn; property CompletedOn: TDateTIme read FCompletedOn write SetCompletedOn;
{ Not implemented yet }
property Priority: Integer read FPriority write SetPriority; property Priority: Integer read FPriority write SetPriority;
property Category: Integer read FCategory write SetCategory; property Category: Integer read FCategory write SetCategory;

View File

@ -60,20 +60,16 @@ type
{ internal methods } { internal methods }
procedure LoadContact(AContact: TVpContact); virtual; procedure LoadContact(AContact: TVpContact); virtual;
procedure LoadTask(ATask: TVpTask); virtual;
procedure SetFilterCriteria(ATable: TDataset; AUseDateTime: Boolean; procedure SetFilterCriteria(ATable: TDataset; AUseDateTime: Boolean;
AResourceID: Integer; AStartDateTime, AEndDateTime: TDateTime); virtual; AResourceID: Integer; AStartDateTime, AEndDateTime: TDateTime); virtual;
protected {properties that may be surfaced later} protected {properties that may be surfaced later}
property ReadOnly : boolean property ReadOnly: boolean read FReadOnly write SetReadOnly default False;
read FReadOnly write SetReadOnly default False; property ResourceTable: TDataset read GetResourceTable;
property ResourceTable : TDataset property EventsTable: TDataset read GetEventsTable;
read GetResourceTable; property ContactsTable: TDataset read GetContactsTable;
property EventsTable : TDataset property TasksTable: TDataset read GetTasksTable;
read GetEventsTable;
property ContactsTable : TDataset
read GetContactsTable;
property TasksTable : TDataset
read GetTasksTable;
public public
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
@ -244,7 +240,8 @@ begin
Required := false; Required := false;
end; end;
end; {with FieldDefs do} end; {with FieldDefs do}
end else if TableName = EventsTableName then begin end else
if TableName = EventsTableName then begin
with FieldDefs do begin with FieldDefs do begin
Clear; Clear;
{ Record ID } { Record ID }
@ -818,7 +815,8 @@ begin
Required := false; Required := false;
end; end;
end; {with FieldDefs do} end; {with FieldDefs do}
end else if TableName = TasksTableName then begin end else
if TableName = TasksTableName then begin
with FieldDefs do begin with FieldDefs do begin
Clear; Clear;
{ Record ID } { Record ID }
@ -1203,7 +1201,7 @@ begin
end; {while} end; {while}
end; {with EventsTable} end; {with EventsTable}
end; end;
{=====}
{ Loads the contact from the current cursor position of the contacts table } { Loads the contact from the current cursor position of the contacts table }
procedure TVpCustomDBDataStore.LoadContact(AContact: TVpContact); procedure TVpCustomDBDataStore.LoadContact(AContact: TVpContact);
var var
@ -1358,6 +1356,44 @@ begin
end; end;
end; end;
{ Loads the task from the current cursor position of the task table }
procedure TVpCustomDBDatastore.LoadTask(ATask: TVpTask);
var
F: TField;
begin
with TasksTable do begin
ATask.RecordID := FieldByName('RecordID').AsInteger;
ATask.Complete := FieldByName('Complete').AsBoolean;
ATask.Description := FieldByName('Description').AsString;
ATask.Details := FieldByName('Details').AsString;
ATask.CreatedOn := FieldByName('CreatedOn').AsDateTime;
ATask.CompletedOn := FieldByName('CompletedOn').AsDateTime;
ATask.Priority := FieldByName('Priority').AsInteger;
ATask.Category := FieldByName('Category').AsInteger;
ATask.DueDate := FieldByName('DueDate').AsDateTime;
F := FindField('UserField0');
if F <> nil then ATask.UserField0 := F.AsString;
F := FindField('UserField1');
if F <> nil then ATask.UserField1 := F.AsString;
F := FindField('UserField2');
if F <> nil then ATask.UserField2 := F.AsString;
F := FindField('UserField3');
if F <> nil then ATask.UserField3 := F.AsString;
F := FindField('UserField4');
if F <> nil then ATask.UserField4 := F.AsString;
F := FindField('UserField5');
if F <> nil then ATask.UserField5 := F.AsString;
F := FindField('UserField6');
if F <> nil then ATask.UserField6 := F.AsString;
F := FindField('UserField7');
if F <> nil then ATask.UserField7 := F.AsString;
F := FindField('UserField8');
if F <> nil then ATask.UserField8 := F.AsString;
F := FindField('UserField9');
if F <> nil then ATask.UserField9 := F.AsString;
end;
end;
procedure TVpCustomDBDataStore.LoadTasks; procedure TVpCustomDBDataStore.LoadTasks;
var var
Task: TVpTask; Task: TVpTask;
@ -1372,36 +1408,8 @@ begin
First; First;
while not EOF do begin while not EOF do begin
Task := Resource.Tasks.AddTask(GetNextID(TasksTableName)); Task := Resource.Tasks.AddTask(GetNextID(TasksTableName));
task.loading := true; Task.loading := true;
Task.RecordID := FieldByName('RecordID').AsInteger; LoadTask(Task);
Task.Complete := FieldByName('Complete').AsBoolean;
Task.Description := FieldByName('Description').AsString;
Task.Details := FieldByName('Details').AsString;
Task.CreatedOn := FieldByName('CreatedOn').AsDateTime;
Task.CompletedOn := FieldByName('CompletedOn').AsDateTime;
Task.Priority := FieldByName('Priority').AsInteger;
Task.Category := FieldByName('Category').AsInteger;
Task.DueDate := FieldByName('DueDate').AsDateTime;
F := FindField('UserField0');
if F <> nil then Task.UserField0 := F.AsString;
F := FindField('UserField1');
if F <> nil then Task.UserField1 := F.AsString;
F := FindField('UserField2');
if F <> nil then Task.UserField2 := F.AsString;
F := FindField('UserField3');
if F <> nil then Task.UserField3 := F.AsString;
F := FindField('UserField4');
if F <> nil then Task.UserField4 := F.AsString;
F := FindField('UserField5');
if F <> nil then Task.UserField5 := F.AsString;
F := FindField('UserField6');
if F <> nil then Task.UserField6 := F.AsString;
F := FindField('UserField7');
if F <> nil then Task.UserField7 := F.AsString;
F := FindField('UserField8');
if F <> nil then Task.UserField8 := F.AsString;
F := FindField('UserField9');
if F <> nil then Task.UserField9 := F.AsString;
Task.Loading := false; Task.Loading := false;
Next; Next;
end; {while} end; {while}
@ -2084,14 +2092,34 @@ end;
{=====} {=====}
procedure TVpCustomDBDataStore.RefreshTasks; procedure TVpCustomDBDataStore.RefreshTasks;
var
task: TVpTask;
begin begin
if Resource <> nil then begin
Resource.Tasks.ClearTasks;
with TasksTable do begin
SetFilterCriteria(TasksTable, False, Resource.ResourceID, 0, 0);
First;
while not EOF do begin
task := Resource.Tasks.AddTask(FieldByName('RecordID').AsInteger);
task.Loading := true;
LoadTask(task);
task.Loading := false;
Next;
end;
end;
// LoadContacts;
end;
inherited;
end;
(*
if Resource <> nil then begin if Resource <> nil then begin
Resource.Tasks.ClearTasks; Resource.Tasks.ClearTasks;
LoadTasks; LoadTasks;
end; end;
inherited; inherited;
end; end;
{=====} *)
procedure TVpCustomDBDataStore.RefreshResource; procedure TVpCustomDBDataStore.RefreshResource;
var var

View File

@ -134,6 +134,8 @@ function GetEndLine(EndTime: TDateTime; Granularity: TVpGranularity): Integer;
function LineToStartTime(Line: Integer; Granularity: TVpGranularity): TDateTime; function LineToStartTime(Line: Integer; Granularity: TVpGranularity): TDateTime;
function GetLineDuration(Granularity: TVpGranularity): Double; function GetLineDuration(Granularity: TVpGranularity): Double;
function TaskPriorityToStr(APriority: TVpTaskPriority): String;
function AutoHeight(ARadioGroup: TRadioGroup): Integer; function AutoHeight(ARadioGroup: TRadioGroup): Integer;
function GetButtonWidth(AButton: TButton): Integer; function GetButtonWidth(AButton: TButton): Integer;
function GetLabelWidth(ALabel: TLabel): Integer; function GetLabelWidth(ALabel: TLabel): Integer;
@ -616,7 +618,16 @@ function GetLineDuration(Granularity: TVpGranularity): Double;
begin begin
Result := GranularityMinutes[Granularity] / MinutesInDay; Result := GranularityMinutes[Granularity] / MinutesInDay;
end; end;
{=====}
function TaskPriorityToStr(APriority: TVpTaskPriority): String;
begin
Result := '';
case APriority of
tpLow : Result := RSLow;
tpNormal : Result := RSNormal;
tpHigh : Result := RSHigh;
end;
end;
function AutoHeight(ARadioGroup: TRadioGroup): Integer; function AutoHeight(ARadioGroup: TRadioGroup): Integer;
var var

View File

@ -98,6 +98,10 @@ resourcestring
RSCategoryLabel4 = 'Personal'; RSCategoryLabel4 = 'Personal';
RSCategoryLabel5 = 'Other'; RSCategoryLabel5 = 'Other';
RSLow = 'Low';
RSNormal = 'Normal';
RSHigh = 'High';
RSWeekOf = 'Week of'; RSWeekOf = 'Week of';
RSThrough = 'Through'; RSThrough = 'Through';
RSSunday = 'Sunday'; RSSunday = 'Sunday';
@ -270,11 +274,13 @@ resourcestring
{ Task Edit Dialog Captions } { Task Edit Dialog Captions }
RSDlgTaskEdit = 'Task'; RSDlgTaskEdit = 'Task';
RSDueDate = 'Due date:';
RSDetails = 'Details:';
RSTaskComplete = 'Task complete'; RSTaskComplete = 'Task complete';
RSCreatedOn = 'Created on'; RSCreatedOn = 'Created on';
RSCompletedOn = 'Completed on'; RSCompletedOn = 'Completed on';
RSDueDateLabel = 'Due date:';
RSDetailsLabel = 'Details:';
RSPriorityLabel = 'Priority:';
RSCategoryLabel = 'Category:';
{ Resource Edit Dialog Captions } { Resource Edit Dialog Captions }
RSDlgResEditCaption = 'Resource edit'; RSDlgResEditCaption = 'Resource edit';

View File

@ -1,12 +1,12 @@
object TaskEditForm: TTaskEditForm object TaskEditForm: TTaskEditForm
Left = 284 Left = 284
Height = 378 Height = 411
Top = 286 Top = 253
Width = 547 Width = 547
HorzScrollBar.Page = 545 HorzScrollBar.Page = 545
VertScrollBar.Page = 339 VertScrollBar.Page = 339
Caption = 'TaskEditForm' Caption = 'TaskEditForm'
ClientHeight = 378 ClientHeight = 411
ClientWidth = 547 ClientWidth = 547
OnCreate = FormCreate OnCreate = FormCreate
OnShow = FormShow OnShow = FormShow
@ -15,7 +15,7 @@ object TaskEditForm: TTaskEditForm
object ButtonPanel: TPanel object ButtonPanel: TPanel
Left = 0 Left = 0
Height = 37 Height = 37
Top = 341 Top = 374
Width = 547 Width = 547
Align = alBottom Align = alBottom
BevelOuter = bvNone BevelOuter = bvNone
@ -61,7 +61,7 @@ object TaskEditForm: TTaskEditForm
end end
object PageControl1: TPageControl object PageControl1: TPageControl
Left = 0 Left = 0
Height = 341 Height = 374
Top = 0 Top = 0
Width = 547 Width = 547
TabStop = False TabStop = False
@ -71,29 +71,29 @@ object TaskEditForm: TTaskEditForm
TabOrder = 0 TabOrder = 0
object tabTask: TTabSheet object tabTask: TTabSheet
Caption = 'Task' Caption = 'Task'
ClientHeight = 313 ClientHeight = 346
ClientWidth = 539 ClientWidth = 539
object DueDateLbl: TLabel object DueDateLbl: TLabel
Left = 52 Left = 52
Height = 15 Height = 15
Top = 44 Top = 78
Width = 50 Width = 50
Caption = 'Due date:' Caption = 'Due date:'
FocusControl = DueDateEdit FocusControl = DueDateEdit
ParentColor = False ParentColor = False
end end
object CreatedOnLbl: TLabel object LblCreatedOn: TLabel
Left = 52 Left = 52
Height = 15 Height = 15
Top = 69 Top = 103
Width = 61 Width = 61
Caption = 'Created on:' Caption = 'Created on:'
ParentColor = False ParentColor = False
end end
object CompletedOnLbl: TLabel object LblCompletedOn: TLabel
Left = 333 Left = 333
Height = 15 Height = 15
Top = 69 Top = 103
Width = 79 Width = 79
Caption = 'Completed on:' Caption = 'Completed on:'
ParentColor = False ParentColor = False
@ -101,7 +101,7 @@ object TaskEditForm: TTaskEditForm
object Bevel1: TBevel object Bevel1: TBevel
Left = 4 Left = 4
Height = 2 Height = 2
Top = 32 Top = 64
Width = 529 Width = 529
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
Shape = bsTopLine Shape = bsTopLine
@ -109,7 +109,7 @@ object TaskEditForm: TTaskEditForm
object imgCalendar: TImage object imgCalendar: TImage
Left = 8 Left = 8
Height = 32 Height = 32
Top = 38 Top = 72
Width = 32 Width = 32
AutoSize = True AutoSize = True
Picture.Data = { Picture.Data = {
@ -218,7 +218,7 @@ object TaskEditForm: TTaskEditForm
object imgCompleted: TImage object imgCompleted: TImage
Left = 290 Left = 290
Height = 32 Height = 32
Top = 38 Top = 72
Width = 32 Width = 32
AutoSize = True AutoSize = True
Picture.Data = { Picture.Data = {
@ -257,18 +257,18 @@ object TaskEditForm: TTaskEditForm
TabOrder = 0 TabOrder = 0
Text = 'DescriptionEdit' Text = 'DescriptionEdit'
end end
object CompleteCB: TCheckBox object CbComplete: TCheckBox
Left = 333 Left = 333
Height = 19 Height = 19
Top = 43 Top = 77
Width = 72 Width = 72
Caption = 'Complete' Caption = 'Complete'
TabOrder = 2 TabOrder = 2
end end
object DetailsMemo: TMemo object DetailsMemo: TMemo
Left = 4 Left = 4
Height = 208 Height = 209
Top = 96 Top = 128
Width = 529 Width = 529
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
Lines.Strings = ( Lines.Strings = (
@ -282,8 +282,8 @@ object TaskEditForm: TTaskEditForm
object DueDateEdit: TDateEdit object DueDateEdit: TDateEdit
Left = 128 Left = 128
Height = 23 Height = 23
Top = 41 Top = 75
Width = 103 Width = 120
CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames] CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
DateOrder = doNone DateOrder = doNone
ButtonWidth = 23 ButtonWidth = 23
@ -328,6 +328,58 @@ object TaskEditForm: TTaskEditForm
TabOrder = 1 TabOrder = 1
Text = 'DueDateEdit' Text = 'DueDateEdit'
end end
object LblCategory: TLabel
Left = 62
Height = 15
Top = 36
Width = 51
Caption = 'Category:'
FocusControl = CbCategory
ParentColor = False
end
object CbCategory: TComboBox
Left = 128
Height = 23
Top = 32
Width = 120
ItemHeight = 15
ItemIndex = 0
Items.Strings = (
'Business'
'Clients'
'Family'
'Other'
'Personal'
)
Style = csDropDownList
TabOrder = 4
Text = 'Business'
end
object LblPriority: TLabel
Left = 281
Height = 15
Top = 36
Width = 41
Caption = 'Priority:'
FocusControl = CbPriority
ParentColor = False
end
object CbPriority: TComboBox
Left = 333
Height = 23
Top = 32
Width = 120
ItemHeight = 15
ItemIndex = 1
Items.Strings = (
'low'
'normal'
'high'
)
Style = csDropDownList
TabOrder = 5
Text = 'normal'
end
end end
end end
end end

View File

@ -52,6 +52,10 @@ type
TTaskEditForm = class(TForm) TTaskEditForm = class(TForm)
ButtonPanel: TPanel; ButtonPanel: TPanel;
CbCategory: TComboBox;
CbPriority: TComboBox;
LblCategory: TLabel;
LblPriority: TLabel;
OKBtn: TButton; OKBtn: TButton;
CancelBtn: TButton; CancelBtn: TButton;
PageControl1: TPageControl; PageControl1: TPageControl;
@ -59,9 +63,9 @@ type
DescriptionEdit: TEdit; DescriptionEdit: TEdit;
DueDateLbl: TLabel; DueDateLbl: TLabel;
DueDateEdit: TDateEdit; DueDateEdit: TDateEdit;
CompleteCB: TCheckBox; CbComplete: TCheckBox;
CreatedOnLbl: TLabel; LblCreatedOn: TLabel;
CompletedOnLbl: TLabel; LblCompletedOn: TLabel;
DetailsMemo: TMemo; DetailsMemo: TMemo;
ResourceNameLbl: TLabel; ResourceNameLbl: TLabel;
Bevel1: TBevel; Bevel1: TBevel;
@ -76,7 +80,10 @@ type
FReturnCode: TVpEditorReturnCode; FReturnCode: TVpEditorReturnCode;
FTask: TVpTask; FTask: TVpTask;
FResource: TVpResource; FResource: TVpResource;
FBtnHeight: Integer;
FEditHeight: Integer;
procedure PositionControls; procedure PositionControls;
procedure SetCaptions;
public public
procedure PopulateSelf; procedure PopulateSelf;
procedure DePopulateSelf; procedure DePopulateSelf;
@ -94,8 +101,8 @@ type
teTask: TVpTask; teTask: TVpTask;
public public
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
function Execute(Task: TVpTask): Boolean; reintroduce;
function AddNewTask: Boolean; function AddNewTask: Boolean;
function Execute(Task: TVpTask): Boolean; reintroduce;
published published
{properties} {properties}
property DataStore; property DataStore;
@ -119,38 +126,62 @@ uses
procedure TTaskEditForm.FormCreate(Sender: TObject); procedure TTaskEditForm.FormCreate(Sender: TObject);
begin begin
FReturnCode := rtAbandon; FReturnCode := rtAbandon;
FBtnHeight := ScaleY(OKBtn.Height, DesignTimeDPI);
FEditHeight := ScaleY(DueDateEdit.Height, DesignTimeDPI);
end; end;
{=====}
procedure TTaskEditForm.DePopulateSelf; procedure TTaskEditForm.DePopulateSelf;
begin begin
Task.Description := DescriptionEdit.Text; Task.Description := DescriptionEdit.Text;
Task.DueDate := DueDateEdit.Date; Task.DueDate := DueDateEdit.Date;
Task.Details := DetailsMemo.Text; Task.Details := DetailsMemo.Text;
Task.Complete := CompleteCB.Checked; Task.Complete := CbComplete.Checked;
DueDateLbl.Caption := RSDueDate; Task.Priority := CbPriority.ItemIndex-1;
Task.Category := CbCategory.ItemIndex;
// DueDateLbl.Caption := RSDueDateLabel;
end; end;
{=====} {=====}
procedure TTaskEditForm.PopulateSelf; procedure TTaskEditForm.SetCaptions;
var
ct: TVpCategoryType;
tp: TVpTaskPriority;
begin begin
ResourceNameLbl.Caption := Resource.Description; ResourceNameLbl.Caption := Resource.Description;
CompleteCB.Caption := RSTaskComplete; CbComplete.Caption := RSTaskComplete;
DueDateLbl.Caption := RSDueDate; DueDateLbl.Caption := RSDueDateLabel;
OKBtn.Caption := RSOKBtn; OKBtn.Caption := RSOKBtn;
CancelBtn.Caption := RSCancelBtn; CancelBtn.Caption := RSCancelBtn;
TabTask.Caption := RSDlgTaskEdit; TabTask.Caption := RSDlgTaskEdit;
LblPriority.Caption := RSPriorityLabel;
LblCategory.Caption := RSCategoryLabel;
CbCategory.Items.Clear;
for ct in TVpCategoryType do
CbCategory.Items.Add(CategoryLabel(ct));
CbPriority.Items.Clear;
for tp in TVpTaskPriority do
CbPriority.Items.Add(TaskPriorityToStr(tp));
end;
procedure TTaskEditForm.PopulateSelf;
begin
SetCaptions;
DescriptionEdit.Text := Task.Description; DescriptionEdit.Text := Task.Description;
DueDateEdit.Date := Task.DueDate; DueDateEdit.Date := Task.DueDate;
DetailsMemo.Text := Task.Details; DetailsMemo.Text := Task.Details;
CompleteCB.Checked := Task.Complete; CbComplete.Checked := Task.Complete;
if Task.CompletedOn <> 0 then if Task.CompletedOn <> 0 then
CompletedOnLbl.Caption := RSCompletedOn + ' ' + FormatDateTime(DefaultFormatSettings.ShortDateFormat, Task.CompletedOn) LblCompletedOn.Caption := RSCompletedOn + ' ' + FormatDateTime('ddddd', Task.CompletedOn)
// 'ddddd' = DefaultFormatSettings.ShortDateFormat
else else
CompletedOnLbl.Visible := False; LblCompletedOn.Visible := False;
CompletedOnLbl.Visible := CompleteCB.Checked; LblCompletedOn.Visible := CbComplete.Checked;
CreatedOnLbl.Caption := RSCreatedOn + ' ' + FormatDateTime(DefaultFormatSettings.ShortDateFormat, Task.CreatedOn); LblCreatedOn.Caption := RSCreatedOn + ' ' + FormatDateTime('ddddd', Task.CreatedOn);
CbPriority.ItemIndex := Task.Priority + 1;
CbCategory.ItemIndex := Task.Category;
PositionControls; PositionControls;
end; end;
@ -163,14 +194,18 @@ var
w: Integer; w: Integer;
cnv: TControlCanvas; cnv: TControlCanvas;
cb: TCheckbox; cb: TCheckbox;
editHeight: Integer;
begin begin
VBevelDist := ScaleY(VBevelDist, DesignTimeDPI); VBevelDist := ScaleY(VBevelDist, DesignTimeDPI);
VDist := ScaleY(VDist, DesignTimeDPI); VDist := ScaleY(VDist, DesignTimeDPI);
HDist := ScaleX(HDist, DesignTimeDPI); HDist := ScaleX(HDist, DesignTimeDPI);
editHeight := ScaleY(DueDateEdit.Height, DesignTimeDPI);
OKBtn.Height := ScaleY(OKBtn.Height, DesignTimeDPI); DescriptionEdit.Height := FEditHeight;
DueDateEdit.Height := FEditHeight;
DueDateEdit.ButtonWidth := FEditHeight;
CbCategory.Height := FEditHeight;
CbPriority.Height := FEditHeight;
OKBtn.Height := FBtnHeight;
OKBtn.Top := VDist; OKBtn.Top := VDist;
CancelBtn.Height := OKBtn.Height; CancelBtn.Height := OKBtn.Height;
CancelBtn.Top := OKBtn.Top; CancelBtn.Top := OKBtn.Top;
@ -178,7 +213,6 @@ begin
ResourceNameLbl.Font.Size := ScaleY(ResourceNameLbl.Font.Size, DesignTimeDPI); ResourceNameLbl.Font.Size := ScaleY(ResourceNameLbl.Font.Size, DesignTimeDPI);
ResourceNameLbl.Top := OKBtn.Top + (OKBtn.Height - ScaleY(ResourceNameLbl.Height, DesignTimeDPI)) div 2; 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; cnv := TControlCanvas.Create;
try try
@ -192,21 +226,30 @@ begin
if RightOf(DueDateEdit) + 3*HDist > ImgCompleted.Left then begin if RightOf(DueDateEdit) + 3*HDist > ImgCompleted.Left then begin
ImgCompleted.Left := RightOf(DueDateEdit) + 3*HDist; ImgCompleted.Left := RightOf(DueDateEdit) + 3*HDist;
CompleteCB.Left := RightOf(ImgCompleted) + HDist; CbComplete.Left := RightOf(ImgCompleted) + HDist;
CompletedOnLbl.Left := CompleteCB.Left; LblCompletedOn.Left := CbComplete.Left;
cnv := TControlCanvas.Create; cnv := TControlCanvas.Create;
try try
cnv.Control := CompleteCB; cnv.Control := CbComplete;
cnv.Font.Assign(CompleteCB.Font); cnv.Font.Assign(CbComplete.Font);
w := cnv.TextWidth(CompleteCB.Caption) + GetSystemMetrics(SM_CXMENUCHECK); w := cnv.TextWidth(CbComplete.Caption) + GetSystemMetrics(SM_CXMENUCHECK);
finally finally
cnv.Free; cnv.Free;
end; end;
w := Max(GetlabelWidth(CompletedOnLbl), w); w := Max(GetlabelWidth(LblCompletedOn), w);
ClientWidth := ClientWidth - tabTask.ClientWidth + CompleteCB.Left + w + HDist*2; ClientWidth := ClientWidth - tabTask.ClientWidth + CbComplete.Left + w + HDist*2;
end; end;
CbCategory.Left := DueDateEdit.Left;
LblCategory.Left := CbCategory.Left - HDist - GetLabelWidth(LblCategory);
if RightOf(CbCategory) + 3*HDist + GetLabelWidth(LblPriority) + HDist > CbComplete.Left then
CbPriority.Left := CbPriority.Parent.ClientWidth - HDist - CbPriority.Width
else
CbPriority.Left := CbComplete.Left;
LblPriority.Left := CbPriority.Left - HDist - GetLabelWidth(LblPriority);
OKBtn.Width := Max(GetButtonWidth(OKBtn), GetButtonWidth(CancelBtn)); OKBtn.Width := Max(GetButtonWidth(OKBtn), GetButtonWidth(CancelBtn));
CancelBtn.Width := OKBtn.Width; CancelBtn.Width := OKBtn.Width;
{$IFDEF MSWINDOWS} {$IFDEF MSWINDOWS}
@ -221,18 +264,23 @@ begin
OKBtn.TabOrder := 1; OKBtn.TabOrder := 1;
{$ENDIF} {$ENDIF}
Bevel1.Top := DescriptionEdit.Top + editHeight + VBevelDist; //BottomOf(DescriptionEdit) + VBevelDist; CbCategory.Top := BottomOf(DescriptionEdit) + VDist;
LblCategory.Top := CbCategory.Top + (CbCategory.Height - LblCategory.Height) div 2;
CbPriority.Top := CbCategory.Top;
LblPriority.Top := LblCategory.Top;
//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; CbComplete.Top := ImgCompleted.Top; // + (ImgCompleted.Height - CbComplete.Height) div 2;
CreatedOnLbl.Top := DueDateEdit.Top + editHeight + VDist; //BottomOf(DueDateEdit) + VDist; LblCreatedOn.Top := DueDateEdit.Top + FEditHeight + VDist; //BottomOf(DueDateEdit) + VDist;
CompletedOnLbl.Top := CreatedOnLbl.Top; LblCompletedOn.Top := LblCreatedOn.Top;
DetailsMemo.Top := BottomOf(CreatedOnLbl) + VBevelDist; DetailsMemo.Top := BottomOf(LblCreatedOn) + VBevelDist;
DetailsMemo.Height := tabTask.ClientHeight - DetailsMemo.Top - DescriptionEdit.Top; DetailsMemo.Height := tabTask.ClientHeight - DetailsMemo.Top - DescriptionEdit.Top;
end; end;
{=====} {=====}

View File

@ -429,6 +429,9 @@ begin
else else
RenderCanvas.Font.Color := RealNormalColor; RenderCanvas.Font.Color := RealNormalColor;
end; end;
if Task.Priority = ord(tpHigh) then
RenderCanvas.Font.Style := RenderCanvas.Font.Style + [fsBold] else
RenderCanvas.Font.Style := RenderCanvas.Font.style - [fsBold];
{ if this is the selected task, set highlight text color } { if this is the selected task, set highlight text color }
if (Task = FActiveTask) and if (Task = FActiveTask) and