From 1f39e5994045ef0d80b36883fd48f601d6eb56ed Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Sun, 17 Jan 2010 16:12:35 +0000 Subject: [PATCH] Disable non working column default values for given data type. Fixes issue #1519. --- source/grideditlinks.pas | 29 +++++++++++++++++++---------- source/table_editor.pas | 1 + 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/source/grideditlinks.pas b/source/grideditlinks.pas index 94292ff9..b4b84296 100644 --- a/source/grideditlinks.pas +++ b/source/grideditlinks.pas @@ -1117,20 +1117,29 @@ end; function TColumnDefaultEditorLink.PrepareEdit(Tree: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex): Boolean; stdcall; +var + DataTypeCategory: TDataTypeCategoryIndex; begin inherited PrepareEdit(Tree, Node, Column); - case DefaultType of - cdtNothing: FRadioNothing.Checked := True; - cdtText, cdtTextUpdateTS: begin - FRadioText.Checked := True; - FMemoText.Text := DefaultText; - end; - cdtNull, cdtNullUpdateTS: FRadioNull.Checked := True; - cdtCurTS, cdtCurTSUpdateTS: FRadioCurTS.Checked := True; - cdtAutoInc: FRadioAutoInc.Checked := True; - end; + // Check relevant radio button + FRadioNothing.Checked := DefaultType = cdtNothing; + FRadioText.Checked := DefaultType in [cdtText, cdtTextUpdateTS]; + FRadioNull.Checked := DefaultType in [cdtNull, cdtNullUpdateTS]; + FRadioCurTS.Checked := DefaultType in [cdtCurTS, cdtCurTSUpdateTS]; FCheckCurTS.Checked := DefaultType in [cdtTextUpdateTS, cdtNullUpdateTS, cdtCurTSUpdateTS]; + FRadioAutoInc.Checked := DefaultType = cdtAutoInc; + + if FRadioText.Checked then + FMemoText.Text := DefaultText; + + // Disable non working default options per data type + // But leave checked option enabled, regardless of if that is a valid default option or not + DataTypeCategory := Datatypes[Integer(Datatype)].Category; + FRadioCurTS.Enabled := FRadioCurTS.Checked or (DataType = dtTimestamp); + FCheckCurTS.Enabled := FCheckCurTS.Checked or FRadioCurTS.Enabled; + FRadioAutoInc.Enabled := FRadioAutoInc.Checked or (DataTypeCategory = dtcInteger); + Result := True; end; diff --git a/source/table_editor.pas b/source/table_editor.pas index 585efb1a..e60eba73 100644 --- a/source/table_editor.pas +++ b/source/table_editor.pas @@ -1250,6 +1250,7 @@ begin DefaultEditor := TColumnDefaultEditorLink.Create(VT); DefaultEditor.DefaultText := Col.DefaultText; DefaultEditor.DefaultType := Col.DefaultType; + DefaultEditor.DataType := Col.DataType.Index; EditLink := DefaultEditor; end else