Fulfill rfe #750: Field editor - allow non quoted literals for default value

This commit is contained in:
Ansgar Becker
2008-09-17 20:25:00 +00:00
parent 159c175375
commit b9724a5aaf
3 changed files with 70 additions and 24 deletions

View File

@ -1842,6 +1842,7 @@ var
dummy: Boolean;
hasCommentColumn: Boolean;
SelectedCaptions: WideStrings.TWideStringList;
defaultVal: WideString;
begin
// Table-Properties
dataselected := false;
@ -1894,8 +1895,12 @@ begin
else
// No default value.
VTRowDataListColumns[i-1].Captions.Add('')
else
VTRowDataListColumns[i-1].Captions.Add('''' + FSelectedTableColumns.FieldByName('Default').AsWideString + '''');
else begin
defaultVal := FSelectedTableColumns.FieldByName('Default').AsWideString;
if UpperCase(defaultVal) <> 'CURRENT_TIMESTAMP' then
defaultVal := '''' + defaultVal + '''';
VTRowDataListColumns[i-1].Captions.Add(defaultVal);
end;
VTRowDataListColumns[i-1].Captions.Add( FSelectedTableColumns.FieldByName('Extra').AsWideString );
if hasCommentColumn then

View File

@ -73,7 +73,7 @@ object FieldEditForm: TFieldEditForm
end
object lblComment: TLabel
Left = 8
Top = 136
Top = 160
Width = 49
Height = 13
Caption = '&Comment:'
@ -91,7 +91,7 @@ object FieldEditForm: TFieldEditForm
end
object EditDefault: TTntEdit
Left = 88
Top = 109
Top = 132
Width = 192
Height = 21
TabOrder = 5
@ -125,22 +125,22 @@ object FieldEditForm: TFieldEditForm
end
object GroupBoxAttributes: TGroupBox
Left = 8
Top = 168
Top = 184
Width = 272
Height = 113
Height = 97
Caption = 'Attributes'
TabOrder = 7
object CheckBoxBinary: TCheckBox
Left = 16
Top = 24
Left = 9
Top = 21
Width = 65
Height = 17
Caption = 'Binary'
TabOrder = 0
end
object CheckBoxUnsigned: TCheckBox
Left = 16
Top = 48
Left = 9
Top = 45
Width = 65
Height = 17
Caption = 'Unsigned'
@ -148,8 +148,8 @@ object FieldEditForm: TFieldEditForm
OnClick = CheckBoxUnsignedClick
end
object CheckBoxZerofill: TCheckBox
Left = 16
Top = 72
Left = 9
Top = 69
Width = 57
Height = 17
Caption = 'Zerofill'
@ -157,16 +157,16 @@ object FieldEditForm: TFieldEditForm
OnClick = CheckBoxZerofillClick
end
object CheckBoxNotNull: TCheckBox
Left = 128
Top = 24
Left = 121
Top = 21
Width = 69
Height = 17
Caption = 'Not Null'
TabOrder = 3
end
object CheckBoxAutoIncrement: TCheckBox
Left = 128
Top = 48
Left = 121
Top = 45
Width = 97
Height = 17
Caption = 'AutoIncrement'
@ -184,11 +184,25 @@ object FieldEditForm: TFieldEditForm
end
object EditComment: TTntEdit
Left = 88
Top = 133
Top = 157
Width = 192
Height = 21
TabOrder = 6
end
object comboDefault: TComboBox
Left = 88
Top = 109
Width = 192
Height = 21
Style = csDropDownList
ItemHeight = 13
TabOrder = 8
OnChange = comboDefaultChange
Items.Strings = (
'NULL'
'CURRENT_TIMESTAMP'
'Custom string ...')
end
end
object tabIndexes: TTabSheet
Caption = 'Indexes'

View File

@ -11,7 +11,7 @@ interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, ImgList, ToolWin, ExtCtrls, Buttons, VirtualTrees,
PngSpeedButton, TntStdCtrls, WideStrings;
PngSpeedButton, TntStdCtrls, WideStrings, WideStrUtils;
type
TFieldEditorMode = (femFieldAdd,femFieldUpdate,femIndexEditor);
@ -56,6 +56,7 @@ type
btnDatatypeHelp: TButton;
lblComment: TLabel;
EditComment: TTntEdit;
comboDefault: TComboBox;
procedure FormCreate(Sender: TObject);
procedure btnDatatypeHelpClick(Sender: TObject);
procedure FormShow(Sender: TObject);
@ -85,6 +86,7 @@ type
TShiftState);
procedure ComboBoxTypeKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure listClick(Sender: TObject);
procedure comboDefaultChange(Sender: TObject);
private
{ Private declarations }
TempKeys : TStringList;
@ -104,6 +106,12 @@ type
{$I const.inc}
const
DEFAULT_NULL = 0;
DEFAULT_CURTS = 1;
DEFAULT_CUSTOM = 2;
implementation
uses
@ -204,6 +212,7 @@ begin
EditFieldName.Text := 'Enter column name';
ComboBoxType.ItemIndex := 1;
EditLength.Text := '';
comboDefault.ItemIndex := DEFAULT_NULL;
EditDefault.Text := '';
EditComment.Text := '';
CheckBoxUnsigned.Checked := true;
@ -220,7 +229,15 @@ begin
NodeData := ListColumns.GetNodeData(ListColumns.GetFirstSelected);
EditFieldname.Text := FFieldName;
EditLength.Text := getEnumValues( NodeData.Captions[1] );
EditDefault.Text := NodeData.Captions[3];
editDefault.Text := '';
if NodeData.Captions[3] = 'NULL' then
comboDefault.ItemIndex := DEFAULT_NULL
else if NodeData.Captions[3] = 'CURRENT_TIMESTAMP' then
comboDefault.ItemIndex := DEFAULT_CURTS
else begin
comboDefault.ItemIndex := DEFAULT_CUSTOM;
EditDefault.Text := WideDequotedStr(NodeData.Captions[3], '''');
end;
EditComment.Text := NodeData.Captions[5];
// extract field type
@ -410,13 +427,19 @@ begin
end;
// DEFAULT
EditDefault.Enabled := FieldType.HasDefault;
lblDefault.Enabled := EditDefault.Enabled;
comboDefault.Enabled := FieldType.HasDefault;
EditDefault.Enabled := FieldType.HasDefault and (comboDefault.ItemIndex = DEFAULT_CUSTOM);
lblDefault.Enabled := comboDefault.Enabled;
if not EditDefault.Enabled then
EditDefault.Text := ''; // Ensure text is empty
end;
procedure TFieldEditForm.comboDefaultChange(Sender: TObject);
begin
editDefault.Enabled := TCombobox(Sender).ItemIndex = DEFAULT_CUSTOM;
end;
{***
Add or update field
@ -472,10 +495,14 @@ begin
if CheckBoxZerofill.Checked = true then
strAttributes := strAttributes + ' ZEROFILL';
if (length(EditDefault.Text) > 0) and EditDefault.Enabled then
if comboDefault.Enabled then
begin
strDefault := ' DEFAULT ';
strDefault := strDefault + EditDefault.Text
case comboDefault.ItemIndex of
DEFAULT_NULL: strDefault := 'NULL';
DEFAULT_CURTS: strDefault := 'CURRENT_TIMESTAMP';
DEFAULT_CUSTOM: strDefault := esc(editDefault.Text);
end;
strDefault := ' DEFAULT '+strDefault;
end;
if CheckBoxNotNull.Enabled then