⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tsdatetimeeditor.pas

📁 企业进销存管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
        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 + -