mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-26 11:17:57 +08:00
Fulfill rfe #750: Field editor - allow non quoted literals for default value
This commit is contained in:
@ -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
|
||||
|
@ -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'
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user