git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.jvcl@19 7f62d464-2af8-f54e-996c-e91b33f51cbe
811 lines
25 KiB
Plaintext
811 lines
25 KiB
Plaintext
{******************************************************************
|
|
|
|
JEDI-VCL Demo
|
|
|
|
Copyright (C) 2002 Project JEDI
|
|
|
|
Original author:
|
|
|
|
Contributor(s):
|
|
|
|
You may retrieve the latest version of this file at the JEDI-JVCL
|
|
home page, located at http://jvcl.delphi-jedi.org
|
|
|
|
The contents of this file are used with permission, subject to
|
|
the Mozilla Public License Version 1.1 (the "License"); you may
|
|
not use this file except in compliance with the License. You may
|
|
obtain a copy of the License at
|
|
http://www.mozilla.org/MPL/MPL-1_1Final.html
|
|
|
|
Software distributed under the License is distributed on an
|
|
"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
implied. See the License for the specific language governing
|
|
rights and limitations under the License.
|
|
|
|
******************************************************************}
|
|
|
|
{*******************************************************}
|
|
{ }
|
|
{ Delphi VCL Extensions (RX) demo program }
|
|
{ }
|
|
{ Copyright (c) 1996 AO ROSNO }
|
|
{ Copyright (c) 1997, 1998 Master-Bank }
|
|
{ }
|
|
{*******************************************************}
|
|
|
|
unit Main;
|
|
|
|
interface
|
|
|
|
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus,
|
|
StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, DB, DBTables,
|
|
DBCtrls, JvSpeedbar, JvMRUList, ComCtrls,
|
|
JvComponent, JvMRUManager,
|
|
JvFormPlacement, JvBDEProgress, JvLabel, JvDBControls, JvAppEvent,
|
|
JvExExtCtrls, JvExControls, JvComponentBase, JvExtComponent;
|
|
|
|
type
|
|
TDBExplorerMainForm = class(TForm)
|
|
DBProgress: TJvDBProgress ;
|
|
SQLFontContainer: TLabel;
|
|
FormPlacement: TJvFormStorage ;
|
|
BottomPanel: TPanel;
|
|
StatusLine: TPanel;
|
|
RightPanel: TPanel;
|
|
StatusPanel: TPanel;
|
|
DBStatusLabel: TJvDBStatusLabel ;
|
|
RecNoPanel: TPanel;
|
|
MainMenu1: TMainMenu;
|
|
File1: TMenuItem;
|
|
FileOpenItem: TMenuItem;
|
|
FileCloseItem: TMenuItem;
|
|
N1: TMenuItem;
|
|
FileExitItem: TMenuItem;
|
|
UtilitiesMenu: TMenuItem;
|
|
PackTableItem: TMenuItem;
|
|
DeleteTableItem: TMenuItem;
|
|
EmptyTableItem: TMenuItem;
|
|
ReindexItem: TMenuItem;
|
|
RenameTableItem: TMenuItem;
|
|
ExportTableItem: TMenuItem;
|
|
CheckPXSubMenu: TMenuItem;
|
|
CheckPXItem: TMenuItem;
|
|
CheckPXAllItem: TMenuItem;
|
|
Options1: TMenuItem;
|
|
AutoActivateItem: TMenuItem;
|
|
SystemTablesItem: TMenuItem;
|
|
KeepConnectionsItem: TMenuItem;
|
|
N3: TMenuItem;
|
|
OptionsItem: TMenuItem;
|
|
CustomizeSpeedbar: TMenuItem;
|
|
WindowMenu: TMenuItem;
|
|
WindowCascadeItem: TMenuItem;
|
|
WindowTileItem: TMenuItem;
|
|
WindowArrangeItem: TMenuItem;
|
|
WindowMinimizeItem: TMenuItem;
|
|
Help1: TMenuItem;
|
|
HelpAboutItem: TMenuItem;
|
|
JvSpeedbar: TJvSpeedBar;
|
|
SpeedItem1: TjvSpeedItem;
|
|
CloseButton: TjvSpeedItem;
|
|
SpeedItem3: TjvSpeedItem;
|
|
PackBtn: TjvSpeedItem;
|
|
DeleteBtn: TjvSpeedItem;
|
|
EmptyBtn: TjvSpeedItem;
|
|
RenameBtn: TjvSpeedItem;
|
|
ExportBtn: TjvSpeedItem;
|
|
RepairBtn: TjvSpeedItem;
|
|
SpeedItem4: TjvSpeedItem;
|
|
SpeedItem2: TjvSpeedItem;
|
|
KeepConnectionsSpd: TjvSpeedItem;
|
|
OptionsBtn: TjvSpeedItem;
|
|
SpeedItem5: TjvSpeedItem;
|
|
SpeedItem6: TjvSpeedItem;
|
|
DBRecordNo: TJvDBStatusLabel ;
|
|
WindowTileVerticalItem: TMenuItem;
|
|
N2: TMenuItem;
|
|
ImportDataItem: TMenuItem;
|
|
ImportBtn: TjvSpeedItem;
|
|
StartTransItem: TMenuItem;
|
|
CommitItem: TMenuItem;
|
|
RollbackItem: TMenuItem;
|
|
SQLMonitorItem: TMenuItem;
|
|
N4: TMenuItem;
|
|
TraceSQLItem: TMenuItem;
|
|
ClearTraceItem: TMenuItem;
|
|
TablesSessionMenu: TMenuItem;
|
|
QuerySessionMenu: TMenuItem;
|
|
StartTransQueryItem: TMenuItem;
|
|
CommitQueryItem: TMenuItem;
|
|
RollbackQueryItem: TMenuItem;
|
|
SQLMonitorBtn: TjvSpeedItem;
|
|
TabPasswordItem: TMenuItem;
|
|
QryPasswordItem: TMenuItem;
|
|
DBNavigator: TDBNavigator;
|
|
N5: TMenuItem;
|
|
BdePropsItem: TMenuItem;
|
|
FlatButtonsItem: TMenuItem;
|
|
ClosedDatabases: TJvMRUManager ;
|
|
ReopenItem: TMenuItem;
|
|
DBGauge: TProgressBar;
|
|
SpeedbarSection1: TjvSpeedbarSection;
|
|
SpeedbarSection2: TjvSpeedbarSection;
|
|
SpeedbarSection3: TjvSpeedbarSection;
|
|
SpeedbarSection4: TjvSpeedbarSection;
|
|
AppEvents: TJvAppEvents ;
|
|
HelpList: TJvMRUManager ;
|
|
UserHelpItem: TMenuItem;
|
|
PrintDataItem: TMenuItem;
|
|
PrintBtn: TjvSpeedItem;
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure WindowCascadeItemClick(Sender: TObject);
|
|
procedure UpdateMenuItems(Sender: TObject);
|
|
procedure WindowTileItemClick(Sender: TObject);
|
|
procedure WindowArrangeItemClick(Sender: TObject);
|
|
procedure FileCloseItemClick(Sender: TObject);
|
|
procedure FileOpenItemClick(Sender: TObject);
|
|
procedure FileExitItemClick(Sender: TObject);
|
|
procedure WindowMinimizeItemClick(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
procedure HelpAboutItemClick(Sender: TObject);
|
|
procedure FormPlacementSavePlacement(Sender: TObject);
|
|
procedure FormPlacementRestorePlacement(Sender: TObject);
|
|
procedure CustomizeToolbarItemClick(Sender: TObject);
|
|
procedure AutoActivateItemClick(Sender: TObject);
|
|
procedure SystemTablesItemClick(Sender: TObject);
|
|
function DBStatusLabelGetDataName(Sender: TObject): string;
|
|
procedure PackTableClick(Sender: TObject);
|
|
procedure DeleteTableClick(Sender: TObject);
|
|
procedure EmptyTableClick(Sender: TObject);
|
|
procedure RenameTableClick(Sender: TObject);
|
|
procedure CheckPXItemClick(Sender: TObject);
|
|
procedure ReindexItemClick(Sender: TObject);
|
|
procedure ExportClick(Sender: TObject);
|
|
procedure OptionsClick(Sender: TObject);
|
|
procedure KeepConnectionsItemClick(Sender: TObject);
|
|
procedure ImportClick(Sender: TObject);
|
|
procedure StartTransItemClick(Sender: TObject);
|
|
procedure CommitItemClick(Sender: TObject);
|
|
procedure RollbackItemClick(Sender: TObject);
|
|
procedure SQLMonitorItemClick(Sender: TObject);
|
|
procedure TraceSQLItemClick(Sender: TObject);
|
|
procedure DBProgressTrace(Sender: TObject; Flag: TTraceFlag;
|
|
const Msg: string);
|
|
procedure ClearTraceItemClick(Sender: TObject);
|
|
procedure PasswordItemClick(Sender: TObject);
|
|
procedure JvSpeedbarApplyAlign(Sender: TObject; Align: TAlign;
|
|
var Apply: Boolean);
|
|
procedure JvSpeedbarResize(Sender: TObject);
|
|
procedure BdePropsItemClick(Sender: TObject);
|
|
procedure FlatButtonsItemClick(Sender: TObject);
|
|
procedure ClosedDatabasesClick(Sender: TObject; const RecentName,
|
|
Caption: string; UserData: Longint);
|
|
procedure AppHint(Sender: TObject);
|
|
procedure AppIdle(Sender: TObject; var Done: Boolean);
|
|
procedure HelpListClick(Sender: TObject; const RecentName,
|
|
Caption: string; UserData: Longint);
|
|
procedure UserHelpItemClick(Sender: TObject);
|
|
procedure DBRecordNoDblClick(Sender: TObject);
|
|
procedure JvSpeedbarPosChanged(Sender: TObject);
|
|
procedure DBRecordNoGetRecordCount(Sender: TObject; DataSet: TDataSet;
|
|
var Value: Longint);
|
|
procedure PrintDataClick(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
procedure CreateMDIChild(const AName: string);
|
|
procedure DatabaseLogin(Database: TDatabase; LoginParams: TStrings);
|
|
protected
|
|
procedure CreateWnd; override;
|
|
public
|
|
{ Public declarations }
|
|
procedure ApplyOptions;
|
|
procedure UpdateMenus;
|
|
procedure SetSQLTrace(Value: Boolean);
|
|
end;
|
|
|
|
var
|
|
DBExplorerMainForm: TDBExplorerMainForm;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
|
|
uses DBInpReq, DBCbRest, SQLMon, Bde, JvJCLUtils, JvBDELoginDialog,
|
|
ChildWin2, OpenDlg, JvDBUtils, IniFiles, RenDlg, About, Options, OptDlg,
|
|
JvBdeUtils, BdeProp, UserHelp, JvHints, ShellAPI, JvJVCLUtils;
|
|
|
|
const
|
|
SEmptyWarning = 'Table %s will be emptied. All data will be lost. Continue?';
|
|
SDeleteWarning = 'Table %s will be deleted. All data will be lost. Continue?';
|
|
SSqlDatabase = 'Cannot perform this operation on a SQL database';
|
|
|
|
{ TMainForm }
|
|
|
|
procedure TDBExplorerMainForm.CreateWnd;
|
|
begin
|
|
inherited CreateWnd;
|
|
if (ClientHandle <> 0) and NewStyleControls then begin
|
|
SetWindowLong(ClientHandle, GWL_EXSTYLE, WS_EX_CLIENTEDGE or
|
|
GetWindowLong(ClientHandle, GWL_EXSTYLE));
|
|
end;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.ApplyOptions;
|
|
var
|
|
I: Integer;
|
|
begin
|
|
SpeedItem4.Down := AutoActivate;
|
|
AutoActivateItem.Checked := AutoActivate;
|
|
SpeedItem2.Down := SystemTables;
|
|
SystemTablesItem.Checked := SystemTables;
|
|
KeepConnectionsSpd.Down := Session.KeepConnections;
|
|
KeepConnectionsItem.Checked := Session.KeepConnections;
|
|
FlatButtonsItem.Checked := sbFlatBtns in JvSpeedbar.Options;
|
|
DBRecordNo.CalcRecCount := SQLCalcCount;
|
|
DBProgress.TraceFlags := SQLTraceFlags;
|
|
BufSetSize(SQLTraceBuffer);
|
|
for I := MDIChildCount - 1 downto 0 do begin
|
|
if (MDIChildren[I] is TMDIChild) then begin
|
|
if AutoActivate then
|
|
TMDIChild(MDIChildren[I]).SetToCurrentTable;
|
|
TMDIChild(MDIChildren[I]).UpdateSystemTables;
|
|
TMDIChild(MDIChildren[I]).UpdateDataFieldFormats;
|
|
TMDIChild(MDIChildren[I]).UpdateThreadOptions;
|
|
TMDIChild(MDIChildren[I]).SQLMemo.Font := SQLFontContainer.Font;
|
|
TMDIChild(MDIChildren[I]).SetTrace(DBProgress.Trace);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.FormCreate(Sender: TObject);
|
|
begin
|
|
Screen.OnActiveFormChange := UpdateMenuItems;
|
|
Caption := Application.Title + ' ' + SDbxVersion;
|
|
if not NewStyleControls then begin
|
|
with JvSpeedbar do begin
|
|
BevelOuter := bvRaised;
|
|
Height := 29;
|
|
BtnOffsetVert := 3;
|
|
BoundLines := [];
|
|
end;
|
|
end;
|
|
try
|
|
Session.PrivateDir := GetEnvVar('TEMP');
|
|
except
|
|
{ ignore }
|
|
end;
|
|
DBProgress.TraceFlags := SQLTraceFlags;
|
|
SetHintStyle(hsRectangle, 0, False, taCenter);
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.AppHint(Sender: TObject);
|
|
begin
|
|
StatusLine.Caption := Application.Hint;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.AppIdle(Sender: TObject;
|
|
var Done: Boolean);
|
|
begin
|
|
{$IFDEF VER90}
|
|
DbiUseIdleTime;
|
|
{$ELSE}
|
|
BdeFlushBuffers;
|
|
{$ENDIF}
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.CreateMDIChild(const AName: string);
|
|
const
|
|
SQuerySession = '_Query_';
|
|
var
|
|
SName: string;
|
|
I: Integer;
|
|
TempDatabase: TDatabase;
|
|
ChildForm: TMDIChild;
|
|
begin
|
|
Session.Open;
|
|
Sessions.CurrentSession := Session;
|
|
TempDatabase := Session.FindDatabase(AName);
|
|
if TempDatabase = nil then begin
|
|
TempDatabase := TDatabase.Create(nil);
|
|
with TempDatabase do begin
|
|
DatabaseName := AName;
|
|
Temporary := True;
|
|
OnLogin := DatabaseLogin;
|
|
end;
|
|
TempDatabase.KeepConnection := Session.KeepConnections;
|
|
TempDatabase.SessionName := Session.SessionName;
|
|
end;
|
|
TempDatabase.Session.OpenDatabase(TempDatabase.DatabaseName);
|
|
ChildForm := TMDIChild.Create(Application);
|
|
with ChildForm do begin
|
|
SQLMemo.Font := SQLFontContainer.Font;
|
|
DatabaseName := AName;
|
|
I := 0;
|
|
repeat
|
|
if Session.IsAlias(AName) then SName := AName + SQuerySession + IntToStr(I)
|
|
else SName := 'S' + SQuerySession + IntToStr(I);
|
|
Inc(I);
|
|
until Sessions.FindSession(SName) = nil;
|
|
with QuerySession do begin
|
|
SessionName := SName;
|
|
Open;
|
|
end;
|
|
DBQueryProgress.SessionName := SName;
|
|
DBQueryProgress.Active := True;
|
|
if DBProgress.Trace then SetTrace(True);
|
|
with QueryDB do begin
|
|
SessionName := SName;
|
|
DatabaseName := AName;
|
|
Params.Assign(TempDatabase.Params);
|
|
LoginPrompt := False;
|
|
Open;
|
|
end;
|
|
Query1.SessionName := SName;
|
|
Query1.DatabaseName := QueryDB.DatabaseName;
|
|
UpdateThreadOptions;
|
|
end;
|
|
Sessions.CurrentSession := Session;
|
|
ClosedDatabases.Remove(AName);
|
|
UpdateMenus;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.FileOpenItemClick(Sender: TObject);
|
|
var
|
|
DBName: string;
|
|
begin
|
|
if GetOpenDatabase(DBName) then begin
|
|
Screen.OnActiveFormChange := nil;
|
|
try
|
|
CreateMDIChild(DBName);
|
|
finally
|
|
Screen.OnActiveFormChange := UpdateMenuItems;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.FileCloseItemClick(Sender: TObject);
|
|
begin
|
|
if (ActiveMDIChild <> nil) and (ActiveMDIChild is TMDIChild) then
|
|
ActiveMDIChild.Close;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.FileExitItemClick(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.WindowCascadeItemClick(Sender: TObject);
|
|
begin
|
|
Cascade;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.WindowTileItemClick(Sender: TObject);
|
|
begin
|
|
if Sender = WindowTileItem then { TileHorizontal } TileMode := tbHorizontal
|
|
else if Sender = WindowTileVerticalItem then TileMode := tbVertical;
|
|
Tile;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.WindowArrangeItemClick(Sender: TObject);
|
|
begin
|
|
ArrangeIcons;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.WindowMinimizeItemClick(Sender: TObject);
|
|
var
|
|
I: Integer;
|
|
begin
|
|
{ Must be done backwards through the MDIChildren array }
|
|
for I := MDIChildCount - 1 downto 0 do
|
|
MDIChildren[I].WindowState := wsMinimized;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.UpdateMenuItems(Sender: TObject);
|
|
var
|
|
TabEnable: Boolean;
|
|
begin
|
|
TabEnable := (MDIChildCount > 0) and (ActiveMDIChild <> nil)
|
|
and (ActiveMDIChild is TMDIChild);
|
|
ImportDataItem.Enabled := TabEnable;
|
|
ImportBtn.Enabled := TabEnable;
|
|
ExportTableItem.Enabled := TabEnable;
|
|
ExportBtn.Enabled := TabEnable;
|
|
PrintDataItem.Enabled := TabEnable;
|
|
PrintBtn.Enabled := TabEnable;
|
|
ReindexItem.Enabled := TabEnable;
|
|
PackTableItem.Enabled := TabEnable;
|
|
PackBtn.Enabled := TabEnable;
|
|
DeleteTableItem.Enabled := TabEnable;
|
|
DeleteBtn.Enabled := TabEnable;
|
|
EmptyTableItem.Enabled := TabEnable;
|
|
EmptyBtn.Enabled := TabEnable;
|
|
RenameTableItem.Enabled := TabEnable;
|
|
RenameBtn.Enabled := TabEnable;
|
|
DBNavigator.Enabled := TabEnable;
|
|
if TabEnable then begin
|
|
DBNavigator.DataSource := (ActiveMDIChild as TMDIChild).DataSource;
|
|
DBStatusLabel.DataSource := (ActiveMDIChild as TMDIChild).DataSource;
|
|
DBRecordNo.DataSource := (ActiveMDIChild as TMDIChild).DataSource;
|
|
end
|
|
else begin
|
|
DBNavigator.DataSource := nil;
|
|
DBStatusLabel.DataSource := nil;
|
|
DBRecordNo.DataSource := nil;
|
|
end;
|
|
{ Check and repair commands }
|
|
CheckPXItem.Enabled := TabEnable;
|
|
RepairBtn.Enabled := TabEnable;
|
|
CheckPXAllItem.Enabled := TabEnable;
|
|
CheckPXSubMenu.Enabled := TabEnable;
|
|
{ Database commands }
|
|
FileCloseItem.Enabled := TabEnable;
|
|
CloseButton.Enabled := TabEnable;
|
|
{ Tables transactions }
|
|
StartTransItem.Enabled := TabEnable and
|
|
(ActiveMDIChild as TMDIChild).TransOperEnabled(tsTables, teStart);
|
|
CommitItem.Enabled := TabEnable and
|
|
(ActiveMDIChild as TMDIChild).TransOperEnabled(tsTables, teCommit);
|
|
RollbackItem.Enabled := TabEnable and
|
|
(ActiveMDIChild as TMDIChild).TransOperEnabled(tsTables, teRollback);
|
|
TablesSessionMenu.Enabled := True;
|
|
{ Query transactions }
|
|
StartTransQueryItem.Enabled := TabEnable and
|
|
(ActiveMDIChild as TMDIChild).TransOperEnabled(tsQuery, teStart);
|
|
CommitQueryItem.Enabled := TabEnable and
|
|
(ActiveMDIChild as TMDIChild).TransOperEnabled(tsQuery, teCommit);
|
|
RollbackQueryItem.Enabled := TabEnable and
|
|
(ActiveMDIChild as TMDIChild).TransOperEnabled(tsQuery, teRollback);
|
|
QuerySessionMenu.Enabled := TabEnable and
|
|
(ActiveMDIChild as TMDIChild).QuerySession.Active;
|
|
QryPasswordItem.Enabled := QuerySessionMenu.Enabled;
|
|
{ Window commands }
|
|
WindowCascadeItem.Enabled := MDIChildCount > 0;
|
|
WindowTileItem.Enabled := MDIChildCount > 0;
|
|
WindowTileVerticalItem.Enabled := MDIChildCount > 0;
|
|
WindowArrangeItem.Enabled := MDIChildCount > 0;
|
|
WindowMinimizeItem.Enabled := MDIChildCount > 0;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.UpdateMenus;
|
|
begin
|
|
UpdateMenuItems(nil);
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.FormDestroy(Sender: TObject);
|
|
begin
|
|
Screen.OnActiveFormChange := nil;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.HelpAboutItemClick(Sender: TObject);
|
|
begin
|
|
ShowAbout;
|
|
end;
|
|
|
|
{ TODO : Fix save and restore with new TJvAppStorage implementation }
|
|
procedure TDBExplorerMainForm.FormPlacementSavePlacement(Sender: TObject);
|
|
begin
|
|
// SaveOptions(FormPlacement.IniFile);
|
|
end;
|
|
|
|
{ TODO : Fix save and restore with new TJvAppStorage implementation }
|
|
procedure TDBExplorerMainForm.FormPlacementRestorePlacement(Sender: TObject);
|
|
begin
|
|
// LoadOptions(FormPlacement.IniFile);
|
|
ApplyOptions;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.CustomizeToolbarItemClick(Sender: TObject);
|
|
begin
|
|
JvSpeedbar.Customize(0);
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.AutoActivateItemClick(Sender: TObject);
|
|
begin
|
|
AutoActivate := not AutoActivate;
|
|
ApplyOptions;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.SystemTablesItemClick(Sender: TObject);
|
|
begin
|
|
SystemTables := not SystemTables;
|
|
ApplyOptions;
|
|
end;
|
|
|
|
function TDBExplorerMainForm.DBStatusLabelGetDataName(
|
|
Sender: TObject): string;
|
|
begin
|
|
Result := '';
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.DBRecordNoGetRecordCount(Sender: TObject;
|
|
DataSet: TDataSet; var Value: Longint);
|
|
begin
|
|
if SQLCalcCount or ((DataSet is TDBDataSet) and not
|
|
TDBDataSet(DataSet).Database.IsSQLBased) then
|
|
Value := DataSetRecordCount(TBDEDataSet(DataSet));
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.DBRecordNoDblClick(Sender: TObject);
|
|
begin
|
|
SQLCalcCount := not SQLCalcCount;
|
|
DBRecordNo.CalcRecCount := SQLCalcCount;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.PackTableClick(Sender: TObject);
|
|
begin
|
|
if (ActiveMDIChild <> nil) and (ActiveMDIChild is TMDIChild) then
|
|
(ActiveMDIChild as TMDIChild).PackCurrentTable;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.DeleteTableClick(Sender: TObject);
|
|
var
|
|
Tab: TTable;
|
|
begin
|
|
if (ActiveMDIChild <> nil) and (ActiveMDIChild is TMDIChild) then
|
|
begin
|
|
Tab := (ActiveMDIChild as TMDIChild).CurrentTable;
|
|
if Tab <> nil then begin
|
|
if MessageDlg(Format(SDeleteWarning, [Tab.TableName]), mtWarning,
|
|
[mbYes, mbNo], 0) = mrYes then
|
|
begin
|
|
Tab.DisableControls;
|
|
try
|
|
if Tab.Active then Tab.Close;
|
|
Tab.DeleteTable;
|
|
(ActiveMDIChild as TMDIChild).MarkAsDeleted(Tab.TableName);
|
|
finally
|
|
Tab.EnableControls;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.EmptyTableClick(Sender: TObject);
|
|
var
|
|
Tab: TTable;
|
|
begin
|
|
if (ActiveMDIChild <> nil) and (ActiveMDIChild is TMDIChild) then
|
|
begin
|
|
Tab := (ActiveMDIChild as TMDIChild).CurrentTable;
|
|
if Tab <> nil then begin
|
|
if MessageDlg(Format(SEmptyWarning, [Tab.TableName]), mtWarning,
|
|
[mbYes, mbNo], 0) = mrYes then
|
|
begin
|
|
Tab.DisableControls;
|
|
StartWait;
|
|
try
|
|
if Tab.Active then Tab.Close;
|
|
Tab.EmptyTable;
|
|
Tab.Open;
|
|
finally
|
|
StopWait;
|
|
Tab.EnableControls;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.RenameTableClick(Sender: TObject);
|
|
var
|
|
Tab: TTable;
|
|
NewName: string;
|
|
begin
|
|
if (ActiveMDIChild <> nil) and (ActiveMDIChild is TMDIChild) then
|
|
begin
|
|
if not (ActiveMDIChild as TMDIChild).CheckStandard then
|
|
DatabaseError(SSqlDatabase);
|
|
Tab := (ActiveMDIChild as TMDIChild).CurrentTable;
|
|
if Tab <> nil then begin
|
|
if RenameTableDialog(Tab.TableName,
|
|
(ActiveMDIChild as TMDIChild).SessionDB(tsTables).Directory, NewName) then
|
|
begin
|
|
Tab.DisableControls;
|
|
try
|
|
if Tab.Active then Tab.Close;
|
|
Tab.RenameTable(NewName);
|
|
with (ActiveMDIChild as TMDIChild) do begin
|
|
RefreshData;
|
|
SetToCurrentTable;
|
|
end;
|
|
finally
|
|
Tab.EnableControls;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.CheckPXItemClick(Sender: TObject);
|
|
begin
|
|
if (ActiveMDIChild <> nil) and (ActiveMDIChild is TMDIChild) then
|
|
(ActiveMDIChild as TMDIChild).CheckAndRepairParadoxTable(
|
|
Sender = CheckPXAllItem);
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.DatabaseLogin(Database: TDatabase;
|
|
LoginParams: TStrings);
|
|
var
|
|
DBase: TDatabase;
|
|
begin
|
|
DBase := Session.FindDatabase(Database.DatabaseName);
|
|
if (DBase <> nil) and DBase.Connected and
|
|
(Database.Session <> Session) then
|
|
LoginParams.Assign(DBase.Params)
|
|
else OnLoginDialog(Database, LoginParams, 3, True);
|
|
Database.Params.Values['USER NAME'] := LoginParams.Values['USER NAME'];
|
|
Database.Params.Values['PASSWORD'] := LoginParams.Values['PASSWORD'];
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.ExportClick(Sender: TObject);
|
|
begin
|
|
if (ActiveMDIChild <> nil) and (ActiveMDIChild is TMDIChild) then
|
|
(ActiveMDIChild as TMDIChild).ExportCurrentTable;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.ImportClick(Sender: TObject);
|
|
begin
|
|
if (ActiveMDIChild <> nil) and (ActiveMDIChild is TMDIChild) then
|
|
(ActiveMDIChild as TMDIChild).ImportToCurrentTable;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.PrintDataClick(Sender: TObject);
|
|
begin
|
|
if (ActiveMDIChild <> nil) and (ActiveMDIChild is TMDIChild) then
|
|
(ActiveMDIChild as TMDIChild).PrintCurrentTable;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.OptionsClick(Sender: TObject);
|
|
begin
|
|
ShowDialog(TOptionsDialog);
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.ReindexItemClick(Sender: TObject);
|
|
begin
|
|
if (ActiveMDIChild <> nil) and (ActiveMDIChild is TMDIChild) then
|
|
(ActiveMDIChild as TMDIChild).ReindexTable;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.KeepConnectionsItemClick(Sender: TObject);
|
|
begin
|
|
SetKeepConnections(not Session.KeepConnections);
|
|
KeepConnectionsItem.Checked := Session.KeepConnections;
|
|
KeepConnectionsSpd.Down := Session.KeepConnections;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.StartTransItemClick(Sender: TObject);
|
|
begin
|
|
if (ActiveMDIChild <> nil) and (ActiveMDIChild is TMDIChild) then
|
|
(ActiveMDIChild as TMDIChild).StartTransaction(TTransSession(
|
|
Sender = StartTransQueryItem));
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.CommitItemClick(Sender: TObject);
|
|
begin
|
|
if (ActiveMDIChild <> nil) and (ActiveMDIChild is TMDIChild) then
|
|
(ActiveMDIChild as TMDIChild).Commit(TTransSession(
|
|
Sender = CommitQueryItem));
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.RollbackItemClick(Sender: TObject);
|
|
begin
|
|
if (ActiveMDIChild <> nil) and (ActiveMDIChild is TMDIChild) then
|
|
(ActiveMDIChild as TMDIChild).Rollback(TTransSession(
|
|
Sender = RollbackQueryItem));
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.SQLMonitorItemClick(Sender: TObject);
|
|
begin
|
|
FindShowForm(TTraceSQL, '');
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.SetSQLTrace(Value: Boolean);
|
|
var
|
|
I: Integer;
|
|
begin
|
|
if Value <> DBProgress.Trace then begin
|
|
DBProgress.TraceFlags := SQLTraceFlags;
|
|
DBProgress.Trace := Value;
|
|
for I := MDIChildCount - 1 downto 0 do
|
|
if (MDIChildren[I] is TMDIChild) then
|
|
(MDIChildren[I] as TMDIChild).SetTrace(Value);
|
|
end;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.TraceSQLItemClick(Sender: TObject);
|
|
begin
|
|
SetSQLTrace(not DBProgress.Trace);
|
|
TraceSQLItem.Checked := DBProgress.Trace;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.DBProgressTrace(Sender: TObject;
|
|
Flag: TTraceFlag; const Msg: string);
|
|
begin
|
|
BufAddLine(Msg);
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.ClearTraceItemClick(Sender: TObject);
|
|
begin
|
|
BufClear(True);
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.PasswordItemClick(Sender: TObject);
|
|
begin
|
|
if Sender = QryPasswordItem then
|
|
(ActiveMDIChild as TMDIChild).QuerySession.GetPassword
|
|
else Session.GetPassword;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.JvSpeedbarApplyAlign(Sender: TObject;
|
|
Align: TAlign; var Apply: Boolean);
|
|
begin
|
|
Apply := Align in [alTop, alBottom];
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.JvSpeedbarResize(Sender: TObject);
|
|
begin
|
|
DBNavigator.Left := JvSpeedbar.Width - DBNavigator.Width - 8;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.BdePropsItemClick(Sender: TObject);
|
|
begin
|
|
ShowDialog(TBdePropertyDlg);
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.FlatButtonsItemClick(Sender: TObject);
|
|
begin
|
|
if sbFlatBtns in JvSpeedbar.Options then
|
|
JvSpeedbar.Options := JvSpeedbar.Options - [sbFlatBtns]
|
|
else
|
|
JvSpeedbar.Options := JvSpeedbar.Options + [sbFlatBtns];
|
|
FlatButtonsItem.Checked := sbFlatBtns in JvSpeedbar.Options;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.ClosedDatabasesClick(Sender: TObject;
|
|
const RecentName, Caption: string; UserData: Longint);
|
|
begin
|
|
Screen.OnActiveFormChange := nil;
|
|
try
|
|
CreateMDIChild(RecentName);
|
|
finally
|
|
Screen.OnActiveFormChange := UpdateMenuItems;
|
|
end;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.UserHelpItemClick(Sender: TObject);
|
|
begin
|
|
CustomizeHelp(HelpList.Strings);
|
|
end;
|
|
|
|
type
|
|
TExecState = (esNormal, esMinimized, esMaximized, esHidden);
|
|
const
|
|
ShowCommands: array[TExecState] of Integer =
|
|
(SW_SHOWNORMAL, SW_MINIMIZE, SW_SHOWMAXIMIZED, SW_HIDE);
|
|
|
|
function FileExecute(const FileName, Params, StartDir: string;
|
|
InitialState: TExecState): THandle;
|
|
begin
|
|
Result := ShellExecute(Application.Handle, nil, PChar(FileName),
|
|
PChar(Params), PChar(StartDir), ShowCommands[InitialState]);
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.HelpListClick(Sender: TObject;
|
|
const RecentName, Caption: string; UserData: Longint);
|
|
begin
|
|
if GetLongHint(RecentName) <> '' then begin
|
|
FileExecute(GetLongHint(RecentName), '', '', esNormal);
|
|
end;
|
|
end;
|
|
|
|
procedure TDBExplorerMainForm.JvSpeedbarPosChanged(Sender: TObject);
|
|
begin
|
|
if NewStyleControls then
|
|
with JvSpeedbar do begin
|
|
if Align = alTop then BoundLines := [blTop]
|
|
else BoundLines := [];
|
|
end;
|
|
end;
|
|
|
|
end. |