[217] | 1 | unit _BaseTemplate;
|
---|
| 2 |
|
---|
| 3 | interface
|
---|
| 4 |
|
---|
| 5 | uses
|
---|
| 6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
---|
| 7 | Dialogs, ExtCtrls, StdCtrls, StrUtils,
|
---|
| 8 | TypeDefs;
|
---|
| 9 |
|
---|
| 10 | type
|
---|
| 11 | TNewConnectionEvent = procedure(ConnectionID: Integer) of object;
|
---|
| 12 | TCheckCloseableEvent = function: Boolean of object;
|
---|
| 13 |
|
---|
| 14 | TForm_BaseTemplate = class(TForm)
|
---|
| 15 | panel_connection: TPanel;
|
---|
| 16 | label_connection: TLabel;
|
---|
| 17 | combo_connection: TComboBox;
|
---|
| 18 | panel_basecontent: TPanel;
|
---|
| 19 | procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
---|
| 20 | procedure FormActivate(Sender: TObject);
|
---|
| 21 | procedure combo_connectionChange(Sender: TObject);
|
---|
| 22 | protected
|
---|
| 23 | FOnNewConnection: TNewConnectionEvent;
|
---|
| 24 | FOnCheckCloseable: TCheckCloseableEvent;
|
---|
| 25 | FConnectionID: Integer;
|
---|
| 26 | function GetToolCloseable: Boolean;
|
---|
| 27 | public
|
---|
| 28 | constructor Create(AOwner: TComponent); override;
|
---|
| 29 | procedure UpdateConList;
|
---|
| 30 | procedure SelectConnection(ConnectionID: Integer);
|
---|
| 31 | published
|
---|
| 32 | property OnNewConnection: TNewConnectionEvent read FOnNewConnection write FOnNewConnection;
|
---|
| 33 | property OnCheckCloseable: TCheckCloseableEvent read FOnCheckCloseable write FOnCheckCloseable;
|
---|
| 34 | property ConnectionID: Integer read FConnectionID;
|
---|
| 35 | property Closeable: Boolean read GetToolCloseable;
|
---|
| 36 | end;
|
---|
| 37 |
|
---|
| 38 |
|
---|
| 39 | implementation
|
---|
| 40 | {$R *.dfm}
|
---|
| 41 | uses Main, ConnectionManager;
|
---|
| 42 |
|
---|
| 43 |
|
---|
| 44 | procedure TForm_BaseTemplate.UpdateConList;
|
---|
| 45 | var
|
---|
| 46 | i: Integer;
|
---|
| 47 | fn, datatype, boxstring: String;
|
---|
| 48 | level: Integer;
|
---|
| 49 | begin
|
---|
| 50 | combo_connection.ItemIndex := -1;
|
---|
| 51 | combo_connection.Items.Clear;
|
---|
| 52 | if ConManager.Count > 0 then
|
---|
| 53 | begin
|
---|
| 54 | for i := 0 to ConManager.Count - 1 do
|
---|
| 55 | begin
|
---|
| 56 | level := ConManager.ConnectionByIndex[i].LevelNumber;
|
---|
| 57 | fn := ExtractFileName(ConManager.ConnectionByIndex[i].FileName);
|
---|
| 58 | if ConManager.ConnectionByIndex[i].Backend = DB_ONI then
|
---|
| 59 | datatype := 'ONI-.dat: '
|
---|
| 60 | else if ConManager.ConnectionByIndex[i].Backend = DB_ADB then
|
---|
| 61 | datatype := 'OUP-DB: '
|
---|
| 62 | else
|
---|
| 63 | datatype := 'Unknown: ';
|
---|
| 64 | boxstring := datatype + fn + ' (Level: ' + IntToStr(level) + ') [' + IntToStr(ConManager.ConnectionByIndex[i].ConnectionID) + ']';
|
---|
| 65 | combo_connection.Items.Add(boxstring);
|
---|
| 66 | if ConManager.ConnectionByIndex[i].ConnectionID = FConnectionID then
|
---|
| 67 | combo_connection.ItemIndex := combo_connection.Items.Count - 1;
|
---|
| 68 | end;
|
---|
| 69 | if combo_connection.ItemIndex = -1 then
|
---|
| 70 | begin
|
---|
| 71 | combo_connection.ItemIndex := 0;
|
---|
| 72 | combo_connectionChange(Self);
|
---|
| 73 | end;
|
---|
| 74 | end
|
---|
| 75 | else
|
---|
| 76 | begin
|
---|
| 77 | FConnectionID := 0;
|
---|
| 78 | combo_connectionChange(Self);
|
---|
| 79 | end;
|
---|
| 80 | end;
|
---|
| 81 |
|
---|
| 82 |
|
---|
| 83 |
|
---|
| 84 | procedure TForm_BaseTemplate.combo_connectionChange(Sender: TObject);
|
---|
| 85 | var
|
---|
| 86 | name: String;
|
---|
| 87 | begin
|
---|
| 88 | if combo_connection.ItemIndex >= 0 then
|
---|
| 89 | begin
|
---|
| 90 | name := combo_connection.Items.Strings[combo_connection.ItemIndex];
|
---|
| 91 | FConnectionID := StrToInt(MidStr(name, Pos('[', name) + 1, Pos(']', name) - Pos('[', name) - 1));
|
---|
| 92 | end
|
---|
| 93 | else
|
---|
| 94 | FConnectionID := -1;
|
---|
| 95 | if Assigned(FOnNewConnection) then
|
---|
| 96 | FOnNewConnection(FConnectionID);
|
---|
| 97 | end;
|
---|
| 98 |
|
---|
| 99 |
|
---|
| 100 | procedure TForm_BaseTemplate.SelectConnection(ConnectionID: Integer);
|
---|
| 101 | begin
|
---|
| 102 | if FConnectionID <> ConnectionID then
|
---|
| 103 | begin
|
---|
| 104 | combo_connection.ItemIndex := ConManager.ConnectionIndexByID[ConnectionID];
|
---|
| 105 | combo_connectionChange(Self);
|
---|
| 106 | end;
|
---|
| 107 | end;
|
---|
| 108 |
|
---|
| 109 |
|
---|
| 110 | function TForm_BaseTemplate.GetToolCloseable: Boolean;
|
---|
| 111 | begin
|
---|
| 112 | if Assigned(FOnCheckCloseable) then
|
---|
| 113 | Result := FOnCheckCloseable
|
---|
| 114 | else
|
---|
| 115 | Result := True;
|
---|
| 116 | end;
|
---|
| 117 |
|
---|
| 118 |
|
---|
| 119 | constructor TForm_BaseTemplate.Create(AOwner: TComponent);
|
---|
| 120 | begin
|
---|
| 121 | inherited;
|
---|
| 122 | Self.Width := 260;
|
---|
| 123 | Self.Height := 300;
|
---|
| 124 | FOnNewConnection := nil;
|
---|
| 125 | FOnCheckCloseable := nil;
|
---|
| 126 | FConnectionID := -1;
|
---|
| 127 | UpdateConList;
|
---|
| 128 | end;
|
---|
| 129 |
|
---|
| 130 | procedure TForm_BaseTemplate.FormActivate(Sender: TObject);
|
---|
| 131 | begin
|
---|
| 132 | if panel_basecontent.CanFocus then
|
---|
| 133 | panel_basecontent.SetFocus;
|
---|
| 134 | end;
|
---|
| 135 |
|
---|
| 136 | procedure TForm_BaseTemplate.FormClose(Sender: TObject; var Action: TCloseAction);
|
---|
| 137 | begin
|
---|
| 138 | Action := caFree;
|
---|
| 139 | end;
|
---|
| 140 |
|
---|
| 141 |
|
---|
| 142 | end.
|
---|