Enhancement in preferences dialog, SQL styles:

* Use AttrCount and Attribute[x] in SynEditHighlighters to iterate through available attributes, instead of doing less with more code.
* Use integer registry values for highlighter colors (were strings) and also integers for bold, italic, underline, strikeout (was one boolean per attribute).
a) optimizes registry access b) normalizes registry names and c) simplifies code. Unfortunately this breaks everyone's customized highlighter style - hopefully ok to do this is in an interim build.
This commit is contained in:
Ansgar Becker
2009-03-31 22:24:00 +00:00
parent bacb810ebd
commit cafd2a8c16
6 changed files with 59 additions and 180 deletions

View File

@ -69,30 +69,8 @@ const
REGNAME_LOGSQLWIDTH = 'logsqlwidth'; REGNAME_LOGSQLWIDTH = 'logsqlwidth';
DEFAULT_LOGSQLWIDTH = 2000; DEFAULT_LOGSQLWIDTH = 2000;
REGPREFIX_SQLATTRI = 'SQL Attr '; REGPREFIX_SQLATTRI = 'SQL Attr ';
REGPOSTFIX_SQL_BOLD = ' Bold'; REGPOSTFIX_SQL_COLOR = ' Color';
REGPOSTFIX_SQL_ITALIC = ' Italic'; REGPOSTFIX_SQL_STYLE = ' Style';
REGNAME_SQLCOLKEYATTRI = 'SQLColKeyAttri';
DEFAULT_SQLCOLKEYATTRI = $00FF0000; // clBlue;
REGNAME_SQLCOLFUNCTIONATTRI = 'SQLColFunctionAttri';
DEFAULT_SQLCOLFUNCTIONATTRI = $00800000; // clNavy
REGNAME_SQLCOLDATATYPEATTRI = 'SQLColDataTypeAttri';
DEFAULT_SQLCOLDATATYPEATTRI = $00000080; // clMaroon;
REGNAME_SQLCOLNUMBERATTRI = 'SQLColNumberAttri';
DEFAULT_SQLCOLNUMBERATTRI = $00800080; // clPurple;
REGNAME_SQLCOLSTRINGATTRI = 'SQLColStringAttri';
DEFAULT_SQLCOLSTRINGATTRI = $00008000; // clGreen
REGNAME_SQLCOLCOMMENTATTRI = 'SQLColCommentAttri';
DEFAULT_SQLCOLCOMMENTATTRI = $00808080; // clGray
REGNAME_SQLCOLCONDCOMMATTRI = 'SQLColConditionalCommentAttri';
DEFAULT_SQLCOLCONDCOMMATTRI = $00808080; // clGray
REGNAME_SQLCOLTABLENAMEATTRI = 'SQLColTablenameAttri';
DEFAULT_SQLCOLTABLENAMEATTRI = $00FF00FF; // clFuchsia
REGNAME_SQLCOLSYMBOLATTRI = 'SQLColSymbolAttri';
DEFAULT_SQLCOLSYMBOLATTRI = $00000000; // black
REGNAME_SQLCOLIDENTATTRI = 'SQLColIdentAttri';
DEFAULT_SQLCOLIDENTATTRI = $00008080; // olive
REGNAME_SQLCOLDELIMIDENTATTRI = 'SQLColDelimIdentAttri';
DEFAULT_SQLCOLDELIMIDENTATTRI = $00008080; // olive
REGNAME_SQLCOLACTIVELINE = 'SQLColActiveLine'; REGNAME_SQLCOLACTIVELINE = 'SQLColActiveLine';
DEFAULT_SQLCOLACTIVELINE = $00FFFFFF; // clWhite DEFAULT_SQLCOLACTIVELINE = $00FFFFFF; // clWhite
REGNAME_MAXCOLWIDTH = 'MaxColWidth'; REGNAME_MAXCOLWIDTH = 'MaxColWidth';

View File

@ -187,7 +187,7 @@ type
procedure EnableProgressBar(MaxValue: Integer); procedure EnableProgressBar(MaxValue: Integer);
function CompareNumbers(List: TStringList; Index1, Index2: Integer): Integer; function CompareNumbers(List: TStringList; Index1, Index2: Integer): Integer;
function ListIndexByRegExpr(List: TWideStrings; Expression: WideString): Integer; function ListIndexByRegExpr(List: TWideStrings; Expression: WideString): Integer;
procedure RestoreSyneditStyle(Attri: TSynHighlighterAttributes; ColorRegName: String; ColorDefault: Integer); procedure RestoreSyneditStyles(Highlighter: TSynCustomHighlighter);
var var
MYSQL_KEYWORDS : TStringList; MYSQL_KEYWORDS : TStringList;
MainReg : TRegistry; MainReg : TRegistry;
@ -2988,18 +2988,18 @@ begin
end; end;
procedure RestoreSyneditStyle(Attri: TSynHighlighterAttributes; ColorRegName: String; ColorDefault: Integer); procedure RestoreSyneditStyles(Highlighter: TSynCustomHighlighter);
var
i: Integer;
Attri: TSynHighlighterAttributes;
begin begin
// Read font color, bold + italic style of a SynEdit attribute set from registry // Read font color, bold + italic style of SynEdit attributes from registry
Attri.Foreground := StringToColor(GetRegValue(ColorRegName, ColorToString(ColorDefault))); // Default colors defined and used from highlighter on main form
if GetRegValue(REGPREFIX_SQLATTRI+Attri.FriendlyName+REGPOSTFIX_SQL_BOLD, fsBold in Attri.Style) then for i := 0 to Highlighter.AttrCount - 1 do begin
Attri.Style := Attri.Style + [fsBold] Attri := Highlighter.Attribute[i];
else Attri.Foreground := GetRegValue(REGPREFIX_SQLATTRI+Attri.FriendlyName+REGPOSTFIX_SQL_COLOR, Mainform.SynSQLSyn1.Attribute[i].Foreground);
Attri.Style := Attri.Style - [fsBold]; Attri.IntegerStyle := GetRegValue(REGPREFIX_SQLATTRI+Attri.FriendlyName+REGPOSTFIX_SQL_STYLE, Mainform.SynSQLSyn1.Attribute[i].IntegerStyle)
if GetRegValue(REGPREFIX_SQLATTRI+Attri.FriendlyName+REGPOSTFIX_SQL_ITALIC, fsItalic in Attri.Style) then end;
Attri.Style := Attri.Style + [fsItalic]
else
Attri.Style := Attri.Style - [fsItalic];
end; end;

View File

@ -6133,8 +6133,11 @@ object MainForm: TMainForm
object SynSQLSyn1: TSynSQLSyn object SynSQLSyn1: TSynSQLSyn
DefaultFilter = 'SQL files (*.sql)|*.sql' DefaultFilter = 'SQL files (*.sql)|*.sql'
CommentAttri.Foreground = clGray CommentAttri.Foreground = clGray
ConditionalCommentAttri.Foreground = clGray
DataTypeAttri.Foreground = clMaroon DataTypeAttri.Foreground = clMaroon
DelimitedIdentifierAttri.Foreground = clOlive
FunctionAttri.Foreground = clNavy FunctionAttri.Foreground = clNavy
IdentifierAttri.Foreground = clOlive
KeyAttri.Foreground = clBlue KeyAttri.Foreground = clBlue
NumberAttri.Foreground = clPurple NumberAttri.Foreground = clPurple
StringAttri.Foreground = clGreen StringAttri.Foreground = clGreen

View File

@ -1429,17 +1429,7 @@ begin
prefEnableNullBG := GetRegValue(REGNAME_BG_NULL_ENABLED, DEFAULT_BG_NULL_ENABLED); prefEnableNullBG := GetRegValue(REGNAME_BG_NULL_ENABLED, DEFAULT_BG_NULL_ENABLED);
// Color coding: // Color coding:
RestoreSyneditStyle(SynSQLSyn1.KeyAttri, REGNAME_SQLCOLKEYATTRI, DEFAULT_SQLCOLKEYATTRI); RestoreSyneditStyles(SynSQLSyn1);
RestoreSyneditStyle(SynSQLSyn1.FunctionAttri, REGNAME_SQLCOLFUNCTIONATTRI, DEFAULT_SQLCOLFUNCTIONATTRI);
RestoreSyneditStyle(SynSQLSyn1.DataTypeAttri, REGNAME_SQLCOLDATATYPEATTRI, DEFAULT_SQLCOLDATATYPEATTRI);
RestoreSyneditStyle(SynSQLSyn1.NumberAttri, REGNAME_SQLCOLNUMBERATTRI, DEFAULT_SQLCOLNUMBERATTRI);
RestoreSyneditStyle(SynSQLSyn1.StringAttri, REGNAME_SQLCOLSTRINGATTRI, DEFAULT_SQLCOLSTRINGATTRI);
RestoreSyneditStyle(SynSQLSyn1.CommentAttri, REGNAME_SQLCOLCOMMENTATTRI, DEFAULT_SQLCOLCOMMENTATTRI);
RestoreSyneditStyle(SynSQLSyn1.ConditionalCommentAttri, REGNAME_SQLCOLCONDCOMMATTRI, DEFAULT_SQLCOLCONDCOMMATTRI);
RestoreSyneditStyle(SynSQLSyn1.TableNameAttri, REGNAME_SQLCOLTABLENAMEATTRI, DEFAULT_SQLCOLTABLENAMEATTRI);
RestoreSyneditStyle(SynSQLSyn1.SymbolAttri, REGNAME_SQLCOLSYMBOLATTRI, DEFAULT_SQLCOLSYMBOLATTRI);
RestoreSyneditStyle(SynSQLSyn1.IdentifierAttri, REGNAME_SQLCOLIDENTATTRI, DEFAULT_SQLCOLIDENTATTRI);
RestoreSyneditStyle(SynSQLSyn1.DelimitedIdentifierAttri, REGNAME_SQLCOLDELIMIDENTATTRI, DEFAULT_SQLCOLDELIMIDENTATTRI);
SynMemoQuery.ActiveLineColor := StringToColor(GetRegValue(REGNAME_SQLCOLACTIVELINE, ColorToString(DEFAULT_SQLCOLACTIVELINE))); SynMemoQuery.ActiveLineColor := StringToColor(GetRegValue(REGNAME_SQLCOLACTIVELINE, ColorToString(DEFAULT_SQLCOLACTIVELINE)));
// Switch off/on displaying table/db sized in tree // Switch off/on displaying table/db sized in tree

View File

@ -272,7 +272,7 @@ object optionsform: Toptionsform
Top = 33 Top = 33
Width = 124 Width = 124
Height = 22 Height = 22
Style = [cbStandardColors, cbExtendedColors, cbCustomColor, cbPrettyNames, cbCustomColors] Style = [cbStandardColors, cbExtendedColors, cbIncludeNone, cbCustomColor, cbPrettyNames, cbCustomColors]
ItemHeight = 16 ItemHeight = 16
TabOrder = 1 TabOrder = 1
OnChange = SQLFontChange OnChange = SQLFontChange

View File

@ -124,20 +124,6 @@ implementation
uses main, helpers; uses main, helpers;
{$R *.DFM} {$R *.DFM}
const
SQLEL_KEYWORD = 'Keywords';
SQLEL_FUNCTION = 'Functions';
SQLEL_DATATYPE = 'Data types';
SQLEL_NUMBER = 'Numeric values';
SQLEL_STRING = 'String values';
SQLEL_COMMENT = 'Comments';
SQLEL_CONDCOMM = 'Conditional comments';
SQLEL_TABLE = 'Table names';
SQLEL_SYMBOL = 'Symbols';
SQLEL_IDENT = 'Identifiers';
SQLEL_DELIMIDENT = 'Delimited identifiers';
SQLEL_ACTLINE = 'Active line background';
procedure Toptionsform.Modified(Sender: TObject); procedure Toptionsform.Modified(Sender: TObject);
begin begin
@ -166,6 +152,9 @@ end;
Apply settings to registry and mainform Apply settings to registry and mainform
} }
procedure Toptionsform.Apply(Sender: TObject); procedure Toptionsform.Apply(Sender: TObject);
var
i: Integer;
Attri: TSynHighlighterAttributes;
begin begin
Screen.Cursor := crHourGlass; Screen.Cursor := crHourGlass;
@ -179,42 +168,13 @@ begin
MainReg.WriteInteger(REGNAME_FONTSIZE, updownSQLFontSize.Position); MainReg.WriteInteger(REGNAME_FONTSIZE, updownSQLFontSize.Position);
MainReg.WriteInteger(REGNAME_LOGSQLNUM, updownLogLines.Position); MainReg.WriteInteger(REGNAME_LOGSQLNUM, updownLogLines.Position);
MainReg.WriteInteger(REGNAME_LOGSQLWIDTH, updownLogSnip.Position); MainReg.WriteInteger(REGNAME_LOGSQLWIDTH, updownLogSnip.Position);
MainReg.WriteString(REGNAME_SQLCOLKEYATTRI, colortostring(SynSQLSynSQLSample.KeyAttri.Foreground)); for i:=0 to SynSQLSynSQLSample.AttrCount - 1 do begin
MainReg.WriteString(REGNAME_SQLCOLFUNCTIONATTRI, colortostring(SynSQLSynSQLSample.FunctionAttri.Foreground)); Attri := SynSQLSynSQLSample.Attribute[i];
MainReg.WriteString(REGNAME_SQLCOLDATATYPEATTRI, colortostring(SynSQLSynSQLSample.DataTypeAttri.Foreground)); MainReg.WriteInteger(REGPREFIX_SQLATTRI+Attri.FriendlyName+REGPOSTFIX_SQL_COLOR, Attri.Foreground);
MainReg.WriteString(REGNAME_SQLCOLNUMBERATTRI, colortostring(SynSQLSynSQLSample.NumberAttri.Foreground)); MainReg.WriteInteger(REGPREFIX_SQLATTRI+Attri.FriendlyName+REGPOSTFIX_SQL_STYLE, Attri.IntegerStyle);
MainReg.WriteString(REGNAME_SQLCOLSTRINGATTRI, colortostring(SynSQLSynSQLSample.StringAttri.Foreground)); end;
MainReg.WriteString(REGNAME_SQLCOLCOMMENTATTRI, colortostring(SynSQLSynSQLSample.CommentAttri.Foreground));
MainReg.WriteString(REGNAME_SQLCOLCONDCOMMATTRI, colortostring(SynSQLSynSQLSample.ConditionalCommentAttri.Foreground));
MainReg.WriteString(REGNAME_SQLCOLTABLENAMEATTRI, colortostring(SynSQLSynSQLSample.TableNameAttri.Foreground));
MainReg.WriteString(REGNAME_SQLCOLSYMBOLATTRI, colortostring(SynSQLSynSQLSample.SymbolAttri.Foreground));
MainReg.WriteString(REGNAME_SQLCOLIDENTATTRI, colortostring(SynSQLSynSQLSample.IdentifierAttri.Foreground));
MainReg.WriteString(REGNAME_SQLCOLDELIMIDENTATTRI, colortostring(SynSQLSynSQLSample.DelimitedIdentifierAttri.Foreground));
MainReg.WriteString(REGNAME_SQLCOLACTIVELINE, ColorToString(SynMemoSQLSample.ActiveLineColor)); MainReg.WriteString(REGNAME_SQLCOLACTIVELINE, ColorToString(SynMemoSQLSample.ActiveLineColor));
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.KeyAttri.FriendlyName+REGPOSTFIX_SQL_BOLD, fsBold in SynSQLSynSQLSample.KeyAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.KeyAttri.FriendlyName+REGPOSTFIX_SQL_ITALIC, fsItalic in SynSQLSynSQLSample.KeyAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.FunctionAttri.FriendlyName+REGPOSTFIX_SQL_BOLD, fsBold in SynSQLSynSQLSample.FunctionAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.FunctionAttri.FriendlyName+REGPOSTFIX_SQL_ITALIC, fsItalic in SynSQLSynSQLSample.FunctionAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.DataTypeAttri.FriendlyName+REGPOSTFIX_SQL_BOLD, fsBold in SynSQLSynSQLSample.DataTypeAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.DataTypeAttri.FriendlyName+REGPOSTFIX_SQL_ITALIC, fsItalic in SynSQLSynSQLSample.DataTypeAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.NumberAttri.FriendlyName+REGPOSTFIX_SQL_BOLD, fsBold in SynSQLSynSQLSample.NumberAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.NumberAttri.FriendlyName+REGPOSTFIX_SQL_ITALIC, fsItalic in SynSQLSynSQLSample.NumberAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.StringAttri.FriendlyName+REGPOSTFIX_SQL_BOLD, fsBold in SynSQLSynSQLSample.StringAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.StringAttri.FriendlyName+REGPOSTFIX_SQL_ITALIC, fsItalic in SynSQLSynSQLSample.StringAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.CommentAttri.FriendlyName+REGPOSTFIX_SQL_BOLD, fsBold in SynSQLSynSQLSample.CommentAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.CommentAttri.FriendlyName+REGPOSTFIX_SQL_ITALIC, fsItalic in SynSQLSynSQLSample.CommentAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.ConditionalCommentAttri.FriendlyName+REGPOSTFIX_SQL_BOLD, fsBold in SynSQLSynSQLSample.ConditionalCommentAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.ConditionalCommentAttri.FriendlyName+REGPOSTFIX_SQL_ITALIC, fsItalic in SynSQLSynSQLSample.ConditionalCommentAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.TableNameAttri.FriendlyName+REGPOSTFIX_SQL_BOLD, fsBold in SynSQLSynSQLSample.TableNameAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.TableNameAttri.FriendlyName+REGPOSTFIX_SQL_ITALIC, fsItalic in SynSQLSynSQLSample.TableNameAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.SymbolAttri.FriendlyName+REGPOSTFIX_SQL_BOLD, fsBold in SynSQLSynSQLSample.SymbolAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.SymbolAttri.FriendlyName+REGPOSTFIX_SQL_ITALIC, fsItalic in SynSQLSynSQLSample.SymbolAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.IdentifierAttri.FriendlyName+REGPOSTFIX_SQL_BOLD, fsBold in SynSQLSynSQLSample.IdentifierAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.IdentifierAttri.FriendlyName+REGPOSTFIX_SQL_ITALIC, fsItalic in SynSQLSynSQLSample.IdentifierAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.DelimitedIdentifierAttri.FriendlyName+REGPOSTFIX_SQL_BOLD, fsBold in SynSQLSynSQLSample.DelimitedIdentifierAttri.Style);
MainReg.WriteBool(REGPREFIX_SQLATTRI+SynSQLSynSQLSample.DelimitedIdentifierAttri.FriendlyName+REGPOSTFIX_SQL_ITALIC, fsItalic in SynSQLSynSQLSample.DelimitedIdentifierAttri.Style);
MainReg.WriteString(REGNAME_CSV_SEPARATOR, editCSVSeparator.Text); MainReg.WriteString(REGNAME_CSV_SEPARATOR, editCSVSeparator.Text);
MainReg.WriteString(REGNAME_CSV_ENCLOSER, editCSVEncloser.Text); MainReg.WriteString(REGNAME_CSV_ENCLOSER, editCSVEncloser.Text);
MainReg.WriteString(REGNAME_CSV_TERMINATOR, editCSVTerminator.Text); MainReg.WriteString(REGNAME_CSV_TERMINATOR, editCSVTerminator.Text);
@ -249,17 +209,9 @@ begin
Mainform.SynMemoSQLLog.Gutter.Font := SynMemoSQLSample.Font; Mainform.SynMemoSQLLog.Gutter.Font := SynMemoSQLSample.Font;
Mainform.SynMemoProcessView.Font := SynMemoSQLSample.Font; Mainform.SynMemoProcessView.Font := SynMemoSQLSample.Font;
Mainform.SynMemoFilter.Font := SynMemoSQLSample.Font; Mainform.SynMemoFilter.Font := SynMemoSQLSample.Font;
Mainform.SynSQLSyn1.KeyAttri.AssignColorAndStyle(SynSQLSynSQLSample.KeyAttri); for i := 0 to SynSQLSynSQLSample.AttrCount - 1 do begin
Mainform.SynSQLSyn1.FunctionAttri.AssignColorAndStyle(SynSQLSynSQLSample.FunctionAttri); Mainform.SynSQLSyn1.Attribute[i].AssignColorAndStyle(SynSQLSynSQLSample.Attribute[i]);
Mainform.SynSQLSyn1.DataTypeAttri.AssignColorAndStyle(SynSQLSynSQLSample.DataTypeAttri); end;
Mainform.SynSQLSyn1.NumberAttri.AssignColorAndStyle(SynSQLSynSQLSample.NumberAttri);
Mainform.SynSQLSyn1.StringAttri.AssignColorAndStyle(SynSQLSynSQLSample.StringAttri);
Mainform.SynSQLSyn1.CommentAttri.AssignColorAndStyle(SynSQLSynSQLSample.CommentAttri);
Mainform.SynSQLSyn1.ConditionalCommentAttri.AssignColorAndStyle(SynSQLSynSQLSample.ConditionalCommentAttri);
Mainform.SynSQLSyn1.TablenameAttri.AssignColorAndStyle(SynSQLSynSQLSample.TablenameAttri);
Mainform.SynSQLSyn1.SymbolAttri.AssignColorAndStyle(SynSQLSynSQLSample.SymbolAttri);
Mainform.SynSQLSyn1.IdentifierAttri.AssignColorAndStyle(SynSQLSynSQLSample.IdentifierAttri);
Mainform.SynSQLSyn1.DelimitedIdentifierAttri.AssignColorAndStyle(SynSQLSynSQLSample.DelimitedIdentifierAttri);
Mainform.SynMemoQuery.ActiveLineColor := SynMemoSQLSample.ActiveLineColor; Mainform.SynMemoQuery.ActiveLineColor := SynMemoSQLSample.ActiveLineColor;
Mainform.DataGrid.Font.Name := comboDataFontName.Text; Mainform.DataGrid.Font.Name := comboDataFontName.Text;
Mainform.QueryGrid.Font.Name := comboDataFontName.Text; Mainform.QueryGrid.Font.Name := comboDataFontName.Text;
@ -303,6 +255,8 @@ end;
procedure Toptionsform.FormCreate(Sender: TObject); procedure Toptionsform.FormCreate(Sender: TObject);
var
i: Integer;
// Callback function used by EnumFontFamilies() // Callback function used by EnumFontFamilies()
function EnumFixedProc(lpelf: PEnumLogFont; lpntm: PNewTextMetric; FontType: Integer; Data: LPARAM): Integer; stdcall; function EnumFixedProc(lpelf: PEnumLogFont; lpntm: PNewTextMetric; FontType: Integer; Data: LPARAM): Integer; stdcall;
begin begin
@ -321,11 +275,9 @@ begin
'CREATE TABLE /*!32312 IF NOT EXISTS*/ tableB' + CRLF + 'CREATE TABLE /*!32312 IF NOT EXISTS*/ tableB' + CRLF +
' (id INT, name VARCHAR(30) DEFAULT "standard")'; ' (id INT, name VARCHAR(30) DEFAULT "standard")';
SynSQLSynSQLSample.TableNames.CommaText := 'tableA,tableB'; SynSQLSynSQLSample.TableNames.CommaText := 'tableA,tableB';
comboSQLColElement.Items.Delimiter := ','; for i:=0 to SynSQLSynSQLSample.AttrCount - 1 do
comboSQLColElement.Items.StrictDelimiter := True; comboSQLColElement.Items.Add(SynSQLSynSQLSample.Attribute[i].FriendlyName);
comboSQLColElement.Items.DelimitedText := SQLEL_KEYWORD+','+SQLEL_FUNCTION+','+SQLEL_DATATYPE+','+ comboSQLColElement.Items.Add('Active line background');
SQLEL_NUMBER+','+SQLEL_STRING+','+SQLEL_COMMENT+','+SQLEL_CONDCOMM+','+SQLEL_TABLE+','+
SQLEL_SYMBOL+','+SQLEL_IDENT+','+SQLEL_DELIMIDENT+','+SQLEL_ACTLINE;
comboSQLColElement.ItemIndex := 0; comboSQLColElement.ItemIndex := 0;
end; end;
@ -366,17 +318,7 @@ begin
btnOpenLogFolder.Enabled := DirectoryExists(DirnameSessionLogs); btnOpenLogFolder.Enabled := DirectoryExists(DirnameSessionLogs);
// SQL: // SQL:
RestoreSyneditStyle(SynSQLSynSQLSample.KeyAttri, REGNAME_SQLCOLKEYATTRI, DEFAULT_SQLCOLKEYATTRI); RestoreSyneditStyles(SynSQLSynSQLSample);
RestoreSyneditStyle(SynSQLSynSQLSample.FunctionAttri, REGNAME_SQLCOLFUNCTIONATTRI, DEFAULT_SQLCOLFUNCTIONATTRI);
RestoreSyneditStyle(SynSQLSynSQLSample.DataTypeAttri, REGNAME_SQLCOLDATATYPEATTRI, DEFAULT_SQLCOLDATATYPEATTRI);
RestoreSyneditStyle(SynSQLSynSQLSample.NumberAttri, REGNAME_SQLCOLNUMBERATTRI, DEFAULT_SQLCOLNUMBERATTRI);
RestoreSyneditStyle(SynSQLSynSQLSample.StringAttri, REGNAME_SQLCOLSTRINGATTRI, DEFAULT_SQLCOLSTRINGATTRI);
RestoreSyneditStyle(SynSQLSynSQLSample.CommentAttri, REGNAME_SQLCOLCOMMENTATTRI, DEFAULT_SQLCOLCOMMENTATTRI);
RestoreSyneditStyle(SynSQLSynSQLSample.ConditionalCommentAttri, REGNAME_SQLCOLCONDCOMMATTRI, DEFAULT_SQLCOLCONDCOMMATTRI);
RestoreSyneditStyle(SynSQLSynSQLSample.TableNameAttri, REGNAME_SQLCOLTABLENAMEATTRI, DEFAULT_SQLCOLTABLENAMEATTRI);
RestoreSyneditStyle(SynSQLSynSQLSample.SymbolAttri, REGNAME_SQLCOLSYMBOLATTRI, DEFAULT_SQLCOLSYMBOLATTRI);
RestoreSyneditStyle(SynSQLSynSQLSample.IdentifierAttri, REGNAME_SQLCOLIDENTATTRI, DEFAULT_SQLCOLIDENTATTRI);
RestoreSyneditStyle(SynSQLSynSQLSample.DelimitedIdentifierAttri, REGNAME_SQLCOLDELIMIDENTATTRI, DEFAULT_SQLCOLDELIMIDENTATTRI);
SynMemoSQLSample.ActiveLineColor := StringToColor(GetRegValue(REGNAME_SQLCOLACTIVELINE, ColorToString(DEFAULT_SQLCOLACTIVELINE))); SynMemoSQLSample.ActiveLineColor := StringToColor(GetRegValue(REGNAME_SQLCOLACTIVELINE, ColorToString(DEFAULT_SQLCOLACTIVELINE)));
comboSQLFontName.ItemIndex := comboSQLFontName.Items.IndexOf(sqlfontname); comboSQLFontName.ItemIndex := comboSQLFontName.Items.IndexOf(sqlfontname);
updownSQLFontSize.Position := sqlfontsize; updownSQLFontSize.Position := sqlfontsize;
@ -411,33 +353,23 @@ end;
procedure Toptionsform.SQLFontChange(Sender: TObject); procedure Toptionsform.SQLFontChange(Sender: TObject);
var var
elem: String; AttriIdx: Integer;
attr: TSynHighlighterAttributes; Attri: TSynHighlighterAttributes;
col: TColor; col: TColor;
begin begin
SynMemoSQLSample.Font.Name := comboSQLFontName.Items[comboSQLFontName.ItemIndex]; SynMemoSQLSample.Font.Name := comboSQLFontName.Items[comboSQLFontName.ItemIndex];
SynMemoSQLSample.Font.Size := updownSQLFontSize.Position; SynMemoSQLSample.Font.Size := updownSQLFontSize.Position;
elem := comboSQLColElement.Text; AttriIdx := comboSQLColElement.ItemIndex;
col := cboxSQLColColor.Selected; col := cboxSQLColColor.Selected;
if elem = SQLEL_ACTLINE then begin if AttriIdx = comboSQLColElement.Items.Count-1 then begin
SynMemoSQLSample.ActiveLineColor := col; SynMemoSQLSample.ActiveLineColor := col;
end else begin end else begin
if elem = SQLEL_KEYWORD then attr := SynSqlSynSQLSample.KeyAttri Attri := SynSqlSynSQLSample.Attribute[AttriIdx];
else if elem = SQLEL_FUNCTION then attr := SynSqlSynSQLSample.FunctionAttri Attri.Foreground := col;
else if elem = SQLEL_DATATYPE then attr := SynSqlSynSQLSample.DatatypeAttri if chkSQLBold.Checked then Attri.Style := Attri.Style + [fsBold]
else if elem = SQLEL_NUMBER then attr := SynSqlSynSQLSample.NumberAttri else Attri.Style := Attri.Style - [fsBold];
else if elem = SQLEL_STRING then attr := SynSqlSynSQLSample.StringAttri if chkSQLItalic.Checked then Attri.Style := Attri.Style + [fsItalic]
else if elem = SQLEL_COMMENT then attr := SynSqlSynSQLSample.CommentAttri else Attri.Style := Attri.Style - [fsItalic];
else if elem = SQLEL_CONDCOMM then attr := SynSqlSynSQLSample.ConditionalCommentAttri
else if elem = SQLEL_TABLE then attr := SynSqlSynSQLSample.TablenameAttri
else if elem = SQLEL_SYMBOL then attr := SynSqlSynSQLSample.SymbolAttri
else if elem = SQLEL_IDENT then attr := SynSqlSynSQLSample.IdentifierAttri
else attr := SynSqlSynSQLSample.DelimitedIdentifierAttri;
attr.Foreground := col;
if chkSQLBold.Checked then attr.Style := attr.Style + [fsBold]
else attr.Style := attr.Style - [fsBold];
if chkSQLItalic.Checked then attr.Style := attr.Style + [fsItalic]
else attr.Style := attr.Style - [fsItalic];
end; end;
Modified(Sender); Modified(Sender);
end; end;
@ -483,34 +415,24 @@ end;
procedure Toptionsform.comboSQLColElementChange(Sender: TObject); procedure Toptionsform.comboSQLColElementChange(Sender: TObject);
var var
elem: String; AttriIdx: Integer;
attr: TSynHighlighterAttributes; Attri: TSynHighlighterAttributes;
col: TColor; col: TColor;
begin begin
elem := comboSQLColElement.Text; AttriIdx := comboSQLColElement.ItemIndex;
if elem = SQLEL_ACTLINE then begin if AttriIdx = comboSQLColElement.Items.Count-1 then begin
col := SynMemoSQLSample.ActiveLineColor; col := SynMemoSQLSample.ActiveLineColor;
chkSQLBold.Enabled := False; chkSQLBold.Enabled := False;
chkSQLItalic.Enabled := False; chkSQLItalic.Enabled := False;
end else begin end else begin
if elem = SQLEL_KEYWORD then attr := SynSqlSynSQLSample.KeyAttri Attri := SynSqlSynSQLSample.Attribute[AttriIdx];
else if elem = SQLEL_FUNCTION then attr := SynSqlSynSQLSample.FunctionAttri col := Attri.Foreground;
else if elem = SQLEL_DATATYPE then attr := SynSqlSynSQLSample.DatatypeAttri
else if elem = SQLEL_NUMBER then attr := SynSqlSynSQLSample.NumberAttri
else if elem = SQLEL_STRING then attr := SynSqlSynSQLSample.StringAttri
else if elem = SQLEL_COMMENT then attr := SynSqlSynSQLSample.CommentAttri
else if elem = SQLEL_CONDCOMM then attr := SynSqlSynSQLSample.ConditionalCommentAttri
else if elem = SQLEL_TABLE then attr := SynSqlSynSQLSample.TablenameAttri
else if elem = SQLEL_SYMBOL then attr := SynSqlSynSQLSample.SymbolAttri
else if elem = SQLEL_IDENT then attr := SynSqlSynSQLSample.IdentifierAttri
else attr := SynSqlSynSQLSample.DelimitedIdentifierAttri;
col := attr.Foreground;
chkSQLBold.Enabled := True; chkSQLBold.Enabled := True;
chkSQLItalic.Enabled := True; chkSQLItalic.Enabled := True;
chkSQLBold.OnClick := nil; chkSQLBold.OnClick := nil;
chkSQLItalic.OnClick := nil; chkSQLItalic.OnClick := nil;
chkSQLBold.Checked := fsBold in attr.Style; chkSQLBold.Checked := fsBold in Attri.Style;
chkSQLItalic.Checked := fsItalic in attr.Style; chkSQLItalic.Checked := fsItalic in Attri.Style;
chkSQLBold.OnClick := SQLFontChange; chkSQLBold.OnClick := SQLFontChange;
chkSQLItalic.OnClick := SQLFontChange; chkSQLItalic.OnClick := SQLFontChange;
end; end;
@ -531,30 +453,16 @@ end;
procedure Toptionsform.SynMemoSQLSampleClick(Sender: TObject); procedure Toptionsform.SynMemoSQLSampleClick(Sender: TObject);
var var
Token: WideString; Token: WideString;
Start, TokenTypeInt: Integer;
Attri: TSynHighlighterAttributes; Attri: TSynHighlighterAttributes;
AttriIdx: Integer;
sm: TSynMemo; sm: TSynMemo;
f: String;
begin begin
sm := Sender as TSynMemo; sm := Sender as TSynMemo;
sm.GetHighlighterAttriAtRowColEx(sm.CaretXY, Token, TokenTypeInt, Start, Attri); sm.GetHighlighterAttriAtRowCol(sm.CaretXY, Token, Attri);
case TtkTokenKind(TokenTypeInt) of AttriIdx := ComboSQLColElement.Items.IndexOf(Attri.FriendlyName);
tkKey: f := SQLEL_KEYWORD; if AttriIdx = -1 then
tkFunction: f := SQLEL_FUNCTION;
tkDatatype: f := SQLEL_DATATYPE;
tkNumber: f := SQLEL_NUMBER;
tkString: f := SQLEL_STRING;
tkComment: f := SQLEL_COMMENT;
tkConditionalComment: f := SQLEL_CONDCOMM;
tkTableName: f := SQLEL_TABLE;
tkSymbol: f := SQLEL_SYMBOL;
tkIdentifier: f := SQLEL_IDENT;
tkDelimitedIdentifier: f := SQLEL_DELIMIDENT;
else f := '';
end;
if f = '' then
Exit; Exit;
ComboSQLColElement.ItemIndex := ComboSQLColElement.Items.IndexOf(f); ComboSQLColElement.ItemIndex := AttriIdx;
ComboSQLColElement.OnChange(Sender); ComboSQLColElement.OnChange(Sender);
end; end;