ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/runtime/IBDatabase.pas
(Generate patch)

Comparing ibx/trunk/runtime/IBDatabase.pas (file contents):
Revision 29 by tony, Sat May 9 11:37:49 2015 UTC vs.
Revision 31 by tony, Tue Jul 14 15:31:25 2015 UTC

# Line 43 | Line 43 | uses
43   {$ELSE}
44    unix,
45   {$ENDIF}
46 <  Dialogs, Controls, StdCtrls, SysUtils, Classes, Forms, ExtCtrls, IBHeader, IBExternals, DB,
47 <  IB, DBLoginDlg;
46 >  SysUtils, Classes, FPTimer, IBHeader, IBExternals, DB,
47 >  IB, CustApp;
48  
49   const
50    DPBPrefix = 'isc_dpb_';
# Line 178 | Line 178 | type
178      FDefaultTransaction: TIBTransaction;
179      FInternalTransaction: TIBTransaction;
180      FStreamedConnected: Boolean;
181 <    FTimer: TTimer;
181 >    FTimer: TFPTimer;
182      FUserNames: TStringList;
183      FDataSets: TList;
184      FLoginCalled: boolean;
# Line 215 | Line 215 | type
215      procedure DoDisconnect; override;
216      function GetConnected: Boolean; override;
217      procedure CheckStreamConnect;
218 +    procedure HandleException(Sender: TObject);
219      procedure Notification( AComponent: TComponent; Operation: TOperation); override;
220      function GetDataset(Index : longint) : TDataset; override;
221      function GetDataSetCount : Longint; override;
# Line 302 | Line 303 | type
303      FStreamedActive     : Boolean;
304      FTPB                : PChar;
305      FTPBLength          : Short;
306 <    FTimer              : TTimer;
306 >    FTimer              : TFPTimer;
307      FDefaultAction      : TTransactionAction;
308      FTRParams           : TStrings;
309      FTRParamsChanged    : Boolean;
# Line 442 | Line 443 | type
443      procedure DoAfterInsert(Sender: TObject); virtual;
444      procedure DoAfterPost(Sender: TObject); virtual;
445      function GetCharSetSize(CharSetID: integer): integer;
446 +    procedure HandleException(Sender: TObject);
447 +    procedure SetCursor;
448 +    procedure RestoreCursor;
449    public
450      property BeforeDatabaseConnect: TBeforeDatabaseConnectEvent read FBeforeDatabaseConnect
451                                                   write FBeforeDatabaseConnect;
# Line 490 | Line 494 | begin
494    FDBName := '';
495    FDBParams := TStringList.Create;
496    FSQLHourGlass := true;
497 +  if (AOwner <> nil) and
498 +     (AOwner is TCustomApplication) and
499 +     TCustomApplication(AOWner).ConsoleApplication then
500 +    LoginPrompt := false;
501    {$ifdef UNIX}
502    if csDesigning in ComponentState then
503      FDBParams.Add('lc_ctype=UTF-8');
# Line 511 | Line 519 | begin
519    FUserNames := nil;
520    FInternalTransaction := TIBTransaction.Create(self);
521    FInternalTransaction.DefaultDatabase := Self;
522 <  FTimer := TTimer.Create(Self);
522 >  FTimer := TFPTimer.Create(Self);
523    FTimer.Enabled := False;
524    FTimer.Interval := 0;
525    FTimer.OnTimer := TimeoutConnection;
# Line 872 | Line 880 | begin
880      end;
881    except
882      if csDesigning in ComponentState then
883 <      Application.HandleException(Self)
883 >      HandleException(Self)
884      else
885        raise;
886    end;
887   end;
888  
889 + procedure TIBDataBase.HandleException(Sender: TObject);
890 + var aParent: TComponent;
891 + begin
892 +  aParent := Owner;
893 +  while aParent <> nil do
894 +  begin
895 +    if aParent is TCustomApplication then
896 +    begin
897 +      TCustomApplication(aParent).HandleException(Sender);
898 +      Exit;
899 +    end;
900 +    aParent := aParent.Owner;
901 +  end;
902 +  SysUtils.ShowException(ExceptObject,ExceptAddr);
903 + end;
904 +
905   procedure TIBDataBase.Notification(AComponent: TComponent;
906     Operation: TOperation);
907   var
# Line 935 | Line 959 | begin
959      end;
960    end
961    else
962 +  if assigned(IBGUIInterface) then
963    begin
964      IndexOfUser := IndexOfDBConst(DPBConstantNames[isc_dpb_user_name]);
965      if IndexOfUser <> -1 then
# Line 949 | Line 974 | begin
974                                           Length(Params[IndexOfPassword]));
975        OldPassword := password;
976      end;
977 <    result := LoginDialogEx(DatabaseName, Username, Password, False);
977 >    result := IBGUIInterface.LoginDialogEx(DatabaseName, Username, Password, False);
978      if result then
979      begin
980        if IndexOfUser = -1 then
# Line 966 | Line 991 | begin
991            HidePassword;
992        end;
993      end;
994 <  end;
994 >  end
995 >  else
996 >  if LoginPrompt then
997 >     IBError(ibxeNoLoginDialog,[]);
998    finally
999      FLoginCalled := false
1000    end;
# Line 1421 | Line 1449 | begin
1449    FTRParamsChanged := True;
1450    TStringList(FTRParams).OnChange := TRParamsChange;
1451    TStringList(FTRParams).OnChanging := TRParamsChanging;
1452 <  FTimer := TTimer.Create(Self);
1452 >  FTimer := TFPTimer.Create(Self);
1453    FTimer.Enabled := False;
1454    FTimer.Interval := 0;
1455    FTimer.OnTimer := TimeoutTransaction;
# Line 1995 | Line 2023 | begin
2023      Result := 1; {Unknown character set}
2024   end;
2025  
2026 + procedure TIBBase.HandleException(Sender: TObject);
2027 + begin
2028 +  if assigned(Database) then
2029 +     Database.HandleException(Sender)
2030 +  else
2031 +     SysUtils.ShowException(ExceptObject,ExceptAddr);
2032 + end;
2033 +
2034 + procedure TIBBase.SetCursor;
2035 + begin
2036 +  if Assigned(Database) and not Database.SQLHourGlass then
2037 +     Exit;
2038 +  if assigned(IBGUIInterface) then
2039 +     IBGUIInterface.SetCursor;
2040 + end;
2041 +
2042 + procedure TIBBase.RestoreCursor;
2043 + begin
2044 +  if Assigned(Database) and not Database.SQLHourGlass then
2045 +     Exit;
2046 +  if assigned(IBGUIInterface) then
2047 +     IBGUIInterface.RestoreCursor;
2048 + end;
2049 +
2050   procedure TIBBase.CheckDatabase;
2051   begin
2052    if (FDatabase = nil) then

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines