📄 tsdatetimeeditor.pas
字号:
end;
ShowMessage('RegisterPropEditors DONE');
DateTimeDefExample := TtsDateTimeDef.Create(Self);
DateTimeDefExample.Assign(CurDateTimeDef);
DateTimeDefExample.DateTimeControl.Parent := scrDateTime;
DateTimeDefExample.DateTimeControl.Visible := True;
ShowMessage('SetDisplayModes');
SetDisplayModes;
ShowMessage('initgrdHeading');
initgrdHeading;
TextHeight := grdHeading.CellTextHeight[1,1] + 1;
grdHeading.DefaultRowHeight := CalcMax(grdHeading.DefaultRowHeight, TextHeight + 1);
grdHeading.ClientHeight := grdHeading.DefaultRowHeight;
grdHeading.HeadingHeight := CalcMax(grdHeading.HeadingHeight, grdHeading.DefaultRowHeight);
grdInspector.DefaultRowHeight := CalcMax(grdInspector.DefaultRowHeight, TextHeight);
grdInspector.HeadingHeight := CalcMax(grdInspector.HeadingHeight, grdInspector.DefaultRowHeight);
pnlInspectorGridAutoWidthMax := pnlInspectorGrid.Width;
grdInspectorFirstColShare := grdInspector.Col[1].Width / grdInspector.Width;
sepSizerWidthDif := ClientWidth - sepSizer.Width;
ShowMessage('DateTimeDefExample.DateTimeProps');
tsComponentEditor.Component := DateTimeDefExample.DateTimeProps;
grdInspector.ComponentEditor := tsComponentEditor;
grdInspector.DisplayModeName := DisplayModeNames[CurDisplayModeIndex];
grdHeading.Refresh;
ShowMessage('ButtonedExit');
ButtonedExit := False;
SaveResult := False;
TsDesign.ChangesMade := False;
FirstActivate := False;
grdInspector.Col[2].Width := grdInspector.ClientWidth - grdInspector.Col[1].Width - grdInspector.RowBarWidth + 1;
end;
end;
procedure TfrmCalEditor.InitgrdHeading;
begin
grdHeading.Col[2].Width := Screen.Width;
grdHeading.Col[2].ReadOnly := true;
grdHeading.ButtonEdgeWidth := 3;
grdHeading.InactiveButtonState := ibsBackGround;
grdHeading.FlatButtons := false;
grdHeading.Col[1].Align:= true;
grdHeading.Col[1].Alignment := taCenter;
grdHeading.Col[1].ButtonType := btCombo;
grdHeading.Col[1].DropDownStyle := ddDropDownList;
grdHeading.CurrentCell.MoveTo(3, 1);
end;
procedure TfrmCalEditor.grdHeadingComboInit(Sender: TObject;
Combo: TtsComboGrid; DataCol, DataRow: Longint);
begin
Combo.DropDownRows := 5;
Combo.ValueCol := 1;
Combo.AutoSearch := asTop;
Combo.Grid.HeadingOn := False;
Combo.Grid.RowBarOn := False;
Combo.DropDownCols := 1;
Combo.Grid.Cols := 1;
Combo.Grid.Rows := 2;
end;
procedure TfrmCalEditor.grdHeadingComboCellLoaded(Sender: TObject;
Combo: TtsComboGrid; DataCol, DataRow: Longint; var Value: Variant);
begin
if DataRow = 1 then
Value := 'Alphabetical'
else
Value := 'Structured';
end;
procedure TfrmCalEditor.grdHeadingComboRollUp(Sender: TObject;
Combo: TtsComboGrid; DataCol, DataRow: Longint);
begin
Screen.Cursor := crHourGlass;
try
grdInspector.DisplayModeName := grdHeading.CurrentCell.Value;
grdHeading.CurrentCell.MoveTo(3, 1);
grdInspector.SetFocus;
finally
Screen.Cursor := crDefault;
end;
end;
procedure TfrmCalEditor.grdHeadingCellLoaded(Sender: TObject; DataCol,
DataRow: Longint; var Value: Variant);
begin
if DataCol = 1 then
Value := grdInspector.DisplayModeName;
end;
procedure TfrmCalEditor.grdInspectorColResized(Sender: TObject;
RowColnr: Longint);
begin
if RowColnr = 1 then
grdInspectorFirstColShare := grdInspector.Col[1].Width / grdInspector.Width;
if RowColnr >= 0 then
begin
grdHeading.RowBarWidth := grdInspector.RowBarWidth;
grdHeading.Col[1].Width := grdInspector.Col[1].Width;
end;
end;
procedure TfrmCalEditor.grdHeadingColResized(Sender: TObject;
RowColnr: Longint);
begin
if not Assigned(grdInspector) then
Exit;
if RowColnr >= 0 then
begin
grdHeading.EnablePaint := False;
try
grdInspector.RowBarWidth := grdHeading.RowBarWidth;
grdInspector.Col[1].Width := grdHeading.Col[1].Width;
grdInspector.Update;
finally
grdHeading.EnablePaint := True;
end;
end;
end;
procedure TfrmCalEditor.SetDisplayModes;
begin
DisplayModeNames[0] := 'Alphabetical';
DisplayModeNames[1] := 'Structured';
end;
procedure TfrmCalEditor.FormResize(Sender: TObject);
begin
if sepSizerWidthDif <> -1 then
begin
sepSizer.Width := CalcMax(1, ClientWidth - sepSizerWidthDif);
pnlInspectorGrid.Width := CalcMin(ClientWidth, pnlInspectorGridAutoWidthMax);
grdInspector.Col[1].Width := Round(grdInspectorFirstColShare * grdInspector.Width);
end;
end;
procedure TfrmCalEditor.Splitter1Moved(Sender: TObject);
begin
pnlInspectorGridAutoWidthMax := pnlInspectorGrid.Width;
FormResize(Sender);
end;
procedure TfrmCalEditor.grdInspectorResize(Sender: TObject);
begin
grdInspector.Col[2].Width := grdInspector.ClientWidth - grdInspector.Col[1].Width - grdInspector.RowBarWidth + 1;
grdInspector.Refresh;
end;
procedure TfrmCalEditor.tsComponentEditorGetComponentInfo(Sender: TObject;
DisplayMode: TtsGroupElement);
begin
if not tsComponentEditor.DesignValuePropertiesInitialized then
tsComponentEditor.DesignValuePropertiesInitialized := True;
if DisplayMode.Name = 'Structured' then
begin
tsComponentEditor.AddProperty(DisplayMode, '', 'ShowSingleMonth');
tsComponentEditor.AddProperty(DisplayMode, '', 'CalendarRows');
tsComponentEditor.AddProperty(DisplayMode, '', 'MaxDate');
tsComponentEditor.AddProperty(DisplayMode, '', 'MinDate');
DisplayMode.AddGroup('', 'Options', True);
tsComponentEditor.AddProperty(DisplayMode, 'Options', 'DateTimeDisplay');
tsComponentEditor.AddProperty(DisplayMode, 'Options', 'SelectSaturday');
tsComponentEditor.AddProperty(DisplayMode, 'Options', 'SelectSunday');
tsComponentEditor.AddProperty(DisplayMode, 'Options', 'ShowSeconds');
tsComponentEditor.AddProperty(DisplayMode, 'Options', 'ShowToday');
tsComponentEditor.AddProperty(DisplayMode, 'Options', 'FirstDayOfWeek');
DisplayMode.AddGroup('', 'Appearance', False);
tsComponentEditor.AddProperty(DisplayMode, 'Appearance', 'ShowDayNames');
tsComponentEditor.AddProperty(DisplayMode, 'Appearance', 'ShowWeeknumbers');
DisplayMode.AddGroup('', 'Captions', False);
tsComponentEditor.AddProperty(DisplayMode, 'Captions', 'Caption');
tsComponentEditor.AddProperty(DisplayMode, 'Captions', 'OkCaption');
tsComponentEditor.AddProperty(DisplayMode, 'Captions', 'CancelCaption');
DisplayMode.AddGroup('Appearance', 'Font', False);
tsComponentEditor.AddProperty(DisplayMode, 'Appearance', 'Font');
tsComponentEditor.AddProperty(DisplayMode, 'Appearance', 'ParentFont');
DisplayMode.AddGroup('Appearance', 'Color', False);
tsComponentEditor.AddProperty(DisplayMode, 'Appearance.Color', 'Color');
tsComponentEditor.AddProperty(DisplayMode, 'Appearance.Color', 'LineColor');
tsComponentEditor.AddProperty(DisplayMode, 'Appearance.Color', 'MonthColor');
tsComponentEditor.AddProperty(DisplayMode, 'Appearance.Color', 'MonthFontColor');
tsComponentEditor.AddProperty(DisplayMode, 'Appearance.Color', 'WeekFontColor');
tsComponentEditor.AddProperty(DisplayMode, 'Appearance.Color', 'DayNameFontColor');
tsComponentEditor.AddProperty(DisplayMode, 'Appearance.Color', 'DisabledFontColor');
end;
end;
procedure TfrmCalEditor.tsComponentEditorSetValues(Sender: TObject;
State: tsScanObjectsState; Component: TPersistent;
PropertyElement: TtsPropertyElement; strValue: String; Value: Variant;
ValueSource: tsValueSource; ValueSet: Boolean; var Cancel: Boolean);
var
ComponentId: string;
OldName: string;
Success: Boolean;
begin
if State = soStart then
begin
if (PropertyElement.Parent = nil) and (PropertyElement.Name = 'Name')then
begin
OldName := DateTimeDefExample.Name;
Success := True;
try
if (ValueSource = vsValue) then
strValue := Value;
DateTimeDefExample.Name := strValue
except
raise;
Success := False;
end;
DateTimeDefExample.Name := OldName;
if Success then
begin
CurDateTimeDefName := strValue;
tsComponentEditor.DoGetComponentId(DateTimeDefExample, ComponentId);
PropertyElement := tsComponentEditor.PropertySet.GetItem(['Name']);
if PropertyElement <> nil then
tsComponentEditor.SetActualValue(ComponentId, PropertyElement, CurDateTimeDefName);
end;
Cancel := true;
end
end
else if (State = soEnd) and (PropertyElement.Name = 'CalendarRows') then
begin
if DateTimeDefExample.DateTimeProps.ShowSingleMonth then
ShowMessage('The property CalandarRows only applies when ''ShowSingleMonth = False''');
end;
end;
procedure TfrmCalEditor.grdInspectorKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
HelpKey: string;
begin
if Key = VK_F1 then
begin
HelpKey := GetHelpKey;
if HelpKey <> '' then
ShowHelpTopic(Handle, HelpKey)
end;
end;
function TfrmCalEditor.GetHelpKey: string;
begin
result := '';
if grdInspector.CurrentDataRow <= 0 then exit;
with grdInspector.InspectorRows[grdInspector.CurrentDataRow] do
begin
if InspectorElementType = iePropertyElement then
result := PropertyElement.Name;
end;
end;
procedure TfrmCalEditor.butOKClick(Sender: TObject);
begin
ButtonedExit := True;
SaveResult := True;
end;
procedure TfrmCalEditor.butCancelClick(Sender: TObject);
begin
ButtonedExit := True;
end;
procedure TfrmCalEditor.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
var
Answer: word;
begin
if TsDesign.ChangesMade and not ButtonedExit then
begin
Answer := MessageDlg('Do you want to save the changes made to ' + FComponentName + '?', mtWarning, [mbYes, mbNo, mbCancel], 0);
case Answer of
mrYes : SaveResult := True;
mrCancel : CanClose := False;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -