mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-06 18:24:26 +08:00

* 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.
471 lines
17 KiB
ObjectPascal
471 lines
17 KiB
ObjectPascal
unit options;
|
|
|
|
|
|
// -------------------------------------
|
|
// Preferences
|
|
// -------------------------------------
|
|
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
StdCtrls, ComCtrls, ExtCtrls, SynEditHighlighter, SynHighlighterSQL,
|
|
SynEdit, SynMemo;
|
|
|
|
type
|
|
Toptionsform = class(TForm)
|
|
pagecontrolMain: TPageControl;
|
|
tabMisc: TTabSheet;
|
|
btnCancel: TButton;
|
|
btnOK: TButton;
|
|
btnApply: TButton;
|
|
tabSQL: TTabSheet;
|
|
chkAutoReconnect: TCheckBox;
|
|
lblLogLinesHint: TLabel;
|
|
tabCSV: TTabSheet;
|
|
grpCSV: TGroupBox;
|
|
lblCSVSeparator: TLabel;
|
|
editCSVSeparator: TEdit;
|
|
editCSVEncloser: TEdit;
|
|
lblCSVTerminator: TLabel;
|
|
lblCSVEncloser: TLabel;
|
|
editCSVTerminator: TEdit;
|
|
lblCSVHintCR: TLabel;
|
|
lblCSVHintLF: TLabel;
|
|
lblCSVHintTAB: TLabel;
|
|
lblCSVHintEscaped: TLabel;
|
|
tabData: TTabSheet;
|
|
lblDataFont: TLabel;
|
|
comboDataFontName: TComboBox;
|
|
editDataFontSize: TEdit;
|
|
updownDataFontSize: TUpDown;
|
|
lblDataFontHint: TLabel;
|
|
lblMaxColWidth: TLabel;
|
|
updownLogLines: TUpDown;
|
|
editLogLines: TEdit;
|
|
editMaxColWidth: TEdit;
|
|
updownMaxColWidth: TUpDown;
|
|
chkRestoreLastDB: TCheckBox;
|
|
chkLogToFile: TCheckBox;
|
|
btnOpenLogFolder: TButton;
|
|
lblLogSnip: TLabel;
|
|
editLogSnip: TEdit;
|
|
updownLogSnip: TUpDown;
|
|
lblLogSnipHint: TLabel;
|
|
chkUpdatecheck: TCheckBox;
|
|
editUpdatecheckInterval: TEdit;
|
|
updownUpdatecheckInterval: TUpDown;
|
|
chkUpdateCheckBuilds: TCheckBox;
|
|
grpFieldLayout: TGroupBox;
|
|
lblFieldDatetime: TLabel;
|
|
cboxText: TColorBox;
|
|
lblFieldText: TLabel;
|
|
lblFieldBinary: TLabel;
|
|
lblFieldNumeric: TLabel;
|
|
lblFieldEnum: TLabel;
|
|
cboxBinary: TColorBox;
|
|
cboxDatetime: TColorBox;
|
|
cboxNumeric: TColorBox;
|
|
cboxEnum: TColorBox;
|
|
chkEditorBinary: TCheckBox;
|
|
chkEditorDatetime: TCheckBox;
|
|
chkEditorEnum: TCheckBox;
|
|
lblFieldSet: TLabel;
|
|
cboxSet: TColorBox;
|
|
chkEditorSet: TCheckBox;
|
|
chkNullBG: TCheckBox;
|
|
lblFieldNull: TLabel;
|
|
cboxNullBG: TColorBox;
|
|
grpSQLFont: TGroupBox;
|
|
comboSQLFontName: TComboBox;
|
|
lblSQLFontSize: TLabel;
|
|
editSQLFontSize: TEdit;
|
|
updownSQLFontSize: TUpDown;
|
|
grpSQLColors: TGroupBox;
|
|
comboSQLColElement: TComboBox;
|
|
lblSQLColElement: TLabel;
|
|
lblSQLColColor: TLabel;
|
|
cboxSQLColColor: TColorBox;
|
|
grpSQLSample: TGroupBox;
|
|
SynMemoSQLSample: TSynMemo;
|
|
SynSQLSynSQLSample: TSynSQLSyn;
|
|
lblCopyDataMaxSize: TLabel;
|
|
editCopyDataMaxSize: TEdit;
|
|
updownCopyDataMaxSize: TUpDown;
|
|
chkSQLBold: TCheckBox;
|
|
chkSQLItalic: TCheckBox;
|
|
procedure FormShow(Sender: TObject);
|
|
procedure Modified(Sender: TObject);
|
|
procedure Apply(Sender: TObject);
|
|
procedure SQLFontChange(Sender: TObject);
|
|
procedure DataFontsChange(Sender: TObject);
|
|
procedure anyUpDownLimitChanging(Sender: TObject;
|
|
var AllowChange: Boolean);
|
|
procedure btnOpenLogFolderClick(Sender: TObject);
|
|
procedure chkUpdatecheckClick(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure chkNullBGClick(Sender: TObject);
|
|
procedure comboSQLColElementChange(Sender: TObject);
|
|
procedure pagecontrolMainChanging(Sender: TObject;
|
|
var AllowChange: Boolean);
|
|
procedure pagecontrolMainChange(Sender: TObject);
|
|
procedure updownSQLFontSizeClick(Sender: TObject; Button: TUDBtnType);
|
|
procedure SynMemoSQLSampleClick(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
FWasModified: Boolean;
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
|
|
implementation
|
|
uses main, helpers;
|
|
{$R *.DFM}
|
|
|
|
|
|
procedure Toptionsform.Modified(Sender: TObject);
|
|
begin
|
|
// Modified
|
|
btnApply.Enabled := True;
|
|
end;
|
|
|
|
|
|
procedure Toptionsform.pagecontrolMainChanging(Sender: TObject;
|
|
var AllowChange: Boolean);
|
|
begin
|
|
// Remember modification state. First tab switch leads TEdit's with TUpDown
|
|
// to fire OnChange. Avoid enabling the buttons in that case.
|
|
FWasModified := btnApply.Enabled;
|
|
end;
|
|
|
|
|
|
procedure Toptionsform.pagecontrolMainChange(Sender: TObject);
|
|
begin
|
|
// See OnChanging procedure
|
|
btnApply.Enabled := FWasModified;
|
|
end;
|
|
|
|
|
|
{**
|
|
Apply settings to registry and mainform
|
|
}
|
|
procedure Toptionsform.Apply(Sender: TObject);
|
|
var
|
|
i: Integer;
|
|
Attri: TSynHighlighterAttributes;
|
|
begin
|
|
Screen.Cursor := crHourGlass;
|
|
|
|
// Open registry key
|
|
OpenRegistry;
|
|
|
|
// Save values
|
|
MainReg.WriteBool(REGNAME_AUTORECONNECT, chkAutoReconnect.Checked);
|
|
MainReg.WriteBool(REGNAME_RESTORELASTUSEDDB, chkRestoreLastDB.Checked);
|
|
MainReg.WriteString(REGNAME_FONTNAME, comboSQLFontName.Text);
|
|
MainReg.WriteInteger(REGNAME_FONTSIZE, updownSQLFontSize.Position);
|
|
MainReg.WriteInteger(REGNAME_LOGSQLNUM, updownLogLines.Position);
|
|
MainReg.WriteInteger(REGNAME_LOGSQLWIDTH, updownLogSnip.Position);
|
|
for i:=0 to SynSQLSynSQLSample.AttrCount - 1 do begin
|
|
Attri := SynSQLSynSQLSample.Attribute[i];
|
|
MainReg.WriteInteger(REGPREFIX_SQLATTRI+Attri.FriendlyName+REGPOSTFIX_SQL_COLOR, Attri.Foreground);
|
|
MainReg.WriteInteger(REGPREFIX_SQLATTRI+Attri.FriendlyName+REGPOSTFIX_SQL_STYLE, Attri.IntegerStyle);
|
|
end;
|
|
MainReg.WriteString(REGNAME_SQLCOLACTIVELINE, ColorToString(SynMemoSQLSample.ActiveLineColor));
|
|
|
|
MainReg.WriteString(REGNAME_CSV_SEPARATOR, editCSVSeparator.Text);
|
|
MainReg.WriteString(REGNAME_CSV_ENCLOSER, editCSVEncloser.Text);
|
|
MainReg.WriteString(REGNAME_CSV_TERMINATOR, editCSVTerminator.Text);
|
|
MainReg.WriteInteger(REGNAME_COPYMAXSIZE, updownCopyDataMaxSize.Position);
|
|
|
|
MainReg.WriteInteger(REGNAME_MAXCOLWIDTH, updownMaxColWidth.Position);
|
|
MainReg.WriteString(REGNAME_DATAFONTNAME, comboDataFontName.Text);
|
|
MainReg.WriteInteger(REGNAME_DATAFONTSIZE, updownDataFontSize.Position);
|
|
MainReg.WriteBool(REGNAME_LOGTOFILE, chkLogToFile.Checked);
|
|
MainReg.WriteBool(REGNAME_DO_UPDATECHECK, chkUpdatecheck.Checked);
|
|
MainReg.WriteBool(REGNAME_DO_UPDATECHECK_BUILDS, chkUpdatecheckBuilds.Checked);
|
|
MainReg.WriteInteger(REGNAME_UPDATECHECK_INTERVAL, updownUpdatecheckInterval.Position);
|
|
// Save color settings
|
|
MainReg.WriteInteger(REGNAME_FIELDCOLOR_NUMERIC, cboxNumeric.Selected);
|
|
MainReg.WriteInteger(REGNAME_FIELDCOLOR_TEXT, cboxText.Selected);
|
|
MainReg.WriteInteger(REGNAME_FIELDCOLOR_BINARY, cboxBinary.Selected);
|
|
MainReg.WriteInteger(REGNAME_FIELDCOLOR_DATETIME, cboxDatetime.Selected);
|
|
MainReg.WriteInteger(REGNAME_FIELDCOLOR_ENUM, cboxEnum.Selected);
|
|
MainReg.WriteInteger(REGNAME_FIELDCOLOR_SET, cboxSet.Selected);
|
|
MainReg.WriteInteger(REGNAME_BG_NULL, cboxNullBg.Selected);
|
|
// Editor enablings
|
|
MainReg.WriteBool(REGNAME_FIELDEDITOR_BINARY, chkEditorBinary.Checked);
|
|
MainReg.WriteBool(REGNAME_FIELDEDITOR_DATETIME, chkEditorDatetime.Checked);
|
|
MainReg.WriteBool(REGNAME_FIELDEDITOR_ENUM, chkEditorEnum.Checked);
|
|
MainReg.WriteBool(REGNAME_FIELDEDITOR_SET, chkEditorSet.Checked);
|
|
MainReg.WriteBool(REGNAME_BG_NULL_ENABLED, chkNullBg.Checked);
|
|
|
|
// Set relevant properties in mainform
|
|
Mainform.SynMemoQuery.Font := SynMemoSQLSample.Font;
|
|
Mainform.SynMemoQuery.Gutter.Font := SynMemoSQLSample.Font;
|
|
Mainform.SynMemoSQLLog.Font := SynMemoSQLSample.Font;
|
|
Mainform.SynMemoSQLLog.Gutter.Font := SynMemoSQLSample.Font;
|
|
Mainform.SynMemoProcessView.Font := SynMemoSQLSample.Font;
|
|
Mainform.SynMemoFilter.Font := SynMemoSQLSample.Font;
|
|
for i := 0 to SynSQLSynSQLSample.AttrCount - 1 do begin
|
|
Mainform.SynSQLSyn1.Attribute[i].AssignColorAndStyle(SynSQLSynSQLSample.Attribute[i]);
|
|
end;
|
|
Mainform.SynMemoQuery.ActiveLineColor := SynMemoSQLSample.ActiveLineColor;
|
|
Mainform.DataGrid.Font.Name := comboDataFontName.Text;
|
|
Mainform.QueryGrid.Font.Name := comboDataFontName.Text;
|
|
Mainform.DataGrid.Font.Size := updownDataFontSize.Position;
|
|
Mainform.QueryGrid.Font.Size := updownDataFontSize.Position;
|
|
FixVT(Mainform.QueryGrid);
|
|
FixVT(Mainform.DataGrid);
|
|
Mainform.prefLogsqlnum := updownLogLines.Position;
|
|
Mainform.prefLogSqlWidth := updownLogSnip.Position;
|
|
Mainform.TrimSQLLog;
|
|
if chkLogToFile.Checked then
|
|
Mainform.ActivateFileLogging
|
|
else if Mainform.prefLogToFile then
|
|
Mainform.DeactivateFileLogging;
|
|
btnOpenLogFolder.Enabled := DirectoryExists(DirnameSessionLogs);
|
|
Mainform.prefMaxColWidth := updownMaxColWidth.Position;
|
|
Mainform.prefCSVSeparator := editCSVSeparator.Text;
|
|
Mainform.prefCSVEncloser := editCSVEncloser.Text;
|
|
Mainform.prefCSVTerminator := editCSVTerminator.Text;
|
|
Mainform.prefFieldColorNumeric := cboxNumeric.Selected;
|
|
Mainform.prefFieldColorText := cboxText.Selected;
|
|
Mainform.prefFieldColorBinary := cboxBinary.Selected;
|
|
Mainform.prefFieldColorDatetime := cboxDatetime.Selected;
|
|
Mainform.prefFieldColorEnum := cboxEnum.Selected;
|
|
Mainform.prefFieldColorSet := cboxSet.Selected;
|
|
Mainform.prefNullBG := cboxNullBg.Selected;
|
|
Mainform.CalcNullColors;
|
|
Mainform.DataGrid.Repaint;
|
|
Mainform.QueryGrid.Repaint;
|
|
Mainform.prefEnableBinaryEditor := chkEditorBinary.Checked;
|
|
Mainform.prefEnableDatetimeEditor := chkEditorDatetime.Checked;
|
|
Mainform.prefEnableEnumEditor := chkEditorEnum.Checked;
|
|
Mainform.prefEnableSetEditor := chkEditorSet.Checked;
|
|
Mainform.prefEnableNullBG := chkNullBg.Checked;
|
|
|
|
// Settings have been applied, send a signal to the user
|
|
btnApply.Enabled := False;
|
|
Screen.Cursor := crDefault;
|
|
end;
|
|
|
|
|
|
|
|
procedure Toptionsform.FormCreate(Sender: TObject);
|
|
var
|
|
i: Integer;
|
|
// Callback function used by EnumFontFamilies()
|
|
function EnumFixedProc(lpelf: PEnumLogFont; lpntm: PNewTextMetric; FontType: Integer; Data: LPARAM): Integer; stdcall;
|
|
begin
|
|
Result := 1; // don't cancel
|
|
if (lpelf^.elfLogFont.lfPitchAndFamily and FIXED_PITCH) <> 0 then
|
|
(TStrings(Data)).Add(String(lpelf^.elfLogFont.lfFaceName));
|
|
end;
|
|
begin
|
|
InheritFont(Font);
|
|
EnumFontFamilies(Canvas.Handle, nil, @EnumFixedProc, LPARAM(Pointer(comboSQLFontName.Items)));
|
|
SynMemoSQLSample.Text := 'SELECT DATE_SUB(NOW(), INTERVAL 1 DAY),' + CRLF +
|
|
' ''String literal'' AS lit' + CRLF +
|
|
'FROM tableA AS ta -- A comment' + CRLF +
|
|
'WHERE `columnA` IS NULL; # More comment' + CRLF +
|
|
CRLF +
|
|
'CREATE TABLE /*!32312 IF NOT EXISTS*/ tableB' + CRLF +
|
|
' (id INT, name VARCHAR(30) DEFAULT "standard")';
|
|
SynSQLSynSQLSample.TableNames.CommaText := 'tableA,tableB';
|
|
for i:=0 to SynSQLSynSQLSample.AttrCount - 1 do
|
|
comboSQLColElement.Items.Add(SynSQLSynSQLSample.Attribute[i].FriendlyName);
|
|
comboSQLColElement.Items.Add('Active line background');
|
|
comboSQLColElement.ItemIndex := 0;
|
|
end;
|
|
|
|
procedure Toptionsform.FormShow(Sender: TObject);
|
|
var
|
|
sqlfontname : String;
|
|
sqlfontsize : Integer;
|
|
datafontname : String;
|
|
datafontsize : Integer;
|
|
begin
|
|
screen.Cursor := crHourGlass;
|
|
|
|
// Read and display values
|
|
sqlfontname := GetRegValue(REGNAME_FONTNAME, DEFAULT_FONTNAME);
|
|
sqlfontsize := GetRegValue(REGNAME_FONTSIZE, DEFAULT_FONTSIZE);
|
|
datafontname := GetRegValue(REGNAME_DATAFONTNAME, DEFAULT_DATAFONTNAME);
|
|
datafontsize := GetRegValue(REGNAME_DATAFONTSIZE, DEFAULT_DATAFONTSIZE);
|
|
chkAutoReconnect.Checked := GetRegValue(REGNAME_AUTORECONNECT, DEFAULT_AUTORECONNECT);
|
|
chkRestoreLastDB.Checked := GetRegValue(REGNAME_RESTORELASTUSEDDB, DEFAULT_RESTORELASTUSEDDB);
|
|
updownLogLines.Position := GetRegValue(REGNAME_LOGSQLNUM, DEFAULT_LOGSQLNUM);
|
|
updownLogSnip.Position := GetRegValue(REGNAME_LOGSQLWIDTH, DEFAULT_LOGSQLWIDTH);
|
|
chkUpdatecheck.Checked := GetRegValue(REGNAME_DO_UPDATECHECK, DEFAULT_DO_UPDATECHECK);
|
|
chkUpdatecheckBuilds.Checked := GetRegValue(REGNAME_DO_UPDATECHECK_BUILDS, DEFAULT_DO_UPDATECHECK_BUILDS);
|
|
updownUpdatecheckInterval.Position := GetRegValue(REGNAME_UPDATECHECK_INTERVAL, DEFAULT_UPDATECHECK_INTERVAL);
|
|
chkUpdatecheckClick(Sender);
|
|
|
|
// Default Column-Width in DBGrids:
|
|
updownMaxColWidth.Position := GetRegValue(REGNAME_MAXCOLWIDTH, DEFAULT_MAXCOLWIDTH);
|
|
|
|
// Export-Options:
|
|
editCSVSeparator.Text := GetRegValue(REGNAME_CSV_SEPARATOR, DEFAULT_CSV_SEPARATOR);
|
|
editCSVEncloser.Text := GetRegValue(REGNAME_CSV_ENCLOSER, DEFAULT_CSV_ENCLOSER);
|
|
editCSVTerminator.Text := GetRegValue(REGNAME_CSV_TERMINATOR, DEFAULT_CSV_TERMINATOR);
|
|
updownCopyDataMaxSize.Position := GetRegValue(REGNAME_COPYMAXSIZE, DEFAULT_COPYMAXSIZE);
|
|
|
|
// Log to file
|
|
chkLogToFile.Checked := GetRegValue(REGNAME_LOGTOFILE, DEFAULT_LOGTOFILE);
|
|
btnOpenLogFolder.Enabled := DirectoryExists(DirnameSessionLogs);
|
|
|
|
// SQL:
|
|
RestoreSyneditStyles(SynSQLSynSQLSample);
|
|
SynMemoSQLSample.ActiveLineColor := StringToColor(GetRegValue(REGNAME_SQLCOLACTIVELINE, ColorToString(DEFAULT_SQLCOLACTIVELINE)));
|
|
comboSQLFontName.ItemIndex := comboSQLFontName.Items.IndexOf(sqlfontname);
|
|
updownSQLFontSize.Position := sqlfontsize;
|
|
SynMemoSQLSample.Font.Name := sqlfontname;
|
|
SynMemoSQLSample.Font.Size := sqlfontsize;
|
|
comboSQLColElementChange(Sender);
|
|
|
|
// Data-Appearance:
|
|
comboDataFontName.Items := Screen.Fonts;
|
|
comboDataFontName.ItemIndex := comboDataFontName.Items.IndexOf(datafontname);
|
|
updownDataFontSize.Position := datafontsize;
|
|
// Load color settings
|
|
cboxNumeric.Selected := GetRegValue(REGNAME_FIELDCOLOR_NUMERIC, DEFAULT_FIELDCOLOR_NUMERIC);
|
|
cboxText.Selected := GetRegValue(REGNAME_FIELDCOLOR_TEXT, DEFAULT_FIELDCOLOR_TEXT);
|
|
cboxBinary.Selected := GetRegValue(REGNAME_FIELDCOLOR_BINARY, DEFAULT_FIELDCOLOR_BINARY);
|
|
cboxDatetime.Selected := GetRegValue(REGNAME_FIELDCOLOR_DATETIME, DEFAULT_FIELDCOLOR_DATETIME);
|
|
cboxEnum.Selected := GetRegValue(REGNAME_FIELDCOLOR_ENUM, DEFAULT_FIELDCOLOR_ENUM);
|
|
cboxSet.Selected := GetRegValue(REGNAME_FIELDCOLOR_SET, DEFAULT_FIELDCOLOR_SET);
|
|
cboxNullBG.Selected := GetRegValue(REGNAME_BG_NULL, DEFAULT_BG_NULL);
|
|
// Editor enablings
|
|
chkEditorBinary.Checked := GetRegValue(REGNAME_FIELDEDITOR_BINARY, DEFAULT_FIELDEDITOR_BINARY);
|
|
chkEditorDatetime.Checked := GetRegValue(REGNAME_FIELDEDITOR_DATETIME, DEFAULT_FIELDEDITOR_DATETIME);
|
|
chkEditorEnum.Checked := GetRegValue(REGNAME_FIELDEDITOR_ENUM, DEFAULT_FIELDEDITOR_ENUM);
|
|
chkEditorSet.Checked := GetRegValue(REGNAME_FIELDEDITOR_SET, DEFAULT_FIELDEDITOR_SET);
|
|
chkNullBG.Checked := GetRegValue(REGNAME_BG_NULL_ENABLED, DEFAULT_BG_NULL_ENABLED);
|
|
|
|
btnApply.Enabled := False;
|
|
screen.Cursor := crdefault;
|
|
end;
|
|
|
|
|
|
|
|
procedure Toptionsform.SQLFontChange(Sender: TObject);
|
|
var
|
|
AttriIdx: Integer;
|
|
Attri: TSynHighlighterAttributes;
|
|
col: TColor;
|
|
begin
|
|
SynMemoSQLSample.Font.Name := comboSQLFontName.Items[comboSQLFontName.ItemIndex];
|
|
SynMemoSQLSample.Font.Size := updownSQLFontSize.Position;
|
|
AttriIdx := comboSQLColElement.ItemIndex;
|
|
col := cboxSQLColColor.Selected;
|
|
if AttriIdx = comboSQLColElement.Items.Count-1 then begin
|
|
SynMemoSQLSample.ActiveLineColor := col;
|
|
end else begin
|
|
Attri := SynSqlSynSQLSample.Attribute[AttriIdx];
|
|
Attri.Foreground := col;
|
|
if chkSQLBold.Checked then Attri.Style := Attri.Style + [fsBold]
|
|
else Attri.Style := Attri.Style - [fsBold];
|
|
if chkSQLItalic.Checked then Attri.Style := Attri.Style + [fsItalic]
|
|
else Attri.Style := Attri.Style - [fsItalic];
|
|
end;
|
|
Modified(Sender);
|
|
end;
|
|
|
|
|
|
procedure Toptionsform.DataFontsChange(Sender: TObject);
|
|
begin
|
|
Modified(Sender);
|
|
end;
|
|
|
|
procedure Toptionsform.anyUpDownLimitChanging(Sender: TObject;
|
|
var AllowChange: Boolean);
|
|
begin
|
|
Modified(Sender);
|
|
end;
|
|
|
|
|
|
{**
|
|
Open folder with session logs
|
|
}
|
|
procedure Toptionsform.btnOpenLogFolderClick(Sender: TObject);
|
|
begin
|
|
ShellExec( '', DirnameSessionLogs );
|
|
end;
|
|
|
|
{**
|
|
Updatecheck checkbox was clicked
|
|
}
|
|
procedure Toptionsform.chkUpdatecheckClick(Sender: TObject);
|
|
begin
|
|
updownUpdatecheckInterval.Enabled := chkUpdatecheck.Checked;
|
|
editUpdatecheckInterval.Enabled := chkUpdatecheck.Checked;
|
|
chkUpdatecheckBuilds.Enabled := chkUpdatecheck.Checked;
|
|
Modified(Sender);
|
|
end;
|
|
|
|
procedure Toptionsform.chkNullBGClick(Sender: TObject);
|
|
begin
|
|
cboxNullBG.Enabled := (Sender as TCheckbox).Checked;
|
|
Modified(Sender);
|
|
end;
|
|
|
|
|
|
procedure Toptionsform.comboSQLColElementChange(Sender: TObject);
|
|
var
|
|
AttriIdx: Integer;
|
|
Attri: TSynHighlighterAttributes;
|
|
col: TColor;
|
|
begin
|
|
AttriIdx := comboSQLColElement.ItemIndex;
|
|
if AttriIdx = comboSQLColElement.Items.Count-1 then begin
|
|
col := SynMemoSQLSample.ActiveLineColor;
|
|
chkSQLBold.Enabled := False;
|
|
chkSQLItalic.Enabled := False;
|
|
end else begin
|
|
Attri := SynSqlSynSQLSample.Attribute[AttriIdx];
|
|
col := Attri.Foreground;
|
|
chkSQLBold.Enabled := True;
|
|
chkSQLItalic.Enabled := True;
|
|
chkSQLBold.OnClick := nil;
|
|
chkSQLItalic.OnClick := nil;
|
|
chkSQLBold.Checked := fsBold in Attri.Style;
|
|
chkSQLItalic.Checked := fsItalic in Attri.Style;
|
|
chkSQLBold.OnClick := SQLFontChange;
|
|
chkSQLItalic.OnClick := SQLFontChange;
|
|
end;
|
|
cboxSQLColColor.Selected := col;
|
|
end;
|
|
|
|
|
|
procedure Toptionsform.updownSQLFontSizeClick(Sender: TObject;
|
|
Button: TUDBtnType);
|
|
begin
|
|
SQLFontChange(Sender);
|
|
end;
|
|
|
|
|
|
{**
|
|
Select attribute in pulldown by click into SynMemo
|
|
}
|
|
procedure Toptionsform.SynMemoSQLSampleClick(Sender: TObject);
|
|
var
|
|
Token: WideString;
|
|
Attri: TSynHighlighterAttributes;
|
|
AttriIdx: Integer;
|
|
sm: TSynMemo;
|
|
begin
|
|
sm := Sender as TSynMemo;
|
|
sm.GetHighlighterAttriAtRowCol(sm.CaretXY, Token, Attri);
|
|
AttriIdx := ComboSQLColElement.Items.IndexOf(Attri.FriendlyName);
|
|
if AttriIdx = -1 then
|
|
Exit;
|
|
ComboSQLColElement.ItemIndex := AttriIdx;
|
|
ComboSQLColElement.OnChange(Sender);
|
|
end;
|
|
|
|
|
|
end.
|