Files
lazarus-ccr/components/tvplanit/source/vpreg.pas

415 lines
14 KiB
ObjectPascal
Raw Normal View History

{*********************************************************}
{* VPREG.PAS 1.03 *}
{*********************************************************}
{* ***** BEGIN LICENSE BLOCK ***** *}
{* Version: MPL 1.1 *}
{* *}
{* The contents of this file are subject to the Mozilla Public License *}
{* Version 1.1 (the "License"); you may not use this file except in *}
{* compliance with the License. You may obtain a copy of the License at *}
{* http://www.mozilla.org/MPL/ *}
{* *}
{* Software distributed under the License is distributed on an "AS IS" basis, *}
{* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License *}
{* for the specific language governing rights and limitations under the *}
{* License. *}
{* *}
{* The Original Code is TurboPower Visual PlanIt *}
{* *}
{* The Initial Developer of the Original Code is TurboPower Software *}
{* *}
{* Portions created by TurboPower Software Inc. are Copyright (C) 2002 *}
{* TurboPower Software Inc. All Rights Reserved. *}
{* *}
{* Contributor(s): *}
{* *}
{* ***** END LICENSE BLOCK ***** *}
{$I Vp.INC} { Compiler Version Defines }
{$IFNDEF LCL}
{$R VpREG.RES} { Palette Glyphs }
{$ENDIF}
unit VpReg;
{Registration unit for the Visual PlanIt design-time interface}
interface
uses
{$IFDEF LCL}
LMessages,LCLProc,LCLType,LCLIntf,
{$ELSE}
Windows,
{$ENDIF}
Dialogs,
{$IFDEF VERSION6}
{$IFNDEF LCL}
DesignIntf,
DesignEditors,
VCLEditors,
{$ELSE}
PropEdits,
LazarusPackageIntf,
FieldsEditor,
ComponentEditors,
{$ENDIF}
{$ELSE}
DsgnIntf,
{$ENDIF}
Classes,
Controls,
TypInfo,
Forms,
SysUtils,
VpDatePropEdit;
type
{TDBStringProperty}
TDBStringProperty = class(TStringProperty)
public
function GetAttributes: TPropertyAttributes; override;
procedure GetValueList(List: TStrings); virtual;
procedure GetValues(Proc: TGetStrProc); override;
end;
{TAliasNameProperty}
TAliasNameProperty = class(TDBStringProperty)
public
procedure GetValueList(List: TStrings); override;
end;
{TDriverNameProperty}
TDriverNameProperty = class(TDBStringProperty)
public
procedure GetValueList(List: TStrings); override;
end;
{ TDataStoreProperty }
TDataStoreProperty = class(TComponentProperty)
private
FCheckProc: TGetStrProc;
procedure CheckComponent(const Value: string);
public
procedure GetValues(Proc: TGetStrProc); override;
end;
TVpDateProperty = class (TFloatProperty)
public
procedure Edit; override;
function GetAttributes : TPropertyAttributes; override;
function GetValue : string; override;
procedure SetValue (const Value : string); override;
end;
TVpGenericFileNameProperty = class (TStringProperty)
protected
public
function GetAttributes: TPropertyAttributes; override;
procedure Edit; override;
end;
TVpLocalizeFileNameProperty = class (TVpGenericFileNameProperty)
end;
procedure Register;
implementation
uses
// DbTables, { VCL - BDE runtime unit }
VpWavPE, { Wav File Finder - Property Editor }
{ Component Units }
VpBase, { Base classes for Vp }
VpClock, { Clock Component }
VpDlg, { Dialog components ancestor }
VpLEDLabel, { LEDLabel Component }
VpCalendar, { Calendar Component }
VpNavBar, { Navigation Bar Component }
VpBaseDS, { Base DataStore Classes }
// VpBDEDS, { DataStore Component }
VpDayView, { Day View Component }
VpWeekView, { Week View Component }
VpMonthView, { Month View Component }
VpContactGrid, { ContactGrid Component }
VpDateEdit, { DateEdit Component }
VpTaskList, { Task List Component }
// VpFlxDS, { Flexible DataStore }
VpContactEditDlg, { Contact Edit Dialog Component }
VpTaskEditDlg, { Task Edit Dialog Component }
VpEvntEditDlg, { Event Edit Dialog Component }
VpAlarmDlg, { Alarm Notification Dialog }
VpResEditDlg, { Resource Edit Dialog }
VpPrtPrv, { Print Preview Component }
VpPrtFmtCBox, { Print Format Combo Box Component }
VpPrtPrvDlg, { Print Preview Dialog }
VpPrtFmtDlg, { Print Format Dialog }
VpPrtFmtEd, { Print Format Property editor }
VpContactButtons, { - New contact grid button bar component }
{ Designtime Interfaces (Property and Component Editors) }
VpAbout, { About form for the About property editor }
VpNabEd; { component editor for the VpNavBar }
// VpFlxDSEd1; { Field mapper component editor for the FlexDS }
(*****************************************************************************)
{ TAliasNameProperty }
procedure TAliasNameProperty.GetValueList(List: TStrings);
begin
{$IFNDEF LCL}
(GetComponent(0) as TVpBDEDataStore).Database.Session.GetAliasNames(List);
{$ENDIF}
end;
(*****************************************************************************)
{ TDBStringProperty }
function TDBStringProperty.GetAttributes: TPropertyAttributes;
begin
Result := [paValueList, paSortList, paMultiSelect];
end;
{=====}
procedure TDBStringProperty.GetValueList(List: TStrings);
begin
end;
{=====}
procedure TDBStringProperty.GetValues(Proc: TGetStrProc);
var
I: Integer;
Values: TStringList;
begin
Values := TStringList.Create;
try
GetValueList(Values);
for I := 0 to Values.Count - 1 do Proc(Values[I]);
finally
Values.Free;
end;
end;
{=====}
(*****************************************************************************)
{ TDriverNameProperty }
procedure TDriverNameProperty.GetValueList(List: TStrings);
begin
{$IFNDEF LCL}
(GetComponent(0) as TVpBDEDataStore).Database.Session.GetDriverNames(List);
{$ENDIF}
end;
{=====}
(*****************************************************************************)
{ TDataStoreProperty }
procedure TDataStoreProperty.CheckComponent(const Value: string);
var
J: Integer;
DataStore: TVpCustomDataStore;
begin
{$IFNDEF LCL}
DataStore := TVpCustomDataStore(Designer.GetComponent(Value));
for J := 0 to PropCount - 1 do
if TVpDayView(GetComponent(J)).DataStore = DataStore then
Exit;
FCheckProc(Value);
{$ENDIF}
end;
procedure TDataStoreProperty.GetValues(Proc: TGetStrProc);
begin
FCheckProc := Proc;
inherited GetValues(CheckComponent);
end;
{=====}
(*****************************************************************************)
{ TDataStoreProperty }
procedure TVpDateProperty.Edit;
var
frmDatePropertyEditor : TfrmDatePropertyEditor;
begin
frmDatePropertyEditor := TfrmDatePropertyEditor.Create (Application);
try
frmDatePropertyEditor.VpCalendar1.Date := GetFloatValue;
if frmDatePropertyEditor.Execute then
SetFloatValue (Trunc (frmDatePropertyEditor.VpCalendar1.Date));
finally
frmDatePropertyEditor.Free;
end;
end;
{=====}
(*****************************************************************************)
{ TVpDateProperty }
function TVpDateProperty.GetAttributes : TPropertyAttributes;
begin
Result := [paDialog, paMultiSelect];
end;
{=====}
function TVpDateProperty.GetValue : string;
begin
Result := FormatDateTime ('ddddd', GetFloatValue);
end;
{=====}
procedure TVpDateProperty.SetValue (const Value : string);
begin
SetFloatValue (StrToDate (Value));
end;
{=====}
(*****************************************************************************)
{ TVpGenericFileNameProperty }
function TVpGenericFileNameProperty.GetAttributes: TPropertyAttributes;
begin
Result := [paDialog];
end;
procedure TVpGenericFileNameProperty.Edit;
const
VpRegLocalizeFilter = 'Localization Files (*.XML)|*.XML';
VpRegDefFilter = 'All Files (*.*)|*.*';
var
Dlg : TOpenDialog;
Filter : string;
begin
Filter := '';
if Self is TVpLocalizeFileNameProperty then
Filter := VpRegLocalizeFilter;
if Filter = '' then
Filter := VpRegDefFilter
else
Filter := Filter + '|' + VpRegDefFilter;
Dlg := TOpenDialog.Create (Application);
try
Dlg.DefaultExt := '*.*';
Dlg.Filter := Filter;
Dlg.FilterIndex := 0;
Dlg.Options := [ofHideReadOnly];
{ Dlg.FileName := Value;
if Dlg.Execute then
Value := Dlg.FileName; }
finally
Dlg.Free;
end;
end;
{*** component registration ***}
procedure Register;
begin
{ register component editors }
RegisterComponentEditor(TVpNavBar, TVpNavBarEditor);
RegisterComponentEditor(TVpControlLink, TVpPrtFmtPropertyEditor);
{$IFNDEF LCL}
RegisterComponentEditor(TVpFlexDataStore, TVpFlexDSEditor);
{$ENDIF}
{ register the About Box property editor for the Version properties }
RegisterPropertyEditor(TypeInfo(string), TVpCollectionItem,
'Version', TVpAboutProperty);
RegisterPropertyEditor(TypeInfo(string), TVpComponent,
'Version', TVpAboutProperty);
RegisterPropertyEditor(TypeInfo(string), TVpNavBar,
'Version', TVpAboutProperty);
RegisterPropertyEditor(TypeInfo(string), TVpCalendar,
'Version', TVpAboutProperty);
RegisterPropertyEditor(TypeInfo(string), TVpLEDLabel,
'Version', TVpAboutProperty);
RegisterPropertyEditor(TypeInfo(string), TVpClock,
'Version', TVpAboutProperty);
RegisterPropertyEditor(TypeInfo(string), TVpResourceCombo,
'Version', TVpAboutProperty);
RegisterPropertyEditor(TypeInfo(string), TVpCustomControl,
'Version', TVpAboutProperty);
RegisterPropertyEditor(TypeInfo(string), TVpControlLink,
'Version', TVpAboutProperty);
{$IFNDEF LCL}
RegisterPropertyEditor(TypeInfo(string), TVpBDEDataStore,
'Version', TVpAboutProperty);
RegisterPropertyEditor(TypeInfo(string), TVpFlexDataStore,
'Version', TVpAboutProperty);
{$ENDIF}
RegisterPropertyEditor(TypeInfo(string), TVpDateEdit,
'Version', TVpAboutProperty);
RegisterPropertyEditor(TypeInfo(string), TVpBaseDialog,
'Version', TVpAboutProperty);
RegisterPropertyEditor(TypeInfo(string), TVpPrintFormatComboBox,
'Version', TVpAboutProperty);
{register the BDE Alias and Driver properties }
{$IFNDEF LCL}
RegisterPropertyEditor(TypeInfo(string), TVpBDEDataStore,
'AliasName', TAliasNameProperty);
RegisterPropertyEditor(TypeInfo(string), TVpBDEDataStore,
'DriverName', TDriverNameProperty);
{$ENDIF}
{register the DayView properties }
RegisterPropertyEditor(TypeInfo(TVpCustomDataStore), TVpDayView,
'DataStore', TDataStoreProperty);
{register the property editor for the DataStore's DefaultAlarmWav }
RegisterPropertyEditor(TypeInfo(string), TVpCustomDataStore,
'DefaultEventSound', TWavFileProperty);
RegisterPropertyEditor (TypeInfo (TDateTime),
TVpPrintPreview,
'StartDate',
TVpDateProperty);
RegisterPropertyEditor (TypeInfo (TDateTime),
TVpPrintPreview,
'EndDate',
TVpDateProperty);
RegisterPropertyEditor (TypeInfo (TDateTime),
TVpPrintPreviewDialog,
'StartDate',
TVpDateProperty);
RegisterPropertyEditor (TypeInfo (TDateTime),
TVpPrintPreviewDialog,
'EndDate',
TVpDateProperty);
RegisterPropertyEditor (TypeInfo (string), TVpControlLink,
'LocalizationFile', TVpLocalizeFileNameProperty);
{register Visual PlanIt components with the IDE}
RegisterComponents('Visual PlanIt', [
TVpLEDLabel,
TVpClock,
TVpCalendar,
TVpNavBar,
{$IFNDEF LCL}
TVpFlexDataStore,
TVpBDEDataStore,
{$ENDIF}
TVpControlLink,
TVpPrintPreview,
TVpPrintFormatComboBox,
TVpDateEdit,
TVpResourceCombo,
TVpDayView,
TVpWeekView,
TVpMonthView,
TVpContactGrid,
TVpContactButtonBar,
TVpTaskList,
TVpNotificationDialog,
TVpResourceEditDialog,
TVpEventEditDialog,
TVpContactEditDialog,
TVpTaskEditDialog,
TVpPrintFormatEditDialog,
TVpPrintPreviewDialog]);
end;
end.