Changeset 20
- Timestamp:
- Mar 23, 2018, 1:59:25 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/DbEngines/UEngineMySQL.pas
r15 r20 12 12 { TDatabaseMySQL } 13 13 14 TDatabaseMySQL = class(TD atabaseClient)14 TDatabaseMySQL = class(TDbClient) 15 15 private 16 16 procedure LoadFields(Table: TTable); 17 procedure LoadTables; 17 protected 18 procedure LoadTables(Tables: TTables); override; 18 19 public 19 20 SqlDatabase: TSqlDatabase; … … 25 26 end; 26 27 28 { TDbConnectParamsMySQL } 29 30 TDbConnectParamsMySQL = class(TDbConnectParams) 31 protected 32 function GetConnectionString: string; override; 33 procedure SetConnectionString(AValue: string); override; 34 public 35 Host: string; 36 Port: Word; 37 end; 38 39 27 40 implementation 41 42 { TDbConnectParamsMySQL } 43 44 function TDbConnectParamsMySQL.GetConnectionString: string; 45 begin 46 Result := 'mysql://' + Host + ':' + IntToStr(Port); 47 end; 48 49 procedure TDbConnectParamsMySQL.SetConnectionString(AValue: string); 50 var 51 URL: TURL; 52 begin 53 URL := TURL.Create; 54 try 55 URL.AsString := AValue; 56 if (URL.Scheme <> 'mysql') and (AValue <> '') then 57 raise Exception.Create('Wrong connection string. Required mysql scheme.'); 58 Host := URL.Host.AsString; 59 Port := URL.Port; 60 finally 61 URL.Free; 62 end; 63 end; 28 64 29 65 { TDatabaseMySQL } … … 51 87 if DbRows2.Count > 0 then begin 52 88 TypeName := TDictionaryStringString(DbRows2[0]).Values['Name']; 53 NewField.DataType := Table.D atabase.Engine.DataTypes.FindByName(TypeName);89 NewField.DataType := Table.DbClient.ClientType.DataTypes.FindByName(TypeName); 54 90 if not Assigned(NewField.DataType) then 55 NewField.DataType := Table.D atabase.Engine.DataTypes.FindByType(ftString);91 NewField.DataType := Table.DbClient.ClientType.DataTypes.FindByType(ftString); 56 92 end else begin 57 93 // Use string as default 58 NewField.DataType := Table.D atabase.Engine.DataTypes.FindByType(ftString);94 NewField.DataType := Table.DbClient.ClientType.DataTypes.FindByType(ftString); 59 95 end; 60 96 Table.Fields.Add(NewField); … … 66 102 end; 67 103 68 procedure TDatabaseMySQL.LoadTables ;104 procedure TDatabaseMySQL.LoadTables(Tables: TTables); 69 105 var 70 106 DbRows: TDbRows; … … 78 114 NewTable := TTable.Create; 79 115 NewTable.Id := StrToInt(TDictionaryStringString(DbRows[I]).Values['Id']); 80 NewTable.D atabase := Database;116 NewTable.DbClient := Self; 81 117 NewTable.Name := TDictionaryStringString(DbRows[I]).Values['Name']; 82 118 NewTable.Caption := TDictionaryStringString(DbRows[I]).Values['Title']; 83 119 LoadFields(NewTable); 84 Database.Tables.Add(NewTable);120 Tables.Add(NewTable); 85 121 end; 86 122 finally … … 112 148 URL := TURL.Create; 113 149 try 114 URL.AsString := Database.ConnectionString;150 URL.AsString := ConnectProfile.Params.ConnectionString; 115 151 if URL.Scheme <> 'mysql' then 116 152 raise Exception.Create('Wrong connection string. Required mysql protocol.'); … … 124 160 SqlDatabase.Database := Copy(URL.Path, 2, High(Integer)); 125 161 SqlDatabase.Connect; 126 LoadTables;127 162 finally 128 163 URL.Free; -
trunk/DbEngines/UEngineSQLite.pas
r7 r20 9 9 10 10 type 11 TDatabaseSQLite = class(TD atabaseClient)11 TDatabaseSQLite = class(TDbClient) 12 12 13 13 end; 14 15 TDbConnectParamsSQLite = class(TDbConnectParams) 16 17 end; 18 14 19 15 20 implementation -
trunk/DbEngines/UEngineXML.pas
r17 r20 12 12 { TDatabaseXML } 13 13 14 TDatabaseXML = class(TD atabaseClient)14 TDatabaseXML = class(TDbClient) 15 15 private 16 function GetFileName: string; 16 FFileName: string; 17 Tables: TTables; 17 18 procedure LoadNodeRecord(Row: TRecord; Node: TDOMNode); 18 19 procedure SaveNodeRecord(Row: TRecord; Node: TDOMNode); … … 30 31 procedure SaveToFile(FileName: string); 31 32 function GetNextPart(var Text: string): string; 33 protected 32 34 public 33 35 procedure Query(DbRows: TDbRows; Text: string); override; 36 procedure LoadTables(Tables: TTables); override; 34 37 procedure Load; override; 35 38 procedure Save; override; 36 property FileName: string read GetFileName; 39 constructor Create; override; 40 destructor Destroy; override; 41 property FileName: string read FFileName write FFileName; 42 end; 43 44 { TDbConnectParamsXml } 45 46 TDbConnectParamsXml = class(TDbConnectParams) 47 protected 48 function GetConnectionString: string; override; 49 procedure SetConnectionString(AValue: string); override; 50 public 51 FileName: string; 37 52 end; 38 53 … … 46 61 SWrongFileFormat = 'Wrong file format'; 47 62 48 { TDatabaseXML } 49 50 function TDatabaseXML.GetFileName: string; 63 { TDbConnectParamsXml } 64 65 function TDbConnectParamsXml.GetConnectionString: string; 66 begin 67 Result := 'file:///' + FileName; 68 end; 69 70 procedure TDbConnectParamsXml.SetConnectionString(AValue: string); 51 71 var 52 72 URL: TURL; … … 54 74 URL := TURL.Create; 55 75 try 56 URL.AsString := Database.ConnectionString;57 if URL.Scheme <> 'file'then76 URL.AsString := AValue; 77 if (URL.Scheme <> 'file') and (AValue <> '') then 58 78 raise Exception.Create('Wrong connection string. Required file scheme.'); 59 60 Result := URL.Path 79 FileName := Copy(URL.Path, 2, Length(URL.Path)); 61 80 finally 62 81 URL.Free; 63 82 end; 64 83 end; 84 85 { TDatabaseXML } 65 86 66 87 procedure TDatabaseXML.LoadNodeRecord(Row: TRecord; Node: TDOMNode); … … 137 158 begin 138 159 Field.Name := ReadString(Node, 'Name', ''); 139 Field.DataType := Field.Table.D atabase.Engine.DataTypes.FindByType(TFieldType(ReadInteger(Node, 'Type', 0)));160 Field.DataType := Field.Table.DbClient.ClientType.DataTypes.FindByType(TFieldType(ReadInteger(Node, 'Type', 0))); 140 161 Field.TextBefore := ReadString(Node, 'TextBefore', ''); 141 162 Field.TextAfter := ReadString(Node, 'TextAfter', ''); … … 219 240 while Assigned(Node2) and (Node2.NodeName = 'Table') do begin 220 241 NewTable := TTable.Create; 221 NewTable.D atabase := Tables.Database;242 NewTable.DbClient := Tables.DbClient; 222 243 LoadNodeTable(NewTable, Node2); 223 244 Tables.Add(NewTable); … … 252 273 NewNode := FindNode('Tables'); 253 274 if Assigned(NewNode) then 254 LoadNodeTables( Database.Tables, NewNode);275 LoadNodeTables(Tables, NewNode); 255 276 end; 256 277 finally … … 273 294 NewNode := OwnerDocument.CreateElement('Tables'); 274 295 AppendChild(NewNode); 275 SaveNodeTables( Database.Tables, NewNode);296 SaveNodeTables(Tables, NewNode); 276 297 end; 277 298 ForceDirectories(ExtractFileDir(FileName)); … … 310 331 TableName := GetNextPart(Text); 311 332 end else raise Exception.Create('No table specified with FROM'); 312 Table := Database.Tables.SearchByName(TableName);333 Table := Tables.SearchByName(TableName); 313 334 if Assigned(Table) then begin 314 335 DbRows.Count := 0; … … 330 351 end; 331 352 353 procedure TDatabaseXML.LoadTables(Tables: TTables); 354 begin 355 inherited; 356 357 end; 358 332 359 procedure TDatabaseXML.Load; 333 360 begin … … 341 368 end; 342 369 370 constructor TDatabaseXML.Create; 371 begin 372 Tables := TTables.Create; 373 inherited Create; 374 end; 375 376 destructor TDatabaseXML.Destroy; 377 begin 378 Tables.Free; 379 inherited Destroy; 380 end; 381 343 382 344 383 end. -
trunk/Forms/UFormConnect.lfm
r9 r20 7 7 ClientHeight = 452 8 8 ClientWidth = 616 9 DesignTimePPI = 120 9 10 OnShow = FormShow 10 LCLVersion = '1. 5'11 LCLVersion = '1.8.0.6' 11 12 object EditName: TEdit 12 13 Left = 211 13 Height = 3514 Height = 28 14 15 Top = 21 15 16 Width = 261 … … 18 19 object Label1: TLabel 19 20 Left = 16 20 Height = 2 521 Height = 20 21 22 Top = 26 22 Width = 6223 Width = 43 23 24 Caption = 'Name:' 24 25 ParentColor = False … … 26 27 object Label2: TLabel 27 28 Left = 16 28 Height = 2 529 Height = 20 29 30 Top = 67 30 Width = 1 5931 Width = 115 31 32 Caption = 'Database engine:' 32 33 ParentColor = False … … 34 35 object ComboBox1: TComboBox 35 36 Left = 213 36 Height = 3737 Height = 28 37 38 Top = 67 38 Width = 252 39 ItemHeight = 0 39 Width = 260 40 ItemHeight = 20 41 OnChange = ComboBox1Change 40 42 Style = csDropDownList 41 43 TabOrder = 1 42 end43 object EditConnectionString: TEdit44 Left = 21145 Height = 3546 Top = 11247 Width = 26148 TabOrder = 249 end50 object Label3: TLabel51 Left = 1652 Height = 2553 Top = 11754 Width = 16955 Caption = 'Connection string:'56 ParentColor = False57 44 end 58 45 object ButtonOk: TButton … … 64 51 Caption = 'Ok' 65 52 ModalResult = 1 66 TabOrder = 353 TabOrder = 2 67 54 end 68 55 object ButtonCancel: TButton … … 74 61 Caption = 'Cancel' 75 62 ModalResult = 2 63 TabOrder = 3 64 end 65 object PageControl1: TPageControl 66 Left = 15 67 Height = 250 68 Top = 116 69 Width = 586 70 ActivePage = TabSheetRegistry 71 Anchors = [akTop, akLeft, akRight] 72 ShowTabs = False 73 TabIndex = 3 76 74 TabOrder = 4 75 object TabSheetXml: TTabSheet 76 ClientHeight = 242 77 ClientWidth = 578 78 object Label3: TLabel 79 Left = 14 80 Height = 20 81 Top = 20 82 Width = 54 83 Caption = 'Xml file:' 84 ParentColor = False 85 end 86 object EditXml: TEdit 87 Left = 92 88 Height = 28 89 Top = 21 90 Width = 372 91 Anchors = [akTop, akLeft, akRight] 92 TabOrder = 0 93 end 94 object ButtonXmlBrowse: TButton 95 Left = 472 96 Height = 31 97 Top = 16 98 Width = 94 99 Anchors = [akTop, akRight] 100 Caption = 'Browse' 101 OnClick = ButtonXmlBrowseClick 102 TabOrder = 1 103 end 104 end 105 object TabSheetSql: TTabSheet 106 ClientHeight = 242 107 ClientWidth = 578 108 object Label4: TLabel 109 Left = 14 110 Height = 20 111 Top = 16 112 Width = 34 113 Caption = 'Host:' 114 ParentColor = False 115 end 116 object EditHost: TEdit 117 Left = 125 118 Height = 28 119 Top = 12 120 Width = 260 121 TabOrder = 0 122 end 123 object Label5: TLabel 124 Left = 16 125 Height = 20 126 Top = 48 127 Width = 30 128 Caption = 'Port:' 129 ParentColor = False 130 end 131 object SpinEditPort: TSpinEdit 132 Left = 125 133 Height = 28 134 Top = 48 135 Width = 111 136 MaxValue = 65535 137 TabOrder = 1 138 end 139 end 140 object TabSheetSqlite: TTabSheet 141 Caption = 'TabSheetSqlite' 142 end 143 object TabSheetRegistry: TTabSheet 144 Caption = 'TabSheetRegistry' 145 end 146 end 147 object OpenDialog1: TOpenDialog 148 left = 528 149 top = 32 77 150 end 78 151 end -
trunk/Forms/UFormConnect.pas
r6 r20 7 7 uses 8 8 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, 9 ComCtrls, UDatabase;9 ComCtrls, Spin, UDatabase; 10 10 11 11 type … … 14 14 15 15 TFormConnect = class(TForm) 16 ButtonXmlBrowse: TButton; 16 17 ButtonOk: TButton; 17 18 ButtonCancel: TButton; 18 19 ComboBox1: TComboBox; 20 EditHost: TEdit; 21 EditXml: TEdit; 19 22 EditName: TEdit; 20 EditConnectionString: TEdit;21 23 Label1: TLabel; 22 24 Label2: TLabel; 23 25 Label3: TLabel; 26 Label4: TLabel; 27 Label5: TLabel; 28 OpenDialog1: TOpenDialog; 29 PageControl1: TPageControl; 30 SpinEditPort: TSpinEdit; 31 TabSheetSqlite: TTabSheet; 32 TabSheetRegistry: TTabSheet; 33 TabSheetXml: TTabSheet; 34 TabSheetSql: TTabSheet; 35 procedure ButtonXmlBrowseClick(Sender: TObject); 36 procedure ComboBox1Change(Sender: TObject); 24 37 procedure FormShow(Sender: TObject); 25 38 private 26 { private declarations }27 39 public 28 procedure Load( Database: TDatabase);29 procedure Save( Database: TDatabase);40 procedure Load(ConnectProfile: TDbConnectProfile); 41 procedure Save(ConnectProfile: TDbConnectProfile); 30 42 procedure Init; 43 procedure UpdateInterface; 31 44 end; 32 45 33 46 var 34 47 FormConnect: TFormConnect; 48 35 49 36 50 implementation … … 39 53 40 54 uses 41 UCore ;55 UCore, UEngineXML, UEngineMySQL; 42 56 43 57 { TFormConnect } … … 47 61 end; 48 62 49 procedure TFormConnect. Load(Database: TDatabase);63 procedure TFormConnect.ButtonXmlBrowseClick(Sender: TObject); 50 64 begin 51 EditName.Text := Database.Name; 52 EditConnectionString.Text := Database.ConnectionString; 53 ComboBox1.ItemIndex := ComboBox1.Items.IndexOfObject(Database.Engine); 65 OpenDialog1.Filter := 'XML files (.xml)|*.xml|Any file|*.*'; 66 OpenDialog1.InitialDir := ExtractFileDir(EditXml.Text); 67 OpenDialog1.FileName := ExtractFileName(EditXml.Text); 68 if OpenDialog1.Execute then 69 EditXml.Text := OpenDialog1.FileName; 70 end; 71 72 procedure TFormConnect.ComboBox1Change(Sender: TObject); 73 begin 74 UpdateInterface; 75 end; 76 77 procedure TFormConnect.Load(ConnectProfile: TDbConnectProfile); 78 begin 79 EditName.Text := ConnectProfile.Name; 80 //EditConnectionString.Text := Database.ConnectionString; 81 ComboBox1.ItemIndex := ComboBox1.Items.IndexOfObject(ConnectProfile.ClientType); 54 82 if (ComboBox1.ItemIndex = -1) and (ComboBox1.Items.Count > 0) then 55 83 ComboBox1.ItemIndex := 0; 84 if ConnectProfile.Params is TDbConnectParamsXml then 85 EditXml.Text := TDbConnectParamsXml(ConnectProfile.Params).FileName; 86 if ConnectProfile.Params is TDbConnectParamsMysql then begin 87 EditHost.Text := TDbConnectParamsMysql(ConnectProfile.Params).Host; 88 SpinEditPort.Value := TDbConnectParamsMysql(ConnectProfile.Params).Port; 89 end; 90 UpdateInterface; 56 91 end; 57 92 58 procedure TFormConnect.Save( Database: TDatabase);93 procedure TFormConnect.Save(ConnectProfile: TDbConnectProfile); 59 94 begin 60 Database.Name := EditName.Text; 61 Database.ConnectionString := EditConnectionString.Text; 62 Database.Engine := TDatabaseEngine(ComboBox1.Items.Objects[ComboBox1.ItemIndex]); 95 ConnectProfile.Name := EditName.Text; 96 //DatabaseClient.ConnectionString := EditConnectionString.Text; 97 ConnectProfile.ClientType := TDbClientType(ComboBox1.Items.Objects[ComboBox1.ItemIndex]); 98 if ConnectProfile.Params is TDbConnectParamsXml then 99 TDbConnectParamsXml(ConnectProfile.Params).FileName := EditXml.Text; 100 if ConnectProfile.Params is TDbConnectParamsMysql then begin 101 TDbConnectParamsMysql(ConnectProfile.Params).Host := EditHost.Text; 102 TDbConnectParamsMysql(ConnectProfile.Params).Port := SpinEditPort.Value; 103 end; 63 104 end; 64 105 … … 68 109 begin 69 110 ComboBox1.Items.Clear; 70 for I := 0 to Core.Engines.Count - 1 do 71 ComboBox1.Items.AddObject(TDatabaseEngine(Core.Engines[I]).Name, Core.Engines[I]); 111 for I := 0 to Core.DbManager.ClientTypes.Count - 1 do 112 ComboBox1.Items.AddObject(TDbClientType(Core.DbManager.ClientTypes[I]).Name, 113 Core.DbManager.ClientTypes[I]); 114 end; 115 116 procedure TFormConnect.UpdateInterface; 117 begin 118 PageControl1.TabIndex := ComboBox1.ItemIndex; 72 119 end; 73 120 -
trunk/Forms/UFormDatabases.lfm
r11 r20 4 4 Top = 429 5 5 Width = 908 6 Caption = ' Databases'6 Caption = 'Connection profiles' 7 7 ClientHeight = 515 8 8 ClientWidth = 908 9 DesignTimePPI = 120 9 10 OnShow = FormShow 10 11 Position = poMainFormCenter 11 LCLVersion = '1. 5'12 LCLVersion = '1.8.0.6' 12 13 object ListView1: TListView 13 14 Left = 4 … … 79 80 object MenuItem1: TMenuItem 80 81 Action = AAdd 81 Bitmap.Data = {82 36100000424D361000000000000036000000280000002000000020000000010083 2000000000000010000064000000640000000000000000000000FFFFFF00FFFF84 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF85 FF00DBDBDBFF949494FF707070FF707070FF707070FF707070FF707070FF707086 70FF707070FF707070FF707070FF949494FFDBDBDBFFFFFFFF00FFFFFF00FFFF87 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF88 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF89 FF00005104FF005104FF005104FF005104FF005104FF005104FF005104FF005190 04FF005104FF005104FF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF91 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF92 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF93 FF00005104FF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D094 7FFF76D07FFF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF95 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF96 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF97 FF00005104FF76D07FFF09A514FF089F12FF069710FF06920EFF06920EFF069498 0FFF079910FF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF99 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF100 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF101 FF00005104FF76D07FFF09A514FF089F12FF079910FF06940FFF06920EFF0692102 0EFF06940FFF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF103 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF104 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF105 FF00005104FF76D07FFF09A514FF09A514FF089F12FF079910FF06940FFF0692106 0EFF06920EFF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF107 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF108 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF109 FF00005104FF76D07FFF09A715FF09A514FF09A514FF089F12FF079910FF0694110 0FFF06920EFF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF111 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF112 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF113 FF00005104FF76D07FFF09A715FF09A514FF09A514FF09A514FF089F12FF0799114 10FF06940FFF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF115 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF116 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF117 FF00005104FF76D07FFF09A715FF09A715FF09A514FF09A514FF09A514FF089F118 12FF079910FF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF119 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F3F3F3FFDBDB120 DBFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCF121 CFFF005104FF76D07FFF09A715FF09A715FF09A715FF09A514FF09A514FF09A5122 14FF089F12FF76D07FFF005104FF646464FFABABABFFCFCFCFFFCFCFCFFFCFCF123 CFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFDBDBDBFFDBDBDBFF9494124 94FF707070FF707070FF707070FF707070FF707070FF707070FF707070FF7070125 70FF005104FF76D07FFF09A715FF09A715FF09A715FF09A715FF09A715FF09A5126 14FF09A514FF76D07FFF005104FF4C4C4CFF646464FF707070FF707070FF7070127 70FF707070FF707070FF707070FF707070FF707070FF949494FF005104FF0051128 04FF005104FF005104FF005104FF005104FF005104FF005104FF005104FF0051129 04FF005104FF76D07FFF09A715FF09A715FF09A715FF09A715FF09A715FF09A7130 15FF09A514FF76D07FFF005104FF005104FF005104FF005104FF005104FF0051131 04FF005104FF005104FF005104FF005104FF005104FF707070FF005104FF76D0132 7FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D0133 7FFF76D07FFF76D07FFF09A715FF09A715FF09A715FF09A715FF09A715FF09A7134 15FF09A715FF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D0135 7FFF76D07FFF76D07FFF76D07FFF76D07FFF005104FF707070FF005104FF76D0136 7FFF74CD7BFF6FCC76FF6ACA72FF66C86DFF4ABE52FF25B130FF09A715FF09A7137 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A7138 15FF09A715FF09A514FF09A514FF09A514FF089F12FF079910FF06940FFF0692139 0EFF06920EFF06940FFF069710FF76D07FFF005104FF707070FF005104FF76D0140 7FFF79CF7FFF74CD7BFF6FCC76FF6ACA72FF6ACA72FF50C159FF25B130FF09A7141 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A7142 15FF09A715FF09A715FF09A715FF09A514FF09A514FF089F12FF079910FF0694143 0FFF06940FFF06920EFF06940FFF76D07FFF005104FF707070FF005104FF76D0144 7FFF7ED184FF79CF7FFF74CD7BFF6FCC76FF6FCC76FF6ACA72FF5AC462FF32B5145 3CFF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A7146 15FF09A715FF09A715FF09A715FF09A715FF09A514FF09A514FF089F12FF0799147 10FF069710FF06940FFF06920EFF76D07FFF005104FF707070FF005104FF76D0148 7FFF84D38AFF7ED184FF79CF7FFF74CD7BFF74CD7BFF6FCC76FF6ACA72FF66C8149 6DFF41BB4AFF25B130FF09A715FF09A715FF09A715FF09A715FF09A715FF09A7150 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A514FF09A514FF089F151 12FF089F12FF069710FF06940FFF76D07FFF005104FF707070FF005104FF76D0152 7FFF84D38AFF84D38AFF7ED184FF79CF7FFF79CF7FFF74CD7BFF6FCC76FF6ACA153 72FF6ACA72FF50C159FF32B53CFF09A715FF09A715FF09A715FF09A715FF09A7154 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A514FF09A5155 14FF089F12FF089F12FF069710FF76D07FFF005104FF707070FF005104FF76D0156 7FFF8CD692FF84D38AFF84D38AFF7ED184FF7ED184FF79CF7FFF74CD7BFF6FCC157 76FF6FCC76FF6ACA72FF66C86DFF4ABE52FF25B130FF09A715FF09A715FF09A7158 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A514FF09A5159 14FF09A514FF089F12FF089F12FF76D07FFF005104FF707070FF005104FF76D0160 7FFF90D795FF8CD692FF84D38AFF84D38AFF84D38AFF7ED184FF79CF7FFF74CD161 7BFF74CD7BFF6FCC76FF6ACA72FF66C86DFF66C86DFF41BB4AFF25B130FF09A7162 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A7163 15FF09A514FF09A514FF089F12FF76D07FFF005104FF707070FF005104FF76D0164 7FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D0165 7FFF76D07FFF76D07FFF6FCC76FF6ACA72FF6ACA72FF66C86DFF66C86DFF41BB166 4AFF25B130FF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D0167 7FFF76D07FFF76D07FFF76D07FFF76D07FFF005104FF949494FF005104FF0051168 04FF005104FF005104FF005104FF005104FF005104FF005104FF005104FF0051169 04FF005104FF76D07FFF74CD7BFF6FCC76FF6FCC76FF6ACA72FF66C86DFF66C8170 6DFF5AC462FF76D07FFF005104FF005104FF005104FF005104FF005104FF0051171 04FF005104FF005104FF005104FF005104FF005104FFDBDBDBFFFFFFFF00FFFF172 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF173 FF00005104FF76D07FFF79CF7FFF74CD7BFF74CD7BFF6FCC76FF6ACA72FF66C8174 6DFF66C86DFF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF175 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF176 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF177 FF00005104FF76D07FFF7ED184FF79CF7FFF79CF7FFF74CD7BFF6FCC76FF6ACA178 72FF6ACA72FF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF179 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF180 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF181 FF00005104FF76D07FFF84D38AFF7ED184FF7ED184FF79CF7FFF74CD7BFF6FCC182 76FF6FCC76FF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF183 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF184 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF185 FF00005104FF76D07FFF84D38AFF84D38AFF84D38AFF7ED184FF79CF7FFF74CD186 7BFF74CD7BFF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF187 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF188 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF189 FF00005104FF76D07FFF8CD692FF8CD692FF84D38AFF84D38AFF7ED184FF79CF190 7FFF79CF7FFF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF191 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF192 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF193 FF00005104FF76D07FFF90D795FF8CD692FF8CD692FF84D38AFF84D38AFF7ED1194 84FF7ED184FF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF195 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF196 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF197 FF00005104FF76D07FFF9BDBA0FF90D795FF90D795FF8CD692FF84D38AFF84D3198 8AFF7ED184FF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF199 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF200 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF201 FF00005104FF76D07FFF9BDBA0FF9BDBA0FF90D795FF90D795FF8CD692FF8CD6202 92FF84D38AFF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF203 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF204 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF205 FF00005104FF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D0206 7FFF76D07FFF76D07FFF005104FF949494FFDBDBDBFFFFFFFF00FFFFFF00FFFF207 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF208 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF209 FF00005104FF005104FF005104FF005104FF005104FF005104FF005104FF0051210 04FF005104FF005104FF005104FFDBDBDBFFF3F3F3FFFFFFFF00FFFFFF00FFFF211 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00212 }213 82 end 214 83 object MenuItem2: TMenuItem 215 84 Action = AModify 216 Bitmap.Data = {217 36100000424D3610000000000000360000002800000020000000200000000100218 2000000000000010000064000000640000000000000000000000FFFFFF00FFFF219 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF220 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF221 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF222 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF223 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF224 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF225 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF226 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF227 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF228 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF229 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF230 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF231 FF00BABABAFFCFCFCFFFF6F6F6FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF232 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF233 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF234 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF235 FF00BABABAFF415D77FF4D697FFFC0C7CCFFFFFFFF00FFFFFF00FFFFFF00FFFF236 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF237 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF238 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF239 FF00D8D8D8FF415D77FF597EAEFF5492E5FF69AAEDFFA3CEF5FFFFFFFF00FFFF240 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF241 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF242 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF243 FF00F6F6F6FF8EAAC2FF9BC1F3FFA8CAF6FF649CE8FF5492E5FF5094E6FF69AA244 EDFFC8E0F8FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF245 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF246 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF247 FF00FFFFFF00ECF5FDFF81B0EEFFC8E0F8FFBDD8FAFF81B0EEFF5492E5FF5492248 E5FF5094E6FF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF249 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF250 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF251 FF00FFFFFF00FFFFFF00649CE8FFBDD8FAFFD6E8FEFFC8E0F8FF9BC1F3FF5094252 E6FF209BEDFF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF253 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF254 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF255 FF00FFFFFF00FFFFFF007CB3EEFF9BC1F3FFD6E8FEFFD6E8FEFFC8E0F8FF71C9256 FAFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFF257 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF258 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF259 FF00FFFFFF00FFFFFF00A3CEF5FF77A9ECFFC8E0F8FFD6E8FEFFBFE4FEFF5BD5260 FFFF45C5FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFF261 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF262 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF263 FF00FFFFFF00FFFFFF00E0EFFCFF5492E5FFBDD8FAFFC8E0F8FFA9E6FFFF79E1264 FFFF5BD5FFFF45C5FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFF265 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF266 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF267 FF00FFFFFF00FFFFFF00FFFFFF00209BEDFF6DBCF4FF98DBFCFF9CE4FFFF94E4268 FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFF269 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF270 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF271 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7FBFF9CE4272 FFFF94E4FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1F7FF149CF1FF0489EBFF007D273 E7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF274 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF275 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7276 FBFF9CE4FFFF94E4FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1F7FF149CF1FF0489277 EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF278 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF279 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9280 F4FF87D7FBFF9CE4FFFF94E4FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1F7FF149C281 F1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF282 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF283 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209B284 EDFF55B9F4FF87D7FBFF9CE4FFFF94E4FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1285 F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF286 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF287 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF288 FF00209BEDFF55B9F4FF87D7FBFF9CE4FFFF94E4FFFF79E1FFFF5BD5FFFF45C5289 FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFF290 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF291 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF292 FF00FFFFFF00209BEDFF55B9F4FF87D7FBFF9CE4FFFF94E4FFFF79E1FFFF5BD5293 FFFF45C5FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFF294 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF295 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF296 FF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7FBFF9CE4FFFF94E4FFFF79E1297 FFFF5BD5FFFF45C5FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFF298 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF299 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF300 FF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7FBFF9CE4FFFF94E4301 FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFF302 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF303 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF304 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7FBFF9CE4305 FFFF94E4FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1F7FF149CF1FF611CDDFF5400306 D5FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF307 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF308 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7309 FBFF9CE4FFFF94E4FFFF79E1FFFF5BD5FFFF45C5FCFF8163F0FF7547E9FF611C310 DDFF5400D5FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF311 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF312 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9313 F4FF87D7FBFF9CE4FFFF94E4FFFF79E1FFFF9185F9FF8A75F5FF8163F0FF7547314 E9FF611CDDFF5400D5FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF315 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF316 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209B317 EDFF55B9F4FF87D7FBFF9CE4FFFF9998FFFF9691FDFF9185F9FF8A75F5FF8163318 F0FF7547E9FF611CDDFFD4BFF4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF319 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF320 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF321 FF00209BEDFF55B9F4FF948CFBFF9998FFFF9998FFFF9691FDFF9185F9FF8A75322 F5FF8163F0FF7547E9FFD7C6F6FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF323 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF324 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF325 FF00FFFFFF007950EBFF8A75F5FF948CFBFF9998FFFF9998FFFF9691FDFF9185326 F9FF8A75F5FF8163F0FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF327 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF328 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF329 FF00FFFFFF00FFFFFF007950EBFF8A75F5FF948CFBFF9998FFFF9998FFFF9691330 FDFF9185F9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF331 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF332 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF333 FF00FFFFFF00FFFFFF00FFFFFF007950EBFF8A75F5FF948CFBFF9998FFFF9998334 FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF335 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF336 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF337 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007950EBFF8A75F5FF948CFBFFFFFF338 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF339 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF340 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF341 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF342 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF343 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF344 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF345 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF346 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00347 }348 85 end 349 86 object MenuItem3: TMenuItem 350 87 Action = ARemove 351 Bitmap.Data = {352 36100000424D3610000000000000360000002800000020000000200000000100353 2000000000000010000064000000640000000000000000000000FFFFFF00FFFF354 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF355 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF356 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF357 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF358 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF359 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF360 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF361 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF362 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF363 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF364 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF365 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF366 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF367 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF368 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF369 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF370 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF371 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF372 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF373 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF374 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF375 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF376 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF377 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF378 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF379 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF380 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF381 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF382 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF383 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF384 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF385 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF386 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF387 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF388 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF389 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF390 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF391 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF392 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF393 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF394 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF395 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF396 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF397 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00463C398 8BFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C399 6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C400 6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C401 6AFF342C6AFF342C6AFF342C6AFF342C6AFF463C8BFFFFFFFF00FFFFFF003C34402 77FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4F403 B7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4F404 B7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4F405 B7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF3C3477FFFFFFFF00FFFFFF00433B406 84FF5D51C1FF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716407 ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716408 ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716409 ABFF2716ABFF2716ABFF2716ABFF5D51C1FF433B84FFFFFFFF00FFFFFF004B42410 92FF6052CCFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18411 BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18412 BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18413 BAFF2A18BAFF2A18BAFF2A18BAFF6052CCFF4B4292FFFFFFFF00FFFFFF00544A414 A0FF6455D6FF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623415 CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623416 CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623417 CBFF3623CBFF3623CBFF3623CBFF6455D6FF544AA0FFFFFFFF00FFFFFF005D51418 AFFF6C5DE3FF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503E419 DEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503E420 DEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503E421 DEFF503EDEFF503EDEFF4937DCFF6C5DE3FF5D51AFFFFFFFFF00FFFFFF006357422 B8FF7364EAFF6251E7FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757423 E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757424 E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757425 E8FF6757E8FF6757E8FF5C4AE6FF7364EAFF6357B8FFFFFFFF00FFFFFF006357426 B8FF7869EAFF7364EAFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6F427 EBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6F428 EBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6F429 EBFF7D6FEBFF7869EAFF6757E8FF7869EAFF6357B8FFFFFFFF00FFFFFF006357430 B8FF7D6FEBFF8174ECFF8D81EEFF9387EFFF9387EFFF9387EFFF9387EFFF9387431 EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387432 EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387433 EFFF9387EFFF8D81EEFF7869EAFF7869EAFF6357B8FFFFFFFF00FFFFFF006E62434 C3FF7A6CE3FF897EE6FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186435 E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186436 E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186437 E7FF9186E7FF897EE6FF867AE6FF7A6CE3FF6E62C3FFFFFFFF00FFFFFF007468438 CEFF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62439 C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62440 C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62441 C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF7468CEFFFFFFFF00FFFFFF00FFFF442 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF443 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF444 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF445 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF446 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF447 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF448 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF449 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF450 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF451 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF452 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF453 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF454 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF455 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF456 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF457 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF458 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF459 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF460 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF461 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF462 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF463 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF464 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF465 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF466 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF467 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF468 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF469 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF470 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF471 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF472 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF473 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF474 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF475 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF476 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF477 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF478 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF479 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF480 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF481 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00482 }483 88 end 484 89 object MenuItem4: TMenuItem 485 90 Action = AOpen 486 91 Default = True 487 Bitmap.Data = {488 36100000424D3610000000000000360000002800000020000000200000000100489 2000000000000010000064000000640000000000000000000000000000000000490 0000000000000000000000000000000000000000000000000000000000000000491 000000000000000000040000000D0000000F0000000600000000000000000000492 0000000000000000000000000000000000000000000000000000000000000000493 0000000000000000000000000000000000000000000000000000000000000000494 0000000000000000000000000000000000000000000000000000000000000000495 0000000000000000000D0000002B000000340000002200000016000000110000496 0006000000000000000000000000000000000000000000000000000000000000497 0000000000000000000000000000000000000000000000000000000000000000498 00000000000000000001000000050000000B0000001100000014000000160000499 00160000001600000025ABA8A7C6868481FF0000004800000043000000370000500 0022000000160000001600000016000000160000001600000016000000110000501 0006000000000000000000000000000000000000000000000000000000000000502 00030000000B00000016000000200000002D000000370000003E000000410000503 004300000043000000488F8C8BFFD7D5D4FF878682FF84837FFF7F7D7DFF0000504 0048000000430000004300000043000000430000004300000043000000370000505 001C000000060000000000000000000000000000000000000000000000040000506 00130000002B0000003E4745406D737068A78B877DDF8E8980EA948F85FF938E507 84FF928E83FF928D83FF938E83FF8F8C8AFF8A8785FFB7B6B4FFA6A5A6FF777C508 84FFBB8440FFB78344FFB68345FFB68345FFB68345FFB68345FFB88445FF0000509 003D0000002200000011000000060000000000000000000000000000000D0000510 002E78736BA8979187FFA19B91FFB1AAA1FFC5BCB4FFCBC3BAFFE3D8D0FFE5DC511 D4FFEADFD7FFEEE3DCFFF7EAE3FF8E8D8BFFD6D4D4FFC1C2C4FFB0B5BBFFB97F512 39FFEFB35DFFECB25FFFECB25FFFECB25FFFECB25FFFECB25FFFEEB460FFB682513 44FF00000048000000370000001C000000060000000000000000000000158884514 7BC1A09B91FFC8C1B7FFD2CAC1FFD3CBC2FFD7CEC5FFD9D0C8FFDDD3CBFFDFD6515 CEFFE3D9D1FFE7DDD6FFF0E4DDFF8C8C8AFFE3E4E6FFD0D4DDFFB57A34FFEFB5516 62FFEBB363FFEAB263FFEAB263FFEAB263FFEAB263FFEAB263FFECB465FFF1B8517 68FFB58244FFB88445FF00000037000000110000000000000000000000169994518 89FFC8C1B7FFCBC4BAFFCEC6BDFFD0C8BFFFD4CBC2FFD7CEC6FFDBD1C9FFDED5519 CDFFE2D8D0FFE5DBD4FFECE1DAFFF3E8E3FF8C9196FFB47A33FFF2B766FFEEB6520 68FFECB468FFECB468FFECB468FFECB468FFECB468FFEEB668FFF1BB72FFB07D521 40FFECB15DFFEEB15BFFB88546FF000000110000000000000000000000169993522 89FFCAC2B9FFCAC3B9FFCDC5BCFFD0C8BFFFD4CBC2FFD7CEC6FFDBD1C9FFDED5523 CDFFE2D8D0FFE5DBD4FFEAE0D9FFEFE7E5FFB37830FFF6BC6EFFF0B96FFFEEB7524 6EFFEEB76EFFEEB76EFFEEB76EFFEEB76EFFF0B86EFFF5C380FFAE7B3EFFF2B9525 6EFFECB360FFD09645E4B98545FF000000060000000000000000000000169A94526 8AFFC9C1B8FFC9C2B8FFCCC4BBFFCEC6BDFFD2C9C0FFD5CCC4FFD9CFC7FFDCD3527 CBFFE1D6CEFFE4D9D2FFE9DED9FFEEE7E6FFB17832FFF6C27BFFF1BC73FFF0BB528 73FFF0BB73FFF0BB73FFF0BB73FFF2BC73FFF7CB8EFFAD7A3BFFF4BD72FFEFB6529 67FFCF994DE1BB8441FF00000022000000060000000000000000000000169A95530 89FFC8C0B7FFC7C0B6FFD4CDC4FFE4DDD6FFF2EDE5FFF6F1EAFFFFFCF5FFFFFB531 F4FFFFFBF4FFFEFAF3FFFEFBF5FFFFFFFFFFB07731FFFAC888FFF4BE79FFF3BE532 79FFF3BE79FFF3BE79FFF5BF79FFFBD19CFFAD7939FFF7C078FFF3BA6DFFD29E533 57DFBB813AFF6D7580FF0000003D0000001C0000000600000000000000149A95534 8AFFD3CCC3FFF6F1EAFFEFE9E3FFDAD5CDFFCAC2BAFFBCB3ABFFB4ABA1FFB4AA535 A1FFB6ACA2FFB8AEA6FFBBB1A8FFBEB6B4FFB17832FFFCCF96FFF6C17DFFF5C1536 7EFFF5C17DFFF7C27DFFFDD8A9FFAC7737FFF9C37EFFF4BD72FFDCAF74FFB97F537 37FFABB0B6FF9E9D9EFF757678FF0000003D0000001C00000006000000109B95538 8BFFF2ECE4FFB8AFA6FFA59C91FFABA298FFBBB2A9FFC5BAB1FFD1C8BFFFD5CB539 C2FFE5DBD3FFE8DED7FFEDE3DDFFF0EAE8FFB07730FFFED6A2FFF8C481FFF7C4540 82FFF9C582FFFFDFB5FFAC7635FFFBC885FFF7C079FFEFC48DFFBA7F37FF7F86541 8FFFC3C3C4FFAFAEACFFA09D9BFF767676FF0000003700000011000000108D87542 7DB5B5ACA4FFB5ADA2FFC9C1B8FFD3CBC2FFD6CDC4FFD9D0C8FFDDD3CBFFDFD6543 CEFFE3D9D1FFE6DCD5FFEBE0DAFFEFE7E6FFB0762EFFFFDCAEFFFCC887FFFCC9544 88FFFFE5C0FFAB7533FFFECB8BFFFBC580FFEBC390FFB77C35FF888883AD0000545 0015858586FFC4C2C0FFB0AEABFFA29E9CFF787878FF00000011000000148B86546 7CB8B7AFA4FFCBC5BAFFCEC6BDFFD1C9C0FFD4CBC2FFD7CEC6FFDBD1C9FFDED5547 CDFFE2D8D0FFE5DBD4FFEADFD9FFEDE5E3FFAF7329FFFFE3BAFFFFCD8FFFFFE9548 CBFFAA7431FFFFCF90FFFDC886FFF2CC9DFFB87C34FFBEBBB9FF8B877FB60000549 001400000006858686FFC6C3C1FFB4B2B0FF777778FF0000000600000016A099550 8FFFCAC2B9FFCAC3B9FFCDC5BCFFD0C8BFFFD4CBC2FFD7CEC6FFDBD1C9FFDED5551 CDFFE2D8D0FFE5DBD4FFE9DED8FFECE2DDFFE9E3E3FFAD7229FFFFECC8FFAB74552 31FFFFD296FFFFCC8CFFF6D4A8FFB87C33FF686F78FFD3CCC4FFA39C92FF0000553 00160000000000000006888888FF8A8A8AFF000000060000000000000016A09A554 8EFFC9C1B8FFC9C2B8FFCCC4BBFFCEC6BDFFD2C9C0FFD5CCC4FFD9CFC7FFDCD3555 CBFFE1D6CEFFE4D9D2FFE9DDD6FFEADFD8FFE6DEDAFFE5E1E0FFAF762EFFFFD6556 99FFFFD093FFFBDAB3FFB77A31FFAAAEB3FF9C9B9CFF6E7073FFA8A094FF0000557 002200000006000000000000000000000000000000000000000000000016A09A558 8FFFC8C0B7FFC7C0B6FFD4CDC4FFE4DDD6FFF2EDE5FFF6F1EAFFFFFCF5FFFFFB559 F4FFFFFBF4FFFEFAF3FFFDFAF3FFFDFAF3FFFFFBF5FFFFFFFFFFB1752BFFFFEE560 CCFFFFEAC7FFB4782EFF737B83FFC1C1C2FFAFADABFF9F9B9AFF737375FF0000561 003700000011000000000000000000000000000000000000000000000014A09A562 8EFFD3CBC3FFF6F1EAFFEFE9E3FFDAD5CDFFCAC2BAFFBCB3ABFFB4ABA1FFB4AA563 A1FFB6ACA3FFB8AEA6FFBAB0A6FFBBB0A8FFB9AEA6FFB8AEA8FFB8B2AFFFB377564 2CFFB3772CFFCECCC9FFE4DFD9FF78797BFFC2C1BFFFAFADABFFA19E9CFF7777565 78FF00000011000000000000000000000000000000000000000000000010A29A566 8FFFF1EBE4FFB7AFA6FFA59C91FFABA298FFBBB2A9FFC5BAB1FFD1C8BFFFD5CB567 C2FFE1D7CFFFE8DED7FFECE1DAFFEEE2DBFFE9DFD8FFE6DDD5FFD9D1CBFFD2CD568 C7FFCFC8C4FFBFB7B0FFB8AEA5FFB3A99FFF787A7BFFC4C2C0FFB4B2AFFF7777569 77FF00000006000000000000000000000000000000000000000000000010928C570 82B5B4ACA3FFB5ADA2FFC9C1B8FFD3CBC2FFD6CDC4FFD9D0C8FFDDD3CBFFDFD6571 CFFFE3D9D1FFE6DCD5FFEADFD8FFECE0D9FFE7DDD6FFE4DAD2FFE0D7D0FFDDD4572 CCFFDAD1CAFFD7CEC5FFD3CCC2FFD3CBC1FFC6BDB3FF7A7B7DFF7F8081FF0000573 001200000000000000000000000000000000000000000000000000000014918B574 80B8B6AEA4FFCBC4BAFFCEC6BDFFD1C9C0FFD4CBC2FFD7CEC6FFDBD1C9FFDED5575 CDFFE2D8D0FFE5DBD4FFE9DED7FFEBDFD8FFE6DCD5FFE3D9D1FFDFD6CEFFDCD2576 CAFFD8CFC7FFD5CCC3FFD1C9C0FFCFC7BEFFCDC5BCFFBFB7ADFF928C80B40000577 001400000000000000000000000000000000000000000000000000000016A59E578 93FFC9C1B9FFCAC3B9FFCDC5BCFFD0C8BFFFD4CBC2FFD7CEC6FFDBD1C9FFDED5579 CDFFE2D8D0FFE5DBD4FFE9DED7FFEADFD8FFE6DCD5FFE3D9D1FFDFD6CEFFDCD2580 CAFFD8CFC7FFD5CCC3FFD1C9C0FFCEC6BDFFCBC3BAFFCBC3BAFFA69F93FF0000581 001600000000000000000000000000000000000000000000000000000016A69F582 94FFC8C0B8FFC9C2B8FFCCC3BAFFCEC6BDFFD2C8BFFFD5CBC3FFD9CEC6FFDCD2583 CAFFE0D6CEFFE3D9D2FFE8DDD6FFEADED7FFE5DAD3FFE1D7CFFFDDD4CCFFDACF584 C7FFD6CCC4FFD3C9C0FFCFC7BEFFCDC4BBFFCAC2B9FFCAC1B9FFA69F94FF0000585 001600000000000000000000000000000000000000000000000000000016A7A0586 93FFC7BEB6FFC6BFB4FFD2CBC2FFE2DBD3FFF0EAE2FFF3EEE7FFFDFAF3FFFDF9587 F2FFFDF8F2FFFCF8F1FFFCF8F1FFFCF8F1FFFCF8F1FFFDF8F2FFFDF9F2FFFDF9588 F3FFF3EEE7FFEFEAE2FFE2DCD3FFD3CCC3FFC7BFB6FFC8BFB7FFA7A093FF0000589 001600000000000000000000000000000000000000000000000000000016A69F590 93FFCFC8BFFFF8F4ECFFFFFAF4FFF8F2EBFFE9E2DAFFE3DAD3FFD7CFC6FFD4CB591 C2FFD4CBC2FFD4CBC2FFD4CBC2FFD4CBC2FFD4CBC2FFD4CBC2FFD4CBC2FFD7CF592 C6FFE3DAD3FFE9E2DAFFF8F2EBFFFFFAF4FFF4F0E8FFCFC8BFFFA69F93FF0000593 001600000000000000000000000000000000000000000000000000000016A69E594 93FFFFFCF5FFEAE3DBFFD3C9C0FFCDC3B9FFCEC5BAFFCEC5BBFFCFC6BBFFCFC6595 BCFFCFC6BCFFCFC6BCFFCFC6BCFFCFC6BCFFCFC6BCFFCFC6BCFFCFC6BCFFCFC6596 BBFFCEC5BBFFCEC5BAFFCDC3B9FFD3C9C0FFEAE3DBFFFFFCF5FFABA499FF0000597 001600000000000000000000000000000000000000000000000000000015A69F598 93FFECE5DDFFD5CCC2FFD5CCC2FFD6CDC3FFD7CEC3FFD7CEC4FFD7CEC4FFD7CE599 C4FFD7CEC4FFD7CEC4FFD7CEC4FFD7CEC4FFD7CEC4FFD7CEC4FFD7CEC4FFD7CE600 C4FFD7CEC4FFD7CEC3FFD6CDC3FFD5CCC2FFD5CCC2FFECE5DDFFA69F93FF0000601 00150000000000000000000000000000000000000000000000000000000DA9A2602 96FFE0D6CDFFE0D6CCFFDED5CBFFDDD4CAFFDDD4CAFFDDD4CAFFDDD4CAFFDDD4603 CAFFDDD4CAFFDDD4CAFFDDD4CAFFDDD4CAFFDDD4CAFFDDD4CAFFDDD4CAFFDDD4604 CAFFDDD4CAFFDDD4CAFFDDD4CAFFDED5CBFFDFD6CCFFE0D6CDFFA9A296FF0000605 000D00000000000000000000000000000000000000000000000000000004A69E606 93B2B5ADA1FFDED5CBFFE9E1D7FFE7DFD5FFE6DED4FFE5DDD3FFE5DDD3FFE4DC607 D2FFE4DCD2FFE4DCD2FFE4DCD2FFE4DCD2FFE4DCD2FFE4DCD2FFE4DCD2FFE5DD608 D3FFE5DDD3FFE6DED4FFE7DFD5FFE9E1D7FFE2DAD0FFB5ADA1FFA69E93B20000609 0004000000000000000000000000000000000000000000000000000000000000610 0003A79F9489AAA396FFB7AEA3FFC8BFB4FFD9D1C6FFDDD5CAFFF1E9DFFFF0E8611 DEFFF0E8DEFFF0E8DEFFF0E8DEFFF0E8DEFFF0E8DEFFF0E8DEFFF0E8DEFFF1E9612 DFFFDDD5CAFFD9D1C6FFC8BFB4FFB7AEA3FFAAA296FFA79F9489000000030000613 0000000000000000000000000000000000000000000000000000000000000000614 00000000000000000001A0998F37A69F9385A9A196D2A9A195E2AAA296FFAAA2615 96FFAAA296FFAAA296FFAAA296FFAAA296FFAAA296FFAAA296FFAAA296FFAAA2616 96FFA9A195E2A9A196D2A69F9385A0998F370000000100000000000000000000617 0000000000000000000000000000000000000000000000000000618 }619 92 end 620 93 end -
trunk/Forms/UFormDatabases.pas
r15 r20 40 40 Selected: Boolean); 41 41 private 42 { private declarations }43 42 public 44 Selected Database: TDatabase;43 SelectedProfile: TDbConnectProfile; 45 44 procedure ReloadList; 46 45 procedure UpdateInterface; … … 67 66 begin 68 67 if Assigned(ListView1.Selected) then begin 69 Selected Database := TDatabase(ListView1.Selected.Data);68 SelectedProfile := TDbConnectProfile(ListView1.Selected.Data); 70 69 ModalResult := mrOk; 71 70 end; … … 76 75 if Assigned(ListView1.Selected) then begin 77 76 if MessageDlg('Remove database connection', 'Do you want to really remove database connection ' + 78 TD atabase(ListView1.Selected.Data).Name, mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin79 Core.D atabases.Remove(ListView1.Selected.Data);77 TDbConnectProfile(ListView1.Selected.Data).Name, mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin 78 Core.DbManager.ConnectProfiles.Remove(ListView1.Selected.Data); 80 79 ReloadList; 81 80 end; … … 85 84 procedure TFormDatabases.AAddExecute(Sender: TObject); 86 85 var 87 New Database: TDatabase;86 NewConnectProfile: TDbConnectProfile; 88 87 begin 89 New Database := TDatabase.Create;90 New Database.Name := 'New database';91 FormConnect.Load(New Database);88 NewConnectProfile := TDbConnectProfile.Create; 89 NewConnectProfile.Name := 'New database'; 90 FormConnect.Load(NewConnectProfile); 92 91 if FormConnect.ShowModal = mrOk then begin 93 FormConnect.Save(New Database);94 Core.D atabases.Add(NewDatabase);92 FormConnect.Save(NewConnectProfile); 93 Core.DbManager.ConnectProfiles.Add(NewConnectProfile); 95 94 ReloadList; 96 end else New Database.Free;95 end else NewConnectProfile.Free; 97 96 end; 98 97 … … 100 99 begin 101 100 if Assigned(ListView1.Selected) then begin 102 FormConnect.Load(TD atabase(ListView1.Selected.Data));101 FormConnect.Load(TDbConnectProfile(ListView1.Selected.Data)); 103 102 if FormConnect.ShowModal = mrOk then begin 104 FormConnect.Save(TD atabase(ListView1.Selected.Data));103 FormConnect.Save(TDbConnectProfile(ListView1.Selected.Data)); 105 104 ReloadList; 106 105 end; … … 119 118 procedure TFormDatabases.ListView1Data(Sender: TObject; Item: TListItem); 120 119 begin 121 if (Item.Index >= 0) and (Item.Index < Core.D atabases.Count) then122 with TD atabase(Core.Databases[Item.Index]) do begin120 if (Item.Index >= 0) and (Item.Index < Core.DbManager.ConnectProfiles.Count) then 121 with TDbConnectProfile(Core.DbManager.ConnectProfiles[Item.Index]) do begin 123 122 Item.Caption := Name; 124 Item.SubItems.Add( Engine.Name);125 Item.SubItems.Add( ConnectionString);126 Item.Data := Core.D atabases[Item.Index];123 Item.SubItems.Add(ClientType.Name); 124 Item.SubItems.Add(Params.ConnectionString); 125 Item.Data := Core.DbManager.ConnectProfiles[Item.Index]; 127 126 end 128 127 end; … … 136 135 procedure TFormDatabases.ReloadList; 137 136 begin 138 ListView1.Items.Count := Core.D atabases.Count;137 ListView1.Items.Count := Core.DbManager.ConnectProfiles.Count; 139 138 ListView1.Repaint; 140 139 UpdateInterface; -
trunk/Forms/UFormField.lfm
r15 r20 7 7 ClientHeight = 444 8 8 ClientWidth = 974 9 DesignTimePPI = 120 9 10 OnCreate = FormCreate 10 11 OnShow = FormShow 11 12 Position = poMainFormCenter 12 LCLVersion = '1.8.0. 4'13 LCLVersion = '1.8.0.6' 13 14 object EditName: TEdit 14 15 Left = 168 15 Height = 3616 Height = 28 16 17 Top = 11 17 18 Width = 264 … … 20 21 object Label1: TLabel 21 22 Left = 17 22 Height = 2 623 Height = 20 23 24 Top = 21 24 Width = 5625 Width = 43 25 26 Caption = 'Name:' 26 27 ParentColor = False … … 38 39 object EditTextBefore: TEdit 39 40 Left = 167 40 Height = 3641 Height = 28 41 42 Top = 88 42 43 Width = 265 … … 45 46 object Label2: TLabel 46 47 Left = 16 47 Height = 2 648 Height = 20 48 49 Top = 98 49 Width = 10150 Width = 79 50 51 Caption = 'Text before:' 51 52 ParentColor = False … … 53 54 object EditTextAfter: TEdit 54 55 Left = 167 55 Height = 3656 Height = 28 56 57 Top = 136 57 58 Width = 265 … … 60 61 object Label3: TLabel 61 62 Left = 16 62 Height = 2 663 Height = 20 63 64 Top = 144 64 Width = 8665 Width = 66 65 66 Caption = 'Text after:' 66 67 ParentColor = False … … 68 69 object Label4: TLabel 69 70 Left = 17 70 Height = 2 671 Height = 20 71 72 Top = 56 72 Width = 8773 Width = 68 73 74 Caption = 'Data type:' 74 75 ParentColor = False … … 76 77 object ComboBoxType: TComboBox 77 78 Left = 167 78 Height = 4079 Height = 28 79 80 Top = 48 80 81 Width = 265 81 ItemHeight = 082 ItemHeight = 20 82 83 OnChange = ComboBoxTypeChange 83 84 Style = csDropDownList -
trunk/Forms/UFormField.pas
r15 r20 88 88 else SelectedItem := nil; 89 89 90 with Field.Table.D atabase.Engine.DataTypes do begin90 with Field.Table.DbClient.ConnectProfile.ClientType.DataTypes do begin 91 91 while ComboBoxType.Items.Count > Count do 92 92 ComboBoxType.Items.Delete(ComboBoxType.Items.Count - 1); -
trunk/Forms/UFormFields.pas
r15 r20 86 86 NewField.Table := Fields.Table; 87 87 NewField.Name := SNewField; 88 if Fields.Table.D atabase.Engine.DataTypes.Count > 0 then89 NewField.DataType := TDataType(Fields.Table.D atabase.Engine.DataTypes[0]);88 if Fields.Table.DbClient.ConnectProfile.ClientType.DataTypes.Count > 0 then 89 NewField.DataType := TDataType(Fields.Table.DbClient.ConnectProfile.ClientType.DataTypes[0]); 90 90 FormField.Load(NewField); 91 91 if FormField.ShowModal = mrOk then begin -
trunk/Forms/UFormMain.pas
r19 r20 77 77 begin 78 78 NewCaption := Application.Title; 79 if Assigned(Core.Database) then NewCaption := Core.Database.Name + ' - ' + NewCaption; 79 if Assigned(Core.DbClient) then 80 NewCaption := Core.DbClient.ConnectProfile.Name + ' - ' + NewCaption; 80 81 FormMain.Caption := NewCaption; 81 82 end; -
trunk/Forms/UFormTables.lfm
r11 r20 1 1 object FormTables: TFormTables 2 Left = 6592 Left = 731 3 3 Height = 660 4 Top = 3424 Top = 117 5 5 Width = 978 6 6 Caption = 'Tables' 7 7 ClientHeight = 660 8 8 ClientWidth = 978 9 DesignTimePPI = 120 9 10 OnActivate = FormActivate 10 11 OnClose = FormClose 11 12 OnShow = FormShow 12 LCLVersion = '1. 5'13 LCLVersion = '1.8.0.6' 13 14 object ListView1: TListView 14 15 Left = 4 … … 112 113 Action = AShowRecords 113 114 Default = True 114 Bitmap.Data = {115 36100000424D3610000000000000360000002800000020000000200000000100116 2000000000000010000064000000640000000000000000000000FFFFFF00FFFF117 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FDFDFDFFFDFDFDFFFDFD118 FDFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FDFD119 FDFFFDFDFDFFFDFDFDFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF120 FF00FFFFFF00FDFDFDFFFDFDFDFFFDFDFDFFFFFFFF00FFFFFF00FFFFFF00FFFF121 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFFAFAFAFFFAFA122 FAFFFAFAFAFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFE123 FEFFFAFAFAFFFAFAFAFFFAFAFAFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFF124 FF00FFFFFF00FEFEFEFFFAFAFAFFFAFAFAFFFAFAFAFFFFFFFF00FFFFFF00FDFD125 FDFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFFAFA126 FAFFF5F5F5FFFAFAFAFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF127 FF00FEFEFEFFFAFAFAFFF5F5F5FFFAFAFAFFFEFEFEFFFFFFFF00FFFFFF00FFFF128 FF00FFFFFF00FFFFFF00FEFEFEFFFAFAFAFFFAFAFAFFFDFDFDFFFFFFFF00FDFD129 FDFFFAFAFAFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFE130 FEFFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFF131 FF00FFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFFFFFFF00FFFF132 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFFAFAFAFFFDFDFDFFFFFFFF00FDFD133 FDFFFAFAFAFFE2D4C6FFE2CBB4FFE2CBB4FFE2CBB4FFE2CBB4FFE2CBB4FFE2CB134 B4FFE2CBB4FFD9C4AEFFD9C4AEFFD9C4AEFFE2CBB4FFE2CBB4FFE2CBB4FFE2CB135 B4FFE2CBB4FFE2CBB4FFE2CBB4FFD9C4AEFFD9C4AEFFD9C4AEFFE2CBB4FFE2CB136 B4FFE2CBB4FFE2CBB4FFEBDCCDFFFFFFFF00FEFEFEFFFDFDFDFFFFFFFF00FFFF137 FF00FAFAFAFFC0966CFFDECBBBFFE7D3C1FFE7D3C1FFE7D3C1FFE7D3C1FFE7D3138 C1FFE7D3C1FFCCA37DFFD4BBA2FFDECBBBFFDECBBBFFE7D3C1FFE7D3C1FFE7D3139 C1FFE7D3C1FFD8B99CFFCCA37DFFE7D3C1FFDECBBBFFDECBBBFFDECBBBFFE7D3140 C1FFE7D3C1FFE7D3C1FFC89E76FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF141 FF00FEFEFEFFC19973FFF4F4F4FFF5F5F5FFFEFEFEFFFFFFFF00FFFFFF00FFFF142 FF00FFFFFF00D8B99CFFF0E5DAFFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFFFFF143 FF00FFFFFF00EBDCCDFFD8B99CFFFFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFF5F5144 F5FFFEFEFEFFFFFFFF00C89E76FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF145 FF00FFFFFF00C89E76FFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFFFFFFF00FFFF146 FF00FFFFFF00D8B99CFFF0E5DAFFFEFEFEFFF5F5F5FFF4F4F4FFF5F5F5FFFEFE147 FEFFFFFFFF00EBDCCDFFD8B99CFFFFFFFF00FFFFFF00FEFEFEFFF5F5F5FFF4F4148 F4FFF5F5F5FFFEFEFEFFC89E76FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF149 FF00FFFFFF00C6986EFFC89E76FFC19973FFC19973FFC19973FFC89E76FFC89E150 76FFC89E76FFBD8856FFC4966AFFC89E76FFC89E76FFC19973FFC19973FFC199151 73FFC89E76FFC29367FFBD8856FFC89E76FFC89E76FFC89E76FFC89E76FFC199152 73FFC19973FFC19973FFC6986EFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF153 FF00FFFFFF00C89E76FFFFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFF5F5F5FFFEFE154 FEFFFFFFFF00D8B99CFFF0E5DAFFFFFFFF00FFFFFF00FEFEFEFFF5F5F5FFF4F4155 F4FFF5F5F5FFEBDCCDFFD8B99CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFE156 FEFFF5F5F5FFF4F4F4FFC19973FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFF157 FF00FFFFFF00C89E76FFFFFFFF00FFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFF5F5158 F5FFFEFEFEFFD8B99CFFF0E5DAFFFFFFFF00FFFFFF00FFFFFF00FEFEFEFFF5F5159 F5FFF4F4F4FFE2D4C6FFD8B99CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF160 FF00FEFEFEFFF5F5F5FFC19973FFFAFAFAFFFEFEFEFFFFFFFF00FFFFFF00FFFF161 FF00FFFFFF00C89E76FFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFF1EDEAFFF1ED162 EAFFF1EDEAFFD4B494FFEBDCCDFFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFFAF6163 F3FFF1EDEAFFDECBBBFFD0B297FFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFFAF6164 F3FFFAF6F3FFFAF6F3FFC19973FFF5F5F5FFFAFAFAFFFFFFFF00FFFFFF00FDFD165 FDFFFEFEFEFFC0966CFFCDA883FFCDA883FFCDA883FFCDA883FFCDA883FFC5A2166 80FFC5A280FFB88A5CFFC89E76FFCDA883FFCDA883FFCDA883FFCDA883FFCDA8167 83FFCDA883FFC0966CFFB88A5CFFC5A280FFCDA883FFCDA883FFCDA883FFCDA8168 83FFCDA883FFCDA883FFC0966CFFFAFAFAFFFAFAFAFFFDFDFDFFFFFFFF00FDFD169 FDFFFAFAFAFFC89E76FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFE170 FEFFF5F5F5FFD0B297FFE6DBD1FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFF171 FF00FFFFFF00EBDCCDFFD0B297FFF4F4F4FFF5F5F5FFFEFEFEFFFFFFFF00FFFF172 FF00FFFFFF00FFFFFF00C89E76FFFEFEFEFFFAFAFAFFFDFDFDFFFFFFFF00FDFD173 FDFFFAFAFAFFC19973FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF174 FF00FEFEFEFFD0B297FFE6DBD1FFF5F5F5FFFEFEFEFFFFFFFF00FFFFFF00FFFF175 FF00FFFFFF00EBDCCDFFD8B99CFFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFFFFF176 FF00FFFFFF00FFFFFF00C89E76FFFFFFFF00FEFEFEFFFDFDFDFFFFFFFF00FFFF177 FF00FAFAFAFFC19973FFD9C4AEFFE2CBB4FFE2CBB4FFE2CBB4FFE2CBB4FFE2CB178 B4FFE2CBB4FFC89E76FFD0B297FFD9C4AEFFD9C4AEFFE2CBB4FFE2CBB4FFE2CB179 B4FFE2CBB4FFD4B494FFC89E76FFE2CBB4FFD9C4AEFFD9C4AEFFD9C4AEFFE2CB180 B4FFE2CBB4FFE2CBB4FFC89E76FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF181 FF00FEFEFEFFC0966CFFDECBBBFFDECBBBFFE7D3C1FFE7D3C1FFE7D3C1FFE7D3182 C1FFE7D3C1FFCCA37DFFD4BBA2FFDECBBBFFDECBBBFFDECBBBFFE7D3C1FFE7D3183 C1FFE7D3C1FFD8B99CFFCCA37DFFE7D3C1FFE7D3C1FFDECBBBFFDECBBBFFDECB184 BBFFE7D3C1FFE7D3C1FFC89E76FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF185 FF00FFFFFF00C89E76FFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFFFFFFF00FFFF186 FF00FFFFFF00D8B99CFFF0E5DAFFFEFEFEFFF5F5F5FFF4F4F4FFF5F5F5FFFEFE187 FEFFFFFFFF00EBDCCDFFD8B99CFFFFFFFF00FFFFFF00FEFEFEFFF5F5F5FFF4F4188 F4FFF5F5F5FFFEFEFEFFC89E76FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF189 FF00FFFFFF00C89E76FFFEFEFEFFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFFFFF190 FF00FFFFFF00D8B99CFFF0E5DAFFFFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFF5F5191 F5FFFEFEFEFFEBDCCDFFD8B99CFFFFFFFF00FFFFFF00FFFFFF00FEFEFEFFF5F5192 F5FFF4F4F4FFF5F5F5FFC89E76FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF193 FF00FFFFFF00C6986EFFC89E76FFC89E76FFC19973FFC19973FFC19973FFC89E194 76FFC89E76FFBD8856FFC4966AFFC89E76FFC89E76FFC89E76FFC19973FFC199195 73FFC19973FFC29367FFBD8856FFC89E76FFC89E76FFC89E76FFC89E76FFC89E196 76FFC19973FFC19973FFC4966AFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFF197 FF00FFFFFF00C89E76FFFFFFFF00FFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFF5F5198 F5FFFEFEFEFFD8B99CFFF0E5DAFFFFFFFF00FFFFFF00FFFFFF00FEFEFEFFF5F5199 F5FFF4F4F4FFE2D4C6FFD8B99CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF200 FF00FEFEFEFFF5F5F5FFC19973FFFAFAFAFFFEFEFEFFFFFFFF00FFFFFF00FFFF201 FF00FFFFFF00C89E76FFFFFFFF00FFFFFF00FFFFFF00FEFEFEFFF5F5F5FFF4F4202 F4FFF5F5F5FFD8B99CFFF0E5DAFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFE203 FEFFF5F5F5FFE2D4C6FFD0B297FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFF204 FF00FFFFFF00FEFEFEFFC19973FFF5F5F5FFFAFAFAFFFFFFFF00FFFFFF00FDFD205 FDFFFEFEFEFFC89E76FFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFF1ED206 EAFFF1EDEAFFD0B297FFEBDCCDFFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFFAF6207 F3FFFAF6F3FFDECBBBFFD0B297FFF1EDEAFFFAF6F3FFFAF6F3FFFAF6F3FFFAF6208 F3FFFAF6F3FFFAF6F3FFC89E76FFFAFAFAFFFAFAFAFFFDFDFDFFFFFFFF00FDFD209 FDFFFAFAFAFFC4966AFFB17439FFB17439FFB17439FFB17439FFB17439FFB074210 39FFAB723AFFAB723AFFAB723AFFB07439FFB17439FFB17439FFB17439FFB174211 39FFB17439FFB07439FFAB723AFFAB723AFFAB723AFFB07439FFB17439FFB174212 39FFB17439FFB17439FFC4966AFFFEFEFEFFFAFAFAFFFDFDFDFFFFFFFF00FDFD213 FDFFFAFAFAFFC0966CFFB07439FFB17439FFB17439FFB17439FFB17439FFB174214 39FFB07439FFAB723AFFAB723AFFAB723AFFB07439FFB17439FFB17439FFB174215 39FFB17439FFB17439FFB07439FFAB723AFFAB723AFFAB723AFFB07439FFB174216 39FFB17439FFB17439FFC4966AFFFFFFFF00FEFEFEFFFDFDFDFFFFFFFF00FFFF217 FF00FAFAFAFFC0966CFFAB723AFFB07439FFB17439FFB17439FFB17439FFB174218 39FFB17439FFB07439FFAB723AFFAB723AFFAB723AFFB07439FFB17439FFB174219 39FFB17439FFB17439FFB17439FFB07439FFAB723AFFAB723AFFAB723AFFB074220 39FFB17439FFB17439FFC4966AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF221 FF00FEFEFEFFC0966CFFAB723AFFAB723AFFB07439FFB17439FFB17439FFB174222 39FFB17439FFB17439FFB07439FFAB723AFFAB723AFFAB723AFFB07439FFB174223 39FFB17439FFB17439FFB17439FFB17439FFB07439FFAB723AFFAB723AFFAB72224 3AFFB07439FFB17439FFC4966AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF225 FF00FFFFFF00F0E5DAFFE2D4C6FFE2D4C6FFE2D4C6FFEBDCCDFFEBDCCDFFEBDC226 CDFFEBDCCDFFEBDCCDFFEBDCCDFFEBDCCDFFE2D4C6FFE2D4C6FFE2D4C6FFEBDC227 CDFFEBDCCDFFEBDCCDFFEBDCCDFFEBDCCDFFEBDCCDFFEBDCCDFFE2D4C6FFE2D4228 C6FFE2D4C6FFEBDCCDFFF0E5DAFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF229 FF00FFFFFF00FFFFFF00FEFEFEFFFAFAFAFFF5F5F5FFFAFAFAFFFEFEFEFFFFFF230 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFFAFAFAFFF5F5F5FFFAFA231 FAFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFFAFA232 FAFFF5F5F5FFFAFAFAFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF233 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFFAFAFAFFFAFAFAFFFAFAFAFFFEFE234 FEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFFAFAFAFFFAFA235 FAFFFAFAFAFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFE236 FEFFFAFAFAFFFAFAFAFFFAFAFAFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFF237 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FDFDFDFFFDFDFDFFFDFD238 FDFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FDFD239 FDFFFDFDFDFFFDFDFDFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF240 FF00FFFFFF00FDFDFDFFFDFDFDFFFDFDFDFFFFFFFF00FFFFFF00FFFFFF00FFFF241 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF242 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF243 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF244 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00245 }246 115 end 247 116 object MenuItem1: TMenuItem 248 117 Action = AAdd 249 Bitmap.Data = {250 36100000424D3610000000000000360000002800000020000000200000000100251 2000000000000010000064000000640000000000000000000000FFFFFF00FFFF252 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF253 FF00DBDBDBFF949494FF707070FF707070FF707070FF707070FF707070FF7070254 70FF707070FF707070FF707070FF949494FFDBDBDBFFFFFFFF00FFFFFF00FFFF255 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF256 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF257 FF00005104FF005104FF005104FF005104FF005104FF005104FF005104FF0051258 04FF005104FF005104FF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF259 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF260 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF261 FF00005104FF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D0262 7FFF76D07FFF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF263 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF264 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF265 FF00005104FF76D07FFF09A514FF089F12FF069710FF06920EFF06920EFF0694266 0FFF079910FF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF267 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF268 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF269 FF00005104FF76D07FFF09A514FF089F12FF079910FF06940FFF06920EFF0692270 0EFF06940FFF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF271 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF272 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF273 FF00005104FF76D07FFF09A514FF09A514FF089F12FF079910FF06940FFF0692274 0EFF06920EFF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF275 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF276 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF277 FF00005104FF76D07FFF09A715FF09A514FF09A514FF089F12FF079910FF0694278 0FFF06920EFF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF279 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF280 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF281 FF00005104FF76D07FFF09A715FF09A514FF09A514FF09A514FF089F12FF0799282 10FF06940FFF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF283 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF284 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF285 FF00005104FF76D07FFF09A715FF09A715FF09A514FF09A514FF09A514FF089F286 12FF079910FF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF287 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F3F3F3FFDBDB288 DBFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCF289 CFFF005104FF76D07FFF09A715FF09A715FF09A715FF09A514FF09A514FF09A5290 14FF089F12FF76D07FFF005104FF646464FFABABABFFCFCFCFFFCFCFCFFFCFCF291 CFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFDBDBDBFFDBDBDBFF9494292 94FF707070FF707070FF707070FF707070FF707070FF707070FF707070FF7070293 70FF005104FF76D07FFF09A715FF09A715FF09A715FF09A715FF09A715FF09A5294 14FF09A514FF76D07FFF005104FF4C4C4CFF646464FF707070FF707070FF7070295 70FF707070FF707070FF707070FF707070FF707070FF949494FF005104FF0051296 04FF005104FF005104FF005104FF005104FF005104FF005104FF005104FF0051297 04FF005104FF76D07FFF09A715FF09A715FF09A715FF09A715FF09A715FF09A7298 15FF09A514FF76D07FFF005104FF005104FF005104FF005104FF005104FF0051299 04FF005104FF005104FF005104FF005104FF005104FF707070FF005104FF76D0300 7FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D0301 7FFF76D07FFF76D07FFF09A715FF09A715FF09A715FF09A715FF09A715FF09A7302 15FF09A715FF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D0303 7FFF76D07FFF76D07FFF76D07FFF76D07FFF005104FF707070FF005104FF76D0304 7FFF74CD7BFF6FCC76FF6ACA72FF66C86DFF4ABE52FF25B130FF09A715FF09A7305 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A7306 15FF09A715FF09A514FF09A514FF09A514FF089F12FF079910FF06940FFF0692307 0EFF06920EFF06940FFF069710FF76D07FFF005104FF707070FF005104FF76D0308 7FFF79CF7FFF74CD7BFF6FCC76FF6ACA72FF6ACA72FF50C159FF25B130FF09A7309 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A7310 15FF09A715FF09A715FF09A715FF09A514FF09A514FF089F12FF079910FF0694311 0FFF06940FFF06920EFF06940FFF76D07FFF005104FF707070FF005104FF76D0312 7FFF7ED184FF79CF7FFF74CD7BFF6FCC76FF6FCC76FF6ACA72FF5AC462FF32B5313 3CFF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A7314 15FF09A715FF09A715FF09A715FF09A715FF09A514FF09A514FF089F12FF0799315 10FF069710FF06940FFF06920EFF76D07FFF005104FF707070FF005104FF76D0316 7FFF84D38AFF7ED184FF79CF7FFF74CD7BFF74CD7BFF6FCC76FF6ACA72FF66C8317 6DFF41BB4AFF25B130FF09A715FF09A715FF09A715FF09A715FF09A715FF09A7318 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A514FF09A514FF089F319 12FF089F12FF069710FF06940FFF76D07FFF005104FF707070FF005104FF76D0320 7FFF84D38AFF84D38AFF7ED184FF79CF7FFF79CF7FFF74CD7BFF6FCC76FF6ACA321 72FF6ACA72FF50C159FF32B53CFF09A715FF09A715FF09A715FF09A715FF09A7322 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A514FF09A5323 14FF089F12FF089F12FF069710FF76D07FFF005104FF707070FF005104FF76D0324 7FFF8CD692FF84D38AFF84D38AFF7ED184FF7ED184FF79CF7FFF74CD7BFF6FCC325 76FF6FCC76FF6ACA72FF66C86DFF4ABE52FF25B130FF09A715FF09A715FF09A7326 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A514FF09A5327 14FF09A514FF089F12FF089F12FF76D07FFF005104FF707070FF005104FF76D0328 7FFF90D795FF8CD692FF84D38AFF84D38AFF84D38AFF7ED184FF79CF7FFF74CD329 7BFF74CD7BFF6FCC76FF6ACA72FF66C86DFF66C86DFF41BB4AFF25B130FF09A7330 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A7331 15FF09A514FF09A514FF089F12FF76D07FFF005104FF707070FF005104FF76D0332 7FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D0333 7FFF76D07FFF76D07FFF6FCC76FF6ACA72FF6ACA72FF66C86DFF66C86DFF41BB334 4AFF25B130FF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D0335 7FFF76D07FFF76D07FFF76D07FFF76D07FFF005104FF949494FF005104FF0051336 04FF005104FF005104FF005104FF005104FF005104FF005104FF005104FF0051337 04FF005104FF76D07FFF74CD7BFF6FCC76FF6FCC76FF6ACA72FF66C86DFF66C8338 6DFF5AC462FF76D07FFF005104FF005104FF005104FF005104FF005104FF0051339 04FF005104FF005104FF005104FF005104FF005104FFDBDBDBFFFFFFFF00FFFF340 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF341 FF00005104FF76D07FFF79CF7FFF74CD7BFF74CD7BFF6FCC76FF6ACA72FF66C8342 6DFF66C86DFF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF343 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF344 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF345 FF00005104FF76D07FFF7ED184FF79CF7FFF79CF7FFF74CD7BFF6FCC76FF6ACA346 72FF6ACA72FF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF347 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF348 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF349 FF00005104FF76D07FFF84D38AFF7ED184FF7ED184FF79CF7FFF74CD7BFF6FCC350 76FF6FCC76FF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF351 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF352 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF353 FF00005104FF76D07FFF84D38AFF84D38AFF84D38AFF7ED184FF79CF7FFF74CD354 7BFF74CD7BFF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF355 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF356 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF357 FF00005104FF76D07FFF8CD692FF8CD692FF84D38AFF84D38AFF7ED184FF79CF358 7FFF79CF7FFF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF359 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF360 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF361 FF00005104FF76D07FFF90D795FF8CD692FF8CD692FF84D38AFF84D38AFF7ED1362 84FF7ED184FF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF363 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF364 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF365 FF00005104FF76D07FFF9BDBA0FF90D795FF90D795FF8CD692FF84D38AFF84D3366 8AFF7ED184FF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF367 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF368 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF369 FF00005104FF76D07FFF9BDBA0FF9BDBA0FF90D795FF90D795FF8CD692FF8CD6370 92FF84D38AFF76D07FFF005104FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFF371 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF372 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF373 FF00005104FF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D0374 7FFF76D07FFF76D07FFF005104FF949494FFDBDBDBFFFFFFFF00FFFFFF00FFFF375 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF376 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF377 FF00005104FF005104FF005104FF005104FF005104FF005104FF005104FF0051378 04FF005104FF005104FF005104FFDBDBDBFFF3F3F3FFFFFFFF00FFFFFF00FFFF379 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00380 }381 118 end 382 119 object MenuItem2: TMenuItem 383 120 Action = AModify 384 Bitmap.Data = {385 36100000424D3610000000000000360000002800000020000000200000000100386 2000000000000010000064000000640000000000000000000000FFFFFF00FFFF387 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF388 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF389 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF390 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF391 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF392 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF393 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF394 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF395 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF396 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF397 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF398 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF399 FF00BABABAFFCFCFCFFFF6F6F6FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF400 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF401 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF402 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF403 FF00BABABAFF415D77FF4D697FFFC0C7CCFFFFFFFF00FFFFFF00FFFFFF00FFFF404 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF405 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF406 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF407 FF00D8D8D8FF415D77FF597EAEFF5492E5FF69AAEDFFA3CEF5FFFFFFFF00FFFF408 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF409 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF410 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF411 FF00F6F6F6FF8EAAC2FF9BC1F3FFA8CAF6FF649CE8FF5492E5FF5094E6FF69AA412 EDFFC8E0F8FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF413 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF414 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF415 FF00FFFFFF00ECF5FDFF81B0EEFFC8E0F8FFBDD8FAFF81B0EEFF5492E5FF5492416 E5FF5094E6FF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF417 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF418 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF419 FF00FFFFFF00FFFFFF00649CE8FFBDD8FAFFD6E8FEFFC8E0F8FF9BC1F3FF5094420 E6FF209BEDFF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF421 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF422 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF423 FF00FFFFFF00FFFFFF007CB3EEFF9BC1F3FFD6E8FEFFD6E8FEFFC8E0F8FF71C9424 FAFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFF425 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF426 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF427 FF00FFFFFF00FFFFFF00A3CEF5FF77A9ECFFC8E0F8FFD6E8FEFFBFE4FEFF5BD5428 FFFF45C5FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFF429 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF430 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF431 FF00FFFFFF00FFFFFF00E0EFFCFF5492E5FFBDD8FAFFC8E0F8FFA9E6FFFF79E1432 FFFF5BD5FFFF45C5FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFF433 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF434 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF435 FF00FFFFFF00FFFFFF00FFFFFF00209BEDFF6DBCF4FF98DBFCFF9CE4FFFF94E4436 FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFF437 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF438 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF439 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7FBFF9CE4440 FFFF94E4FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1F7FF149CF1FF0489EBFF007D441 E7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF442 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF443 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7444 FBFF9CE4FFFF94E4FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1F7FF149CF1FF0489445 EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF446 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF447 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9448 F4FF87D7FBFF9CE4FFFF94E4FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1F7FF149C449 F1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF450 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF451 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209B452 EDFF55B9F4FF87D7FBFF9CE4FFFF94E4FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1453 F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF454 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF455 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF456 FF00209BEDFF55B9F4FF87D7FBFF9CE4FFFF94E4FFFF79E1FFFF5BD5FFFF45C5457 FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFF458 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF459 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF460 FF00FFFFFF00209BEDFF55B9F4FF87D7FBFF9CE4FFFF94E4FFFF79E1FFFF5BD5461 FFFF45C5FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFF462 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF463 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF464 FF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7FBFF9CE4FFFF94E4FFFF79E1465 FFFF5BD5FFFF45C5FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFF466 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF467 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF468 FF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7FBFF9CE4FFFF94E4469 FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFF470 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF471 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF472 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7FBFF9CE4473 FFFF94E4FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1F7FF149CF1FF611CDDFF5400474 D5FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF475 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF476 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7477 FBFF9CE4FFFF94E4FFFF79E1FFFF5BD5FFFF45C5FCFF8163F0FF7547E9FF611C478 DDFF5400D5FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF479 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF480 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9481 F4FF87D7FBFF9CE4FFFF94E4FFFF79E1FFFF9185F9FF8A75F5FF8163F0FF7547482 E9FF611CDDFF5400D5FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF483 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF484 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209B485 EDFF55B9F4FF87D7FBFF9CE4FFFF9998FFFF9691FDFF9185F9FF8A75F5FF8163486 F0FF7547E9FF611CDDFFD4BFF4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF487 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF488 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF489 FF00209BEDFF55B9F4FF948CFBFF9998FFFF9998FFFF9691FDFF9185F9FF8A75490 F5FF8163F0FF7547E9FFD7C6F6FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF491 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF492 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF493 FF00FFFFFF007950EBFF8A75F5FF948CFBFF9998FFFF9998FFFF9691FDFF9185494 F9FF8A75F5FF8163F0FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF495 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF496 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF497 FF00FFFFFF00FFFFFF007950EBFF8A75F5FF948CFBFF9998FFFF9998FFFF9691498 FDFF9185F9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF499 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF500 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF501 FF00FFFFFF00FFFFFF00FFFFFF007950EBFF8A75F5FF948CFBFF9998FFFF9998502 FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF503 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF504 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF505 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007950EBFF8A75F5FF948CFBFFFFFF506 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF507 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF508 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF509 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF510 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF511 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF512 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF513 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF514 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00515 }516 121 end 517 122 object MenuItem3: TMenuItem 518 123 Action = ARemove 519 Bitmap.Data = {520 36100000424D3610000000000000360000002800000020000000200000000100521 2000000000000010000064000000640000000000000000000000FFFFFF00FFFF522 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF523 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF524 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF525 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF526 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF527 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF528 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF529 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF530 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF531 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF532 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF533 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF534 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF535 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF536 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF537 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF538 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF539 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF540 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF541 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF542 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF543 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF544 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF545 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF546 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF547 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF548 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF549 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF550 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF551 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF552 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF553 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF554 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF555 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF556 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF557 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF558 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF559 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF560 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF561 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF562 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF563 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF564 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF565 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00463C566 8BFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C567 6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C568 6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C569 6AFF342C6AFF342C6AFF342C6AFF342C6AFF463C8BFFFFFFFF00FFFFFF003C34570 77FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4F571 B7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4F572 B7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4F573 B7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF3C3477FFFFFFFF00FFFFFF00433B574 84FF5D51C1FF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716575 ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716576 ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716577 ABFF2716ABFF2716ABFF2716ABFF5D51C1FF433B84FFFFFFFF00FFFFFF004B42578 92FF6052CCFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18579 BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18580 BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18581 BAFF2A18BAFF2A18BAFF2A18BAFF6052CCFF4B4292FFFFFFFF00FFFFFF00544A582 A0FF6455D6FF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623583 CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623584 CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623585 CBFF3623CBFF3623CBFF3623CBFF6455D6FF544AA0FFFFFFFF00FFFFFF005D51586 AFFF6C5DE3FF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503E587 DEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503E588 DEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503E589 DEFF503EDEFF503EDEFF4937DCFF6C5DE3FF5D51AFFFFFFFFF00FFFFFF006357590 B8FF7364EAFF6251E7FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757591 E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757592 E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757593 E8FF6757E8FF6757E8FF5C4AE6FF7364EAFF6357B8FFFFFFFF00FFFFFF006357594 B8FF7869EAFF7364EAFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6F595 EBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6F596 EBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6F597 EBFF7D6FEBFF7869EAFF6757E8FF7869EAFF6357B8FFFFFFFF00FFFFFF006357598 B8FF7D6FEBFF8174ECFF8D81EEFF9387EFFF9387EFFF9387EFFF9387EFFF9387599 EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387600 EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387601 EFFF9387EFFF8D81EEFF7869EAFF7869EAFF6357B8FFFFFFFF00FFFFFF006E62602 C3FF7A6CE3FF897EE6FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186603 E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186604 E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186605 E7FF9186E7FF897EE6FF867AE6FF7A6CE3FF6E62C3FFFFFFFF00FFFFFF007468606 CEFF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62607 C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62608 C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62609 C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF7468CEFFFFFFFF00FFFFFF00FFFF610 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF611 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF612 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF613 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF614 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF615 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF616 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF617 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF618 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF619 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF620 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF621 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF622 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF623 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF624 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF625 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF626 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF627 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF628 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF629 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF630 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF631 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF632 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF633 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF634 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF635 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF636 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF637 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF638 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF639 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF640 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF641 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF642 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF643 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF644 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF645 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF646 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF647 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF648 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF649 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00650 }651 124 end 652 125 object MenuItem5: TMenuItem 653 126 Action = AShowFields 654 Bitmap.Data = {655 36100000424D3610000000000000360000002800000020000000200000000100656 2000000000000010000064000000640000000000000000000000FFFFFF00FFFF657 FF00F3F8FBFF79BBE1FF2095D3FF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91658 DBFF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91659 DBFF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91660 DBFF0B91DBFF018CD8FF0E81CAFF2E99D7FFCAE0EBFFFFFFFF00FFFFFF00FEFE661 FEFF49A9DBFF0293E0FF0096E6FF0095E6FF0095E6FF0095E6FF0095E6FF0095662 E6FF0095E6FF0193E4FF0193E4FF0193E4FF0193E4FF0193E4FF0193E4FF0193663 E4FF0193E4FF0193E4FF0193E4FF0193E4FF0193E4FF0193E4FF0193E4FF0193664 E4FF0193E4FF0193E4FF0186D6FF0277C3FF79BBE1FFFFFFFF00FFFFFF00B0D6665 EBFF0293E0FF0097E6FF0097E6FF0097E6FF0097E6FF0097E6FF0097E6FF0097666 E6FF0097E6FF0096E6FF0096E6FF0096E6FF0096E6FF0096E6FF0096E6FF0096667 E6FF0096E6FF0096E6FF0096E6FF0095E6FF0095E6FF0095E6FF0095E6FF0193668 E4FF0193E4FF018CD8FF0277C3FF0E81CAFFE2F0F7FFFFFFFF00FEFEFEFF74BE669 E4FF0097E6FF009BE8FF0097E6FF009BE8FF0097E6FF0097E6FF0097E6FF0097670 E6FF0097E6FF0097E6FF0097E6FF0097E6FF0097E6FF0097E6FF0097E6FF0097671 E6FF0097E6FF0097E6FF0097E6FF0097E6FF0097E6FF0097E6FF0096E6FF0096672 E6FF027FCBFF027FCBFF0277C3FFBDDDEFFFFEFEFEFFFFFFFF00FEFEFEFF6CBC673 E4FF009BE8FF009BE8FF009BE8FF009BE8FF009BE8FF139ADEFF2CA1DDFF2CA1674 DDFF2CA1DDFF2CA1DDFF2CA1DDFF2CA1DDFF2CA1DDFF2CA1DDFF2CA1DDFF2CA1675 DDFF2CA1DDFF2CA1DDFF0293E0FF0097E6FF0097E6FF0097E6FF0097E6FF0096676 E6FF027FCBFF0277C3FFB0D6EBFFFEFEFEFFFFFFFF00FFFFFF00FEFEFEFF6CBC677 E4FF009BE8FF009CE9FF009CE9FF009BE8FF4EB2E3FFF3F8FBFFFEFEFEFFFEFE678 FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE679 FEFFFEFEFEFFFEFEFEFF89CAECFF0097E6FF009BE8FF0293E0FF018CD8FF027F680 CBFF0277C3FF9ACEEAFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CBC681 E4FF009CE9FF009CE9FF009CE9FF009BE8FFBDDDEFFFFFFFFF00FFFFFF00FFFF682 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF683 FF00FFFFFF00E2F0F7FF139ADEFF009BE8FF009BE8FF009BE8FF027FCBFF0277684 C3FF89CAECFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC0685 E7FF029FE8FF009CE9FF009CE9FF009BE8FFCAE0EBFFFFFFFF00FFFFFF00FFFF686 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF687 FF00ECF5F9FF2CA1DDFF009CE9FF0097E6FF009CE9FF0186D6FF027FCBFF74BE688 E4FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC0689 E7FF029FE8FF00A4EEFF029FE8FF029FE8FFCAE0EBFFFFFFFF00FFFFFF00FFFF690 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F3F8691 FBFF37AAE1FF029FE8FF009CE9FF0293E0FF027FCBFF027FCBFF5BB1DEFFFEFE692 FEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC0693 E7FF00A4EEFF00A4EEFF00A4EEFF029FE8FFCAE0EBFFFFFFFF00FFFFFF00FFFF694 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F3F8FBFF46B0695 E3FF029FE8FF029FE8FF029FE8FF018CD8FF027FCBFF49A9DBFFFEFEFEFFFFFF696 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC0697 E7FF00A4EEFF00A4EEFF00A4EEFF029FE8FFCAE0EBFFFFFFFF00FFFFFF00FFFF698 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF57B8E5FF029F699 E8FF00A4EEFF018CD8FF018CD8FF027FCBFF3AA1D8FFF3F8FBFFFFFFFF00FFFF700 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC0701 E7FF00A4EEFF00A4EEFF00A4EEFF029FE8FFCAE2ECFFFFFFFF00FFFFFF00FFFF702 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC0E7FF029FE8FF00A4703 EEFF00A4EEFF0293E0FF027FCBFF2E99D7FFECF5F9FFFFFFFF00FFFFFF00FFFF704 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC0705 E7FF00A7F0FF00A7F0FF00A7F0FF09A6E8FFCAE2ECFFFFFFFF00FFFFFF00FFFF706 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF80CAEBFF029FE8FF00A4EEFF029F707 E8FF009BE8FF027FCBFF2095D3FFE2F0F7FFFFFFFF00FFFFFF00FFFFFF00FFFF708 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC0709 E7FF00A7F0FF00A7F0FF00A7F0FF09A6E8FFCAE2ECFFFFFFFF00FFFFFF00FFFF710 FF00FFFFFF00FFFFFF00FEFEFEFF95D3EEFF029FE8FF00A7F0FF00A7F0FF018C711 D8FF0186D6FF2095D3FFD2EDF7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF712 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC5713 EAFF00ACF3FF00ACF3FF00ACF3FF09A6E8FFCAE0EBFFFFFFFF00FFFFFF00FFFF714 FF00FFFFFF00FEFEFEFFA7DAF0FF09A6E8FF00A7F0FF00A7F0FF029FE8FF0186715 D6FF088CD1FFD2EDF7FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF716 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC5717 EAFF00ACF3FF00ACF3FF00ACF3FF09A6E8FFCAE2ECFFFFFFFF00FFFFFF00FFFF718 FF00FEFEFEFFBCE4F3FF09A6E8FF00ACF3FF00A4EEFF0293E0FF0186D6FF088C719 D1FFBCE4F3FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF720 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC5721 EAFF00ACF3FF00ACF3FF00ACF3FF09A6E8FFCAE2ECFFFFFFFF00FFFFFF00FEFE722 FEFFD2EDF7FF09A6E8FF00ACF3FF00ACF3FF00A7F0FF018CD8FF088CD1FFA7DA723 F0FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF724 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC5725 EAFF00ACF3FF00ACF3FF00ACF3FF00ACF3FFCAE2ECFFFFFFFF00FFFFFF00D2ED726 F7FF21B0E8FF00ACF3FF00A4EEFF00A7F0FF0B91DBFF088CD1FF95D3EEFFFEFE727 FEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF728 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC5729 EAFF01B4F8FF00ACF3FF00ACF3FF00ACF3FFCAE2ECFFFEFEFEFFE2F0F7FF21B0730 E8FF00ACF3FF00ACF3FF00A4EEFF018CD8FF088CD1FF80CAEBFFFEFEFEFFFFFF731 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF732 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC5733 EAFF01B4F8FF01B4F8FF01B4F8FF00ACF3FFCAE2ECFFECF5F9FF35BAEEFF00AC734 F3FF01B4F8FF00ACF3FF0293E0FF088CD1FF6CC5EAFFFEFEFEFFFFFFFF00FFFF735 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF736 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC5737 EAFF01B4F8FF01B4F8FF01B4F8FF01B4F8FF6CCDEFFF35BAEEFF01B4F8FF01B4738 F8FF009BE8FF009BE8FF0B91DBFF57B8E5FFFEFEFEFFFFFFFF00FFFFFF00FFFF739 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF740 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC5741 EAFF01B4F8FF01B4F8FF01B4F8FF01B4F8FF01B4F8FF01B4F8FF01B4F8FF01B4742 F8FF029FE8FF0B91DBFF46B0E3FFF3F8FBFFFFFFFF00FFFFFF00FFFFFF00FFFF743 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF744 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CCD745 EFFF01B4F8FF00B8FBFF00B8FBFF00B8FBFF00B8FBFF01B4F8FF00ACF3FF029F746 E8FF0B91DBFF37AAE1FFF3F8FBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF747 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF748 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CCD749 EFFF00B8FBFF00B8FBFF00B8FBFF00B8FBFF00B8FBFF00B8FBFF029FE8FF0B91750 DBFF28ACE1FFECF5F9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF751 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF752 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CCD753 EFFF00B8FBFF00B8FBFF00B8FBFF02BCFBFF00B8FBFF00ACF3FF0B91DBFF10A5754 DAFFE2F0F7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF755 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF756 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CCD757 EFFF02BCFBFF00B8FBFF00B8FBFF01B4F8FF029FE8FF0B91DBFF10A5DAFFD2ED758 F7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF759 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF760 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CCD761 EFFF02BCFBFF02BCFBFF02BCFBFF01B4F8FF139ADEFF04A1DEFFBCE4F3FFFEFE762 FEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF763 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF764 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CCD765 EFFF02BCFBFF00ACF3FF01B4F8FF139ADEFF04A1DEFFB4E3F4FFFEFEFEFFFFFF766 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF767 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF768 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CCD769 EFFF02BCFBFF01B4F8FF0B91DBFF04A1DEFFA1DCF2FFFEFEFEFFFFFFFF00FFFF770 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF771 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF772 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CCD773 EFFF00B8FBFF029FE8FF04A1DEFF8CD5F0FFFEFEFEFFFFFFFF00FFFFFF00FFFF774 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF775 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF776 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF74BE777 E4FF139ADEFF04A1DEFF78CEEEFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFF778 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF779 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF780 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BCE4781 F3FF10A5DAFF78CEEEFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF782 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF783 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF784 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00785 }786 127 end 787 128 end -
trunk/Forms/UFormTables.pas
r15 r20 45 45 Selected: Boolean); 46 46 private 47 FDatabase: TDatabase; 48 procedure SetDatabase(AValue: TDatabase); 49 { private declarations } 47 FTables: TTables; 48 procedure SetTables(AValue: TTables); 50 49 public 51 property Database: TDatabase read FDatabase write SetDatabase;50 property Tables: TTables read FTables write SetTables; 52 51 procedure UpdateInterface; 53 52 procedure ReloadList; … … 74 73 procedure TFormTables.ListView1Data(Sender: TObject; Item: TListItem); 75 74 begin 76 if (Item.Index >= 0) and (Item.Index < Database.Tables.Count) then77 with TTable( Database.Tables[Item.Index]) do begin75 if (Item.Index >= 0) and (Item.Index < FTables.Count) then 76 with TTable(FTables[Item.Index]) do begin 78 77 Item.Caption := Caption; 79 78 Item.SubItems.Add(IntToStr(RecordsCount)); 80 Item.Data := Database.Tables[Item.Index];79 Item.Data := FTables[Item.Index]; 81 80 end 82 81 end; … … 88 87 end; 89 88 90 procedure TFormTables.Set Database(AValue: TDatabase);91 begin 92 if F Database= AValue then Exit;93 F Database:= AValue;89 procedure TFormTables.SetTables(AValue: TTables); 90 begin 91 if FTables = AValue then Exit; 92 FTables := AValue; 94 93 ReloadList; 95 94 end; … … 97 96 procedure TFormTables.UpdateInterface; 98 97 begin 99 ListView1.Enabled := Assigned( Database);100 AAdd.Enabled := Assigned( Database);101 AModify.Enabled := Assigned( Database) and Assigned(ListView1.Selected);102 ARemove.Enabled := Assigned( Database) and Assigned(ListView1.Selected);103 AShowRecords.Enabled := Assigned( Database) and Assigned(ListView1.Selected);104 AShowFields.Enabled := Assigned( Database) and Assigned(ListView1.Selected);98 ListView1.Enabled := Assigned(Tables); 99 AAdd.Enabled := Assigned(Tables); 100 AModify.Enabled := Assigned(Tables) and Assigned(ListView1.Selected); 101 ARemove.Enabled := Assigned(Tables) and Assigned(ListView1.Selected); 102 AShowRecords.Enabled := Assigned(Tables) and Assigned(ListView1.Selected); 103 AShowFields.Enabled := Assigned(Tables) and Assigned(ListView1.Selected); 105 104 end; 106 105 … … 111 110 NewTable := TTable.Create; 112 111 NewTable.Name := SNewTable; 113 NewTable.D atabase := Database;112 NewTable.DbClient := Tables.DbClient; 114 113 FormTable.Load(NewTable); 115 114 if FormTable.ShowModal = mrOk then begin 116 115 FormTable.Save(NewTable); 117 Database.Tables.Add(NewTable);116 Tables.Add(NewTable); 118 117 ReloadList; 119 118 end else NewTable.Free; … … 136 135 if MessageDlg(SRemoveTable, Format(SRemoveTableConfirm, [TTable(ListView1.Selected.Data).Name]), 137 136 mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin 138 Database.Tables.Remove(ListView1.Selected.Data);137 Tables.Remove(ListView1.Selected.Data); 139 138 ReloadList; 140 139 end; … … 202 201 procedure TFormTables.FormClose(Sender: TObject; var CloseAction: TCloseAction); 203 202 begin 204 Database.Save;203 //Tables.DbClient.Save; 205 204 end; 206 205 … … 218 217 I: Integer; 219 218 begin 220 for I := 0 to Database.Tables.Count - 1 do221 TTable( Database.Tables[I]).LoadRecordsCount;222 if Assigned( Database) then begin223 ListView1.Items.Count := Database.Tables.Count;219 for I := 0 to Tables.Count - 1 do 220 TTable(Tables[I]).LoadRecordsCount; 221 if Assigned(Tables) then begin 222 ListView1.Items.Count := Tables.Count; 224 223 ListView1.Repaint; 225 224 end else ListView1.Items.Count := 0; -
trunk/Languages/MyData.cs.po
r19 r20 51 51 msgstr " " 52 52 53 #: tformconnect.buttoncancel.caption 54 #, fuzzy 55 msgctxt "tformconnect.buttoncancel.caption" 56 msgid "Cancel" 57 msgstr "Zrušit" 58 59 #: tformconnect.buttonok.caption 60 #, fuzzy 61 msgctxt "tformconnect.buttonok.caption" 62 msgid "Ok" 63 msgstr "Ok" 64 65 #: tformconnect.buttonxmlbrowse.caption 66 msgid "Browse" 67 msgstr "" 68 69 #: tformconnect.caption 70 msgid "Connection parameters:" 71 msgstr "" 72 73 #: tformconnect.label1.caption 74 #, fuzzy 75 msgctxt "tformconnect.label1.caption" 76 msgid "Name:" 77 msgstr "Jméno:" 78 79 #: tformconnect.label2.caption 80 msgid "Database engine:" 81 msgstr "" 82 83 #: tformconnect.label3.caption 84 msgid "Xml file:" 85 msgstr "" 86 87 #: tformconnect.label4.caption 88 msgid "Host:" 89 msgstr "" 90 91 #: tformconnect.label5.caption 92 msgid "Port:" 93 msgstr "" 94 95 #: tformconnect.tabsheetregistry.caption 96 msgid "TabSheetRegistry" 97 msgstr "" 98 99 #: tformconnect.tabsheetsqlite.caption 100 msgid "TabSheetSqlite" 101 msgstr "" 102 53 103 #: tformdatabases.aadd.caption 54 104 msgid "New" … … 70 120 71 121 #: tformdatabases.caption 72 msgid "Databases" 122 #, fuzzy 123 #| msgid "Databases" 124 msgid "Connection profiles" 73 125 msgstr "Databáze" 74 126 … … 102 154 103 155 #: tformfield.label1.caption 156 msgctxt "tformfield.label1.caption" 104 157 msgid "Name:" 105 158 msgstr "Jméno:" … … 334 387 335 388 #: ucore.stypeboolean 389 msgctxt "ucore.stypeboolean" 336 390 msgid "Boolean" 337 391 msgstr "Logická hodnota" 338 392 339 393 #: ucore.stypedate 394 msgctxt "ucore.stypedate" 340 395 msgid "Date" 341 396 msgstr "Datum" 342 397 343 398 #: ucore.stypedatetime 399 msgctxt "ucore.stypedatetime" 344 400 msgid "Date and time" 345 401 msgstr "Datum a čas" 346 402 347 403 #: ucore.stypefloat 404 msgctxt "ucore.stypefloat" 348 405 msgid "Float" 349 406 msgstr "Desetinné číslo" 350 407 351 408 #: ucore.stypeimage 409 msgctxt "ucore.stypeimage" 352 410 msgid "Image" 353 411 msgstr "Obrázek" 354 412 355 413 #: ucore.stypeinteger 414 msgctxt "ucore.stypeinteger" 356 415 msgid "Integer" 357 416 msgstr "Celé číslo" 358 417 359 418 #: ucore.stypemapposition 419 msgctxt "ucore.stypemapposition" 360 420 msgid "Map position" 361 421 msgstr "Pozice na mapě" 362 422 363 423 #: ucore.stypereference 424 msgctxt "ucore.stypereference" 364 425 msgid "Reference" 365 426 msgstr "Odkaz" 366 427 367 428 #: ucore.stypestring 429 msgctxt "ucore.stypestring" 368 430 msgid "String" 369 431 msgstr "Řetězec" 370 432 371 433 #: ucore.stypetime 434 msgctxt "ucore.stypetime" 435 msgid "Time" 436 msgstr "Čas" 437 438 #: udatabase.stypeboolean 439 #, fuzzy 440 msgctxt "udatabase.stypeboolean" 441 msgid "Boolean" 442 msgstr "Logická hodnota" 443 444 #: udatabase.stypedate 445 #, fuzzy 446 msgctxt "udatabase.stypedate" 447 msgid "Date" 448 msgstr "Datum" 449 450 #: udatabase.stypedatetime 451 #, fuzzy 452 msgctxt "udatabase.stypedatetime" 453 msgid "Date and time" 454 msgstr "Datum a čas" 455 456 #: udatabase.stypefloat 457 #, fuzzy 458 msgctxt "udatabase.stypefloat" 459 msgid "Float" 460 msgstr "Desetinné číslo" 461 462 #: udatabase.stypeimage 463 #, fuzzy 464 msgctxt "udatabase.stypeimage" 465 msgid "Image" 466 msgstr "Obrázek" 467 468 #: udatabase.stypeinteger 469 #, fuzzy 470 msgctxt "udatabase.stypeinteger" 471 msgid "Integer" 472 msgstr "Celé číslo" 473 474 #: udatabase.stypemapposition 475 #, fuzzy 476 msgctxt "udatabase.stypemapposition" 477 msgid "Map position" 478 msgstr "Pozice na mapě" 479 480 #: udatabase.stypereference 481 #, fuzzy 482 msgctxt "udatabase.stypereference" 483 msgid "Reference" 484 msgstr "Odkaz" 485 486 #: udatabase.stypestring 487 #, fuzzy 488 msgctxt "udatabase.stypestring" 489 msgid "String" 490 msgstr "Řetězec" 491 492 #: udatabase.stypetime 493 #, fuzzy 494 msgctxt "udatabase.stypetime" 372 495 msgid "Time" 373 496 msgstr "Čas" … … 432 555 msgid "Database query error: \"%s\"" 433 556 msgstr "Chyba požadavku databáze: \"%s\"" 557 -
trunk/Languages/MyData.po
r19 r20 41 41 msgstr "" 42 42 43 #: tformconnect.buttoncancel.caption 44 msgctxt "tformconnect.buttoncancel.caption" 45 msgid "Cancel" 46 msgstr "" 47 48 #: tformconnect.buttonok.caption 49 msgctxt "tformconnect.buttonok.caption" 50 msgid "Ok" 51 msgstr "" 52 53 #: tformconnect.buttonxmlbrowse.caption 54 msgid "Browse" 55 msgstr "" 56 57 #: tformconnect.caption 58 msgid "Connection parameters:" 59 msgstr "" 60 61 #: tformconnect.label1.caption 62 msgctxt "tformconnect.label1.caption" 63 msgid "Name:" 64 msgstr "" 65 66 #: tformconnect.label2.caption 67 msgid "Database engine:" 68 msgstr "" 69 70 #: tformconnect.label3.caption 71 msgid "Xml file:" 72 msgstr "" 73 74 #: tformconnect.label4.caption 75 msgid "Host:" 76 msgstr "" 77 78 #: tformconnect.label5.caption 79 msgid "Port:" 80 msgstr "" 81 82 #: tformconnect.tabsheetregistry.caption 83 msgid "TabSheetRegistry" 84 msgstr "" 85 86 #: tformconnect.tabsheetsqlite.caption 87 msgid "TabSheetSqlite" 88 msgstr "" 89 43 90 #: tformdatabases.aadd.caption 44 91 msgid "New" … … 60 107 61 108 #: tformdatabases.caption 62 msgid " Databases"109 msgid "Connection profiles" 63 110 msgstr "" 64 111 … … 92 139 93 140 #: tformfield.label1.caption 141 msgctxt "tformfield.label1.caption" 94 142 msgid "Name:" 95 143 msgstr "" … … 324 372 325 373 #: ucore.stypeboolean 374 msgctxt "ucore.stypeboolean" 326 375 msgid "Boolean" 327 376 msgstr "" 328 377 329 378 #: ucore.stypedate 379 msgctxt "ucore.stypedate" 330 380 msgid "Date" 331 381 msgstr "" 332 382 333 383 #: ucore.stypedatetime 384 msgctxt "ucore.stypedatetime" 334 385 msgid "Date and time" 335 386 msgstr "" 336 387 337 388 #: ucore.stypefloat 389 msgctxt "ucore.stypefloat" 338 390 msgid "Float" 339 391 msgstr "" 340 392 341 393 #: ucore.stypeimage 394 msgctxt "ucore.stypeimage" 342 395 msgid "Image" 343 396 msgstr "" 344 397 345 398 #: ucore.stypeinteger 399 msgctxt "ucore.stypeinteger" 346 400 msgid "Integer" 347 401 msgstr "" 348 402 349 403 #: ucore.stypemapposition 404 msgctxt "ucore.stypemapposition" 350 405 msgid "Map position" 351 406 msgstr "" 352 407 353 408 #: ucore.stypereference 409 msgctxt "ucore.stypereference" 354 410 msgid "Reference" 355 411 msgstr "" 356 412 357 413 #: ucore.stypestring 414 msgctxt "ucore.stypestring" 358 415 msgid "String" 359 416 msgstr "" 360 417 361 418 #: ucore.stypetime 419 msgctxt "ucore.stypetime" 420 msgid "Time" 421 msgstr "" 422 423 #: udatabase.stypeboolean 424 msgctxt "udatabase.stypeboolean" 425 msgid "Boolean" 426 msgstr "" 427 428 #: udatabase.stypedate 429 msgctxt "udatabase.stypedate" 430 msgid "Date" 431 msgstr "" 432 433 #: udatabase.stypedatetime 434 msgctxt "udatabase.stypedatetime" 435 msgid "Date and time" 436 msgstr "" 437 438 #: udatabase.stypefloat 439 msgctxt "udatabase.stypefloat" 440 msgid "Float" 441 msgstr "" 442 443 #: udatabase.stypeimage 444 msgctxt "udatabase.stypeimage" 445 msgid "Image" 446 msgstr "" 447 448 #: udatabase.stypeinteger 449 msgctxt "udatabase.stypeinteger" 450 msgid "Integer" 451 msgstr "" 452 453 #: udatabase.stypemapposition 454 msgctxt "udatabase.stypemapposition" 455 msgid "Map position" 456 msgstr "" 457 458 #: udatabase.stypereference 459 msgctxt "udatabase.stypereference" 460 msgid "Reference" 461 msgstr "" 462 463 #: udatabase.stypestring 464 msgctxt "udatabase.stypestring" 465 msgid "String" 466 msgstr "" 467 468 #: udatabase.stypetime 469 msgctxt "udatabase.stypetime" 362 470 msgid "Time" 363 471 msgstr "" -
trunk/MyData.lpi
r19 r20 96 96 </Item6> 97 97 </RequiredPackages> 98 <Units Count="2 0">98 <Units Count="21"> 99 99 <Unit0> 100 100 <Filename Value="MyData.lpr"/> … … 213 213 <IsPartOfProject Value="True"/> 214 214 </Unit19> 215 <Unit20> 216 <Filename Value="DbEngines/UDbClientRegistry.pas"/> 217 <IsPartOfProject Value="True"/> 218 </Unit20> 215 219 </Units> 216 220 </ProjectOptions> -
trunk/MyData.lpr
r19 r20 11 11 UFormTable, UFormRecords, UFormRecord, UFormFields, UFormField, 12 12 TemplateGenerics, UFormMain, SysUtils, 13 UFormConnect, UFormDatabases, UFormPreferences ;13 UFormConnect, UFormDatabases, UFormPreferences, UDbClientRegistry; 14 14 15 15 {$R *.res} -
trunk/Packages/Common/UApplicationInfo.pas
r15 r20 6 6 7 7 uses 8 SysUtils, Registry, Classes, Forms, URegistry;8 SysUtils, Classes, Forms, URegistry, LCLType; 9 9 10 10 type … … 14 14 TApplicationInfo = class(TComponent) 15 15 private 16 FDescription: string;16 FDescription: TTranslateString; 17 17 FIdentification: Byte; 18 18 FLicense: string; -
trunk/Packages/Common/UPersistentForm.pas
r15 r20 56 56 I: Integer; 57 57 WinControl: TWinControl; 58 Count: Integer;59 58 begin 60 59 if Control is TListView then begin … … 217 216 218 217 procedure TPersistentForm.Load(Form: TForm; DefaultMaximized: Boolean = False); 219 var220 LoadDefaults: Boolean;221 218 begin 222 219 Self.Form := Form; … … 230 227 231 228 if not EqualRect(FormNormalSize, FormRestoredSize) or 232 (LoadDefaults and DefaultMaximized)then begin229 DefaultMaximized then begin 233 230 // Restore to maximized state 234 231 Form.WindowState := wsNormal; -
trunk/Packages/Common/URegistry.pas
r15 r20 37 37 function DeleteKeyRecursive(const Key: string): Boolean; 38 38 function OpenKey(const Key: string; CanCreate: Boolean): Boolean; 39 function GetValue(const Name: string; const DefaultValue: Integer): Integer; overload; 40 function GetValue(const Name: string; const DefaultValue: string): string; overload; 41 function GetValue(const Name: string; const DefaultValue: Boolean): Boolean; overload; 42 function GetValue(const Name: string; const DefaultValue: Double): Double; overload; 43 procedure SetValue(const Name: string; const Value: Integer); overload; 44 procedure SetValue(const Name: string; const Value: string); overload; 45 procedure SetValue(const Name: string; const Value: Boolean); overload; 46 procedure SetValue(const Name: string; const Value: Double); overload; 39 47 property CurrentContext: TRegistryContext read GetCurrentContext write SetCurrentContext; 40 48 end; … … 97 105 Result := DefaultValue; 98 106 end; 107 end; 108 109 function TRegistryEx.GetValue(const Name: string; const DefaultValue: Integer 110 ): Integer; 111 begin 112 Result := ReadIntegerWithDefault(Name, DefaultValue); 113 end; 114 115 function TRegistryEx.GetValue(const Name: string; const DefaultValue: string 116 ): string; 117 begin 118 Result := ReadStringWithDefault(Name, DefaultValue); 119 end; 120 121 function TRegistryEx.GetValue(const Name: string; const DefaultValue: Boolean 122 ): Boolean; 123 begin 124 Result := ReadBoolWithDefault(Name, DefaultValue); 125 end; 126 127 function TRegistryEx.GetValue(const Name: string; const DefaultValue: Double 128 ): Double; 129 begin 130 Result := ReadFloatWithDefault(Name, DefaultValue); 131 end; 132 133 procedure TRegistryEx.SetValue(const Name: string; const Value: Integer); 134 begin 135 WriteInteger(Name, Value); 136 end; 137 138 procedure TRegistryEx.SetValue(const Name: string; const Value: string); 139 begin 140 WriteString(Name, Value); 141 end; 142 143 procedure TRegistryEx.SetValue(const Name: string; const Value: Boolean); 144 begin 145 WriteBool(Name, Value); 146 end; 147 148 procedure TRegistryEx.SetValue(const Name: string; const Value: Double); 149 begin 150 WriteFloat(Name, Value); 99 151 end; 100 152 -
trunk/UCore.lfm
r19 r20 3 3 OnDestroy = DataModuleDestroy 4 4 OldCreateOrder = False 5 Height = 6936 HorizontalOffset = 6407 VerticalOffset = 2 758 Width = 9809 PPI = 1 445 Height = 578 6 HorizontalOffset = 533 7 VerticalOffset = 229 8 Width = 817 9 PPI = 120 10 10 object ImageList1: TImageList 11 11 Height = 32 12 12 Width = 32 13 left = 44114 top = 20413 left = 368 14 top = 170 15 15 Bitmap = { 16 16 4C690C000000200000002000000061C66E0061C66E0061C66E0061C66E0061C6 … … 1553 1553 } 1554 1554 end 1555 object XMLConfig1: TXMLConfig1556 StartEmpty = False1557 RootName = 'CONFIG'1558 ReadOnly = False1559 left = 4411560 top = 3241561 end1562 1555 object ActionList1: TActionList 1563 1556 Images = ImageList1 1564 left = 4461565 top = 1161557 left = 372 1558 top = 97 1566 1559 object AExit: TAction 1567 1560 Caption = 'Exit' … … 1593 1586 POFilesFolder = 'Languages' 1594 1587 OnTranslate = CoolTranslator1Translate 1595 left = 4321596 top = 4561588 left = 360 1589 top = 380 1597 1590 end 1598 1591 object ApplicationInfo1: TApplicationInfo … … 1611 1604 RegistryRoot = rrKeyCurrentUser 1612 1605 License = 'CC0' 1613 left = 1 201614 top = 1 321606 left = 100 1607 top = 104 1615 1608 end 1616 1609 object PersistentForm1: TPersistentForm 1617 1610 MinVisiblePart = 50 1618 1611 EntireVisible = False 1619 left = 1 211620 top = 2141612 left = 101 1613 top = 178 1621 1614 end 1622 1615 end -
trunk/UCore.pas
r19 r20 6 6 7 7 uses 8 Classes, SysUtils, XMLConf,FileUtil, Controls, ActnList, UDatabase,9 UCoolTranslator, UApplicationInfo, UPersistentForm, Forms ;8 Classes, SysUtils, FileUtil, Controls, ActnList, UDatabase, 9 UCoolTranslator, UApplicationInfo, UPersistentForm, Forms, URegistry; 10 10 11 11 type … … 23 23 ImageList1: TImageList; 24 24 PersistentForm1: TPersistentForm; 25 XMLConfig1: TXMLConfig;26 25 procedure AAboutExecute(Sender: TObject); 27 26 procedure ADatabaseConnectExecute(Sender: TObject); … … 33 32 procedure DataModuleDestroy(Sender: TObject); 34 33 private 35 FD atabase: TDatabase;34 FDbClient: TDbClient; 36 35 Initialized: Boolean; 37 procedure InitEngines; 38 procedure InitDataTypes; 39 procedure SetDatabase(AValue: TDatabase); 36 procedure SetDbClient(AValue: TDbClient); 40 37 public 41 38 Preferences: TPreferences; 42 Databases: TDatabases; 43 Engines: TDatabaseEngines; 44 DataTypes: TDataTypes; 39 DbManager: TDbManager; 45 40 procedure LoadConfig; 46 41 procedure SaveConfig; … … 48 43 procedure Done; 49 44 procedure UpdateInterface; 50 property D atabase: TDatabase read FDatabase write SetDatabase;45 property DbClient: TDbClient read FDbClient write SetDbClient; 51 46 end; 52 47 … … 54 49 Core: TCore; 55 50 51 const 52 DefaultRegKey = '\Software\Chronosoft\MyData'; 53 56 54 57 55 implementation 58 56 59 57 uses 60 U EngineXML, UEngineMySQL, UEngineSQLite, UFormTables, UFormConnect,61 UFormDatabases, U DataTypes, UFormPreferences, UFormMain, UFormAbout;58 UFormTables, UFormConnect, 59 UFormDatabases, UFormPreferences, UFormMain, UFormAbout; 62 60 63 61 {$R *.lfm} 64 62 65 resourcestring66 STypeString = 'String';67 STypeInteger = 'Integer';68 STypeFloat = 'Float';69 STypeBoolean = 'Boolean';70 STypeMapPosition = 'Map position';71 STypeImage = 'Image';72 STypeDate = 'Date';73 STypeTime = 'Time';74 STypeDateTime = 'Date and time';75 STypeReference = 'Reference';76 77 63 { TCore } 78 64 79 65 procedure TCore.DataModuleCreate(Sender: TObject); 80 66 begin 81 Databases := TDatabases.Create; 82 Engines := TDatabaseEngines.Create; 83 DataTypes := TDataTypes.Create; 67 DbManager := TDbManager.Create; 84 68 Preferences := TPreferences.Create; 85 69 end; 86 70 71 procedure TCore.DataModuleDestroy(Sender: TObject); 72 begin 73 DbClient := nil; 74 FreeAndNil(Preferences); 75 FreeAndNil(DbManager); 76 end; 77 87 78 procedure TCore.AExitExecute(Sender: TObject); 88 79 begin … … 92 83 procedure TCore.ADatabaseDisconnectExecute(Sender: TObject); 93 84 begin 94 D atabase:= nil;85 DbClient := nil; 95 86 end; 96 87 97 88 procedure TCore.ADatabaseConnectExecute(Sender: TObject); 89 var 90 NewClient: TDbClient; 98 91 begin 99 92 if FormDatabases.ShowModal = mrOk then begin 100 Database := FormDatabases.SelectedDatabase; 93 DbClient := nil; 94 NewClient := FormDatabases.SelectedProfile.ClientType.DatabaseClientClass.Create; 95 NewClient.ConnectProfile := FormDatabases.SelectedProfile; 96 DbClient := NewClient; 101 97 end; 102 98 end; … … 122 118 I: Integer; 123 119 begin 124 for I := 0 to DataTypes.Count - 1 do begin 125 TDataType(DataTypes[I]).Title := CoolTranslator1.TranslateText(TDataType(DataTypes[I]).Title, TDataType(DataTypes[I]).Title); 126 end; 127 end; 128 129 procedure TCore.DataModuleDestroy(Sender: TObject); 130 begin 131 FreeAndNil(Preferences); 132 FreeAndNil(DataTypes); 133 FreeAndNil(Engines); 134 FreeAndNil(Databases); 135 end; 136 137 procedure TCore.InitEngines; 138 var 139 NewEngine: TDatabaseEngine; 140 begin 141 Engines.Clear; 142 NewEngine := Engines.RegisterEngine('XML file', TDatabaseXML); 143 NewEngine.UseTypes(DataTypes, [ftString, ftInteger, ftDateTime, ftBoolean, ftFloat]); 144 145 NewEngine := Engines.RegisterEngine('MySQL', TDatabaseMySQL); 146 NewEngine.UseTypes(DataTypes, [ftString, ftInteger, ftDateTime, ftBoolean, ftFloat, 147 ftReference]); 148 149 NewEngine := Engines.RegisterEngine('SQLite', TDatabaseSQLite); 150 NewEngine.UseTypes(DataTypes, [ftString, ftInteger, ftDateTime, ftBoolean, ftFloat]); 151 end; 152 153 procedure TCore.InitDataTypes; 154 begin 155 DataTypes.Clear; 156 with DataTypes do begin 157 RegisterType(1, 'String', STypeString, ftString, TFieldString); 158 RegisterType(2, 'Integer', STypeInteger, ftInteger, TFieldInteger); 159 RegisterType(3, 'DateTime', STypeDateTime, ftDateTime, TFieldDateTime); 160 RegisterType(4, 'Boolean', STypeBoolean, ftBoolean, TFieldBoolean); 161 RegisterType(5, 'Float', STypeFloat, ftFloat, TFieldFloat); 162 RegisterType(6, 'MapPosition', STypeMapPosition, ftMapPosition, TFieldMapPosition); 163 RegisterType(7, 'Date', STypeDate, ftDate, TFieldDate); 164 RegisterType(8, 'Time', STypeTime, ftTime, TFieldTime); 165 RegisterType(9, 'Image', STypeImage, ftImage, TFieldImage); 166 RegisterType(10, 'Reference', STypeReference, ftReference, TFieldReference); 167 end; 168 end; 169 170 procedure TCore.SetDatabase(AValue: TDatabase); 171 begin 172 if FDatabase = AValue then Exit; 173 if Assigned(FDatabase) then begin 174 FDatabase.Save; 175 FDatabase.Clear; 176 end; 177 FDatabase := AValue; 178 if Assigned(FDatabase) then begin 179 FDatabase.Load; 180 Preferences.LastDatabaseName := FDatabase.Name; 181 end; 182 FormTables.Database := FDatabase; 120 for I := 0 to DbManager.DataTypes.Count - 1 do begin 121 TDataType(DbManager.DataTypes[I]).Title := CoolTranslator1.TranslateText(TDataType(DbManager.DataTypes[I]).Title, TDataType(DbManager.DataTypes[I]).Title); 122 end; 123 end; 124 125 procedure TCore.SetDbClient(AValue: TDbClient); 126 begin 127 if FDbClient = AValue then Exit; 128 if Assigned(FDbClient) then begin 129 DbClient.Save; 130 FDbClient.Free; 131 end; 132 FDbClient := AValue; 133 if Assigned(FDbClient) then begin 134 DbClient.Load; 135 Preferences.LastDatabaseName := FDbClient.ConnectProfile.Name; 136 if not Assigned(FormTables.Tables) then 137 FormTables.Tables := TTables.Create; 138 DbClient.LoadTables(FormTables.Tables); 139 end; 183 140 UpdateInterface; 184 141 end; 185 142 186 143 procedure TCore.LoadConfig; 187 var 188 I: Integer; 189 NewDatabase: TDatabase; 190 Engine: TDatabaseEngine; 191 begin 192 XMLConfig1.FileName := 'Config.xml'; 193 Databases.Count := XMLConfig1.GetValue('Database/Count', 0); 194 for I := 0 to Databases.Count - 1 do begin 195 Engine := Core.Engines.FindByName(XMLConfig1.GetValue('Database/Item' + IntToStr(I) + '/Engine', '')); 196 197 NewDatabase := TDatabase.Create; 198 NewDatabase.Engine := Engine; 199 NewDatabase.Name := XMLConfig1.GetValue('Database/Item' + IntToStr(I) + '/Name', ''); 200 NewDatabase.ConnectionString := XMLConfig1.GetValue('Database/Item' + IntToStr(I) + '/ConnectionString', ''); 201 Databases[I] := NewDatabase; 202 end; 203 //Databases.ConnectionString := XMLConfig1.GetValue('ConnectionString', 'file://' + ExtractFileDir(Application.ExeName) + '/data.xml'); 204 Preferences.RememberDatabase := XMLConfig1.GetValue('RememberDatabase', True); 205 Preferences.LastDatabaseName := XMLConfig1.GetValue('LastDatabaseName', ''); 206 CoolTranslator1.Language := CoolTranslator1.Languages.SearchByCode(XMLConfig1.GetValue('Language', '')); 144 begin 145 with TRegistryEx.Create do 146 try 147 CurrentContext := TRegistryContext.Create(rrKeyCurrentUser, DefaultRegKey); 148 Preferences.RememberDatabase := GetValue('RememberDatabase', True); 149 Preferences.LastDatabaseName := GetValue('LastDatabaseName', ''); 150 CoolTranslator1.Language := CoolTranslator1.Languages.SearchByCode( 151 GetValue('Language', '')); 152 finally 153 Free; 154 end; 155 DbManager.ConnectProfiles.LoadFromRegistry(TRegistryContext.Create(rrKeyCurrentUser, DefaultRegKey + '\Database')); 207 156 end; 208 157 209 158 procedure TCore.SaveConfig; 210 var 211 I: Integer; 212 begin 213 XMLConfig1.SetValue('Database/Count', Databases.Count); 214 for I := 0 to Databases.Count - 1 do begin 215 XMLConfig1.SetValue('Database/Item' + IntToStr(I) + '/Name', TDatabase(Databases[I]).Name); 216 XMLConfig1.SetValue('Database/Item' + IntToStr(I) + '/ConnectionString', TDatabase(Databases[I]).ConnectionString); 217 XMLConfig1.SetValue('Database/Item' + IntToStr(I) + '/Engine', TDatabase(Databases[I]).Engine.Name); 218 end; 219 XMLConfig1.SetValue('RememberDatabase', Preferences.RememberDatabase); 220 XMLConfig1.SetValue('LastDatabaseName', Preferences.LastDatabaseName); 221 XMLConfig1.SetValue('Language', CoolTranslator1.Language.Code); 159 begin 160 with TRegistryEx.Create do 161 try 162 CurrentContext := TRegistryContext.Create(rrKeyCurrentUser, DefaultRegKey); 163 SetValue('RememberDatabase', Preferences.RememberDatabase); 164 SetValue('LastDatabaseName', Preferences.LastDatabaseName); 165 SetValue('Language', CoolTranslator1.Language.Code); 166 finally 167 Free; 168 end; 169 DbManager.ConnectProfiles.SaveToRegistry(TRegistryContext.Create(rrKeyCurrentUser, DefaultRegKey + '\Database')); 222 170 end; 223 171 224 172 procedure TCore.Init; 173 var 174 ConnectProfile: TDbConnectProfile; 225 175 begin 226 176 if not Initialized then begin … … 230 180 CoolTranslator1.POFilesFolder := '/usr/share/MyData/languages'; 231 181 {$ENDIF} 232 InitDataTypes;233 InitEngines;234 182 FormConnect.Init; 235 183 Initialized := True; … … 238 186 UpdateInterface; 239 187 if Preferences.RememberDatabase then begin 240 Database := Databases.FindByName(Preferences.LastDatabaseName); 188 ConnectProfile := DbManager.ConnectProfiles.FindByName(Preferences.LastDatabaseName); 189 if Assigned(ConnectProfile) then 190 DbClient := ConnectProfile.ClientType.DatabaseClientClass.Create; 241 191 end else ADatabaseConnect.Execute; 242 192 end; … … 250 200 procedure TCore.UpdateInterface; 251 201 begin 252 ADatabaseDisconnect.Enabled := Assigned( FormTables.Database);202 ADatabaseDisconnect.Enabled := Assigned(DbClient); 253 203 FormMain.UpdateInterface; 254 204 end; -
trunk/UDatabase.pas
r15 r20 7 7 uses 8 8 Classes, SysUtils, Contnrs, ExtCtrls, StdCtrls, EditBtn, dialogs, USqlDatabase, 9 SpecializedDictionary ;9 SpecializedDictionary, URegistry; 10 10 11 11 type 12 12 TTable = class; 13 TDatabaseEngine = class; 14 TDatabaseClient = class; 15 TDatabase = class; 13 TDbClientType = class; 14 TDbClient = class; 16 15 TDataType = class; 16 TDbManager = class; 17 17 18 18 TFieldType = (ftString, ftInteger, ftDateTime, ftBoolean, ftFloat, ftImage, … … 104 104 Records: TRecords; 105 105 Fields: TFields; 106 D atabase: TDatabase;106 DbClient: TDbClient; 107 107 RecordsCount: Integer; 108 108 procedure LoadRecords; … … 116 116 117 117 TTables = class(TObjectList) 118 D atabase: TDatabase;118 DbClient: TDbClient; 119 119 function SearchByName(Name: string): TTable; 120 120 end; 121 121 122 // CSV, INI, WinRegistry, XML, sqlite, mysql 123 124 { TDatabase } 125 126 TDatabase = class 122 { TDbConnectParams } 123 124 TDbConnectParams = class 125 protected 126 FConnectionString: string; 127 function GetConnectionString: string; virtual; 128 procedure SetConnectionString(AValue: string); virtual; 129 public 130 property ConnectionString: string read GetConnectionString 131 write SetConnectionString; 132 end; 133 134 TDbConnectParamsClass = class of TDbConnectParams; 135 136 { TDbConnectProfile } 137 138 TDbConnectProfile = class 127 139 private 128 F Engine: TDatabaseEngine;129 procedure Set Engine(AValue: TDatabaseEngine);140 FClientType: TDbClientType; 141 procedure SetClientType(AValue: TDbClientType); 130 142 public 131 143 Name: string; 132 Tables: TTables; 133 ConnectionString: string; 134 Client: TDatabaseClient; 135 constructor Create; 136 destructor Destroy; override; 137 procedure Load; virtual; 138 procedure Save; virtual; 139 procedure Clear; 140 property Engine: TDatabaseEngine read FEngine write SetEngine; 141 end; 142 143 { TDatabases } 144 145 TDatabases = class(TObjectList) 146 function FindByName(Name: string): TDatabase; 147 end; 148 149 TDatabaseClass = class of TDatabase; 144 Params: TDbConnectParams; 145 property ClientType: TDbClientType read FClientType write SetClientType; 146 end; 147 148 { TDbConnectProfiles } 149 150 TDbConnectProfiles = class(TObjectList) 151 DbManager: TDbManager; 152 procedure LoadFromRegistry(Context: TRegistryContext); 153 procedure SaveToRegistry(Context: TRegistryContext); 154 function FindByName(Name: string): TDbConnectProfile; 155 end; 150 156 151 157 { TDataType } … … 168 174 end; 169 175 170 { TDatabaseClient } 171 172 TDatabaseClient = class 173 Database: TDatabase; 176 { TDbClient } 177 178 TDbClient = class 179 private 180 function GetClientType: TDbClientType; 181 protected 182 FConnectProfile: TDbConnectProfile; 183 procedure SetConnectProfile(AValue: TDbConnectProfile); virtual; 184 public 174 185 procedure Query(DbRows: TDbRows; Text: string); virtual; 186 procedure LoadTables(Tables: TTables); virtual; 175 187 constructor Create; virtual; 176 188 procedure Load; virtual; 177 189 procedure Save; virtual; 178 end; 179 180 TDatabaseClientClass = class of TDatabaseClient; 190 property ClientType: TDbClientType read GetClientType; 191 property ConnectProfile: TDbConnectProfile read FConnectProfile 192 write SetConnectProfile; 193 end; 194 195 TDbClientClass = class of TDbClient; 181 196 182 197 TFieldTypeSet = set of TFieldType; 183 198 184 { TD atabaseEngine }185 186 TD atabaseEngine = class199 { TDbClientType } 200 201 TDbClientType = class 187 202 Name: string; 188 203 DataTypes: TDataTypes; 189 DatabaseClientClass: TDatabaseClientClass; 204 DatabaseClientClass: TDbClientClass; 205 ConnectParmasClass: TDbConnectParamsClass; 190 206 procedure UseTypes(ADataTypes: TDataTypes; Types: TFieldTypeSet); 191 207 constructor Create; … … 193 209 end; 194 210 195 { TDatabaseEngines } 196 197 TDatabaseEngines = class(TObjectList) 198 function RegisterEngine(Name: string; DatabaseClass: TDatabaseClientClass): TDatabaseEngine; 199 function FindByName(Name: string): TDatabaseEngine; 211 { TDbClientTypes } 212 213 TDbClientTypes = class(TObjectList) 214 function RegisterClientType(Name: string; DatabaseClass: TDbClientClass; 215 ConnectParamsClass: TDbConnectParamsClass): TDbClientType; 216 function FindByName(Name: string): TDbClientType; 200 217 end; 201 218 … … 205 222 end; 206 223 224 { TDbManager } 225 226 TDbManager = class 227 private 228 procedure InitClientTypes; 229 procedure InitDataTypes; 230 public 231 ConnectProfiles: TDbConnectProfiles; 232 ClientTypes: TDbClientTypes; 233 DataTypes: TDataTypes; 234 constructor Create; 235 destructor Destroy; override; 236 end; 237 238 resourcestring 239 STypeString = 'String'; 240 STypeInteger = 'Integer'; 241 STypeFloat = 'Float'; 242 STypeBoolean = 'Boolean'; 243 STypeMapPosition = 'Map position'; 244 STypeImage = 'Image'; 245 STypeDate = 'Date'; 246 STypeTime = 'Time'; 247 STypeDateTime = 'Date and time'; 248 STypeReference = 'Reference'; 249 207 250 208 251 implementation 209 252 210 253 uses 211 UDataTypes; 254 UDataTypes, 255 UEngineXML, UEngineMySQL, UEngineSQLite, UDbClientRegistry; 256 257 { TDbManager } 258 259 procedure TDbManager.InitClientTypes; 260 var 261 ClientType: TDbClientType; 262 begin 263 ClientTypes.Clear; 264 265 ClientType := ClientTypes.RegisterClientType('XML file', TDatabaseXML, TDbConnectParamsXml); 266 ClientType.UseTypes(DataTypes, [ftString, ftInteger, ftDateTime, ftBoolean, ftFloat]); 267 268 ClientType := ClientTypes.RegisterClientType('MySQL', TDatabaseMySQL, TDbConnectParamsMySql); 269 ClientType.UseTypes(DataTypes, [ftString, ftInteger, ftDateTime, ftBoolean, ftFloat, 270 ftReference]); 271 272 ClientType := ClientTypes.RegisterClientType('SQLite', TDatabaseSQLite, TDbConnectParamsSqlite); 273 ClientType.UseTypes(DataTypes, [ftString, ftInteger, ftDateTime, ftBoolean, ftFloat]); 274 275 ClientType := ClientTypes.RegisterClientType('Registry', TDbClientRegistry, TDbConnectParamsRegistry); 276 ClientType.UseTypes(DataTypes, [ftString, ftInteger]); 277 end; 278 279 procedure TDbManager.InitDataTypes; 280 begin 281 DataTypes.Clear; 282 with DataTypes do begin 283 RegisterType(1, 'String', STypeString, ftString, TFieldString); 284 RegisterType(2, 'Integer', STypeInteger, ftInteger, TFieldInteger); 285 RegisterType(3, 'DateTime', STypeDateTime, ftDateTime, TFieldDateTime); 286 RegisterType(4, 'Boolean', STypeBoolean, ftBoolean, TFieldBoolean); 287 RegisterType(5, 'Float', STypeFloat, ftFloat, TFieldFloat); 288 RegisterType(6, 'MapPosition', STypeMapPosition, ftMapPosition, TFieldMapPosition); 289 RegisterType(7, 'Date', STypeDate, ftDate, TFieldDate); 290 RegisterType(8, 'Time', STypeTime, ftTime, TFieldTime); 291 RegisterType(9, 'Image', STypeImage, ftImage, TFieldImage); 292 RegisterType(10, 'Reference', STypeReference, ftReference, TFieldReference); 293 end; 294 end; 295 296 constructor TDbManager.Create; 297 begin 298 ConnectProfiles := TDbConnectProfiles.Create; 299 ConnectProfiles.DbManager := Self; 300 ClientTypes := TDbClientTypes.Create; 301 DataTypes := TDataTypes.Create; 302 InitDataTypes; 303 InitClientTypes; 304 end; 305 306 destructor TDbManager.Destroy; 307 begin 308 DataTypes.Free; 309 ClientTypes.Free; 310 ConnectProfiles.Free; 311 inherited Destroy; 312 end; 313 314 { TDbConnectParams } 315 316 procedure TDbConnectParams.SetConnectionString(AValue: string); 317 begin 318 if FConnectionString = AValue then Exit; 319 FConnectionString := AValue; 320 end; 321 322 function TDbConnectParams.GetConnectionString: string; 323 begin 324 Result := FConnectionString; 325 end; 326 327 { TDbConnectProfiles } 328 329 procedure TDbConnectProfiles.LoadFromRegistry(Context: TRegistryContext); 330 var 331 I: Integer; 332 ConnectProfile: TDbConnectProfile; 333 ClientType: TDbClientType; 334 begin 335 with TRegistryEx.Create do 336 try 337 CurrentContext := Context; 338 Count := GetValue('Count', 0); 339 for I := 0 to Count - 1 do begin 340 OpenKey(Context.Key + '\Item' + IntToStr(I), True); 341 ClientType := DbManager.ClientTypes.FindByName(GetValue('ClientType', '')); 342 if not Assigned(ClientType) and (DbManager.ClientTypes.Count > 0) then 343 ClientType := TDbClientType(DbManager.ClientTypes[0]); 344 345 ConnectProfile := TDbConnectProfile.Create; 346 ConnectProfile.ClientType := ClientType; 347 ConnectProfile.Name := GetValue('Name', ''); 348 ConnectProfile.Params.ConnectionString := GetValue('ConnectionString', ''); 349 Items[I] := ConnectProfile; 350 end; 351 finally 352 Free; 353 end; 354 end; 355 356 procedure TDbConnectProfiles.SaveToRegistry(Context: TRegistryContext); 357 var 358 I: Integer; 359 begin 360 with TRegistryEx.Create do 361 try 362 CurrentContext := Context; 363 SetValue('Count', Count); 364 for I := 0 to Count - 1 do begin 365 OpenKey(Context.Key + '\Item' + IntToStr(I), True); 366 SetValue('Name', TDbConnectProfile(Items[I]).Name); 367 SetValue('ConnectionString', TDbConnectProfile(Items[I]).Params.ConnectionString); 368 SetValue('ClientType', TDbConnectProfile(Items[I]).ClientType.Name); 369 end; 370 finally 371 Free; 372 end; 373 end; 374 375 function TDbConnectProfiles.FindByName(Name: string): TDbConnectProfile; 376 var 377 I: Integer; 378 begin 379 I := 0; 380 while (I < Count) and (TDbConnectProfile(Items[I]).Name <> Name) do Inc(I); 381 if (I < Count) then Result := TDbConnectProfile(Items[I]) 382 else Result := nil; 383 end; 384 385 { TDbConnectProfile } 386 387 procedure TDbConnectProfile.SetClientType(AValue: TDbClientType); 388 begin 389 if FClientType = AValue then Exit; 390 if Assigned(FClientType) then begin 391 Params.Free; 392 end; 393 FClientType := AValue; 394 if Assigned(FClientType) then begin 395 Params := FClientType.ConnectParmasClass.Create; 396 end; 397 end; 212 398 213 399 { TTables } … … 223 409 end; 224 410 225 { TDatabases } 226 227 function TDatabases.FindByName(Name: string): TDatabase; 228 var 229 I: Integer; 230 begin 231 I := 0; 232 while (I < Count) and (TDatabase(Items[I]).Name <> Name) do Inc(I); 233 if (I < Count) then Result := TDatabase(Items[I]) 234 else Result := nil; 235 end; 236 237 { TDatabaseClient } 238 239 procedure TDatabaseClient.Query(DbRows: TDbRows; Text: string); 240 begin 241 end; 242 243 constructor TDatabaseClient.Create; 244 begin 245 end; 246 247 procedure TDatabaseClient.Load; 248 begin 249 250 end; 251 252 procedure TDatabaseClient.Save; 253 begin 254 255 end; 256 257 { TDatabaseEngines } 258 259 function TDatabaseEngines.RegisterEngine(Name: string; 260 DatabaseClass: TDatabaseClientClass): TDatabaseEngine; 261 begin 262 Result := TDatabaseEngine.Create; 411 { TDbClient } 412 413 function TDbClient.GetClientType: TDbClientType; 414 begin 415 Result := FConnectProfile.ClientType; 416 end; 417 418 procedure TDbClient.SetConnectProfile(AValue: TDbConnectProfile); 419 begin 420 if FConnectProfile = AValue then Exit; 421 FConnectProfile := AValue; 422 end; 423 424 procedure TDbClient.Query(DbRows: TDbRows; Text: string); 425 begin 426 end; 427 428 procedure TDbClient.LoadTables(Tables: TTables); 429 begin 430 Tables.Clear; 431 end; 432 433 constructor TDbClient.Create; 434 begin 435 inherited; 436 end; 437 438 procedure TDbClient.Load; 439 begin 440 441 end; 442 443 procedure TDbClient.Save; 444 begin 445 446 end; 447 448 { TDbClientTypes } 449 450 function TDbClientTypes.RegisterClientType(Name: string; 451 DatabaseClass: TDbClientClass; ConnectParamsClass: TDbConnectParamsClass): TDbClientType; 452 begin 453 Result := TDbClientType.Create; 263 454 Result.Name := Name; 264 455 Result.DatabaseClientClass := DatabaseClass; 456 Result.ConnectParmasClass := ConnectParamsClass; 265 457 Add(Result); 266 458 end; 267 459 268 function TD atabaseEngines.FindByName(Name: string): TDatabaseEngine;460 function TDbClientTypes.FindByName(Name: string): TDbClientType; 269 461 var 270 462 I: Integer; 271 463 begin 272 464 I := 0; 273 while (I < Count) and (TD atabaseEngine(Items[I]).Name <> Name) do Inc(I);274 if I < Count then Result := TD atabaseEngine(Items[I])465 while (I < Count) and (TDbClientType(Items[I]).Name <> Name) do Inc(I); 466 if I < Count then Result := TDbClientType(Items[I]) 275 467 else Result := nil; 276 468 end; … … 310 502 end; 311 503 312 { TD atabaseEngine }313 314 procedure TD atabaseEngine.UseTypes(ADataTypes: TDataTypes; Types: TFieldTypeSet);504 { TDbClientType } 505 506 procedure TDbClientType.UseTypes(ADataTypes: TDataTypes; Types: TFieldTypeSet); 315 507 var 316 508 I: TFieldType; … … 321 513 end; 322 514 323 constructor TD atabaseEngine.Create;515 constructor TDbClientType.Create; 324 516 begin 325 517 DataTypes := TDataTypes.Create; … … 327 519 end; 328 520 329 destructor TD atabaseEngine.Destroy;521 destructor TDbClientType.Destroy; 330 522 begin 331 523 DataTypes.Free; … … 506 698 Records.Clear; 507 699 DbRows := TDbRows.Create; 508 D atabase.Client.Query(DbRows, 'SELECT * FROM ' + Name);700 DbClient.Query(DbRows, 'SELECT * FROM ' + Name); 509 701 for I := 0 to DbRows.Count - 1 do begin 510 702 NewRecord := TRecord.Create; … … 531 723 Records.Clear; 532 724 DbRows := TDbRows.Create; 533 D atabase.Client.Query(DbRows, 'SELECT COUNT(*) FROM ' + Name);725 DbClient.Query(DbRows, 'SELECT COUNT(*) FROM ' + Name); 534 726 if DbRows.Count = 1 then begin 535 727 RecordsCount := StrToInt(TDictionaryStringString(DbRows[0]).Items[0].Value); … … 561 753 end; 562 754 563 { TDatabase }564 565 procedure TDatabase.SetEngine(AValue: TDatabaseEngine);566 begin567 if FEngine = AValue then Exit;568 if Assigned(Client) then569 Client.Free;570 FEngine := AValue;571 if Assigned(FEngine) then begin572 Client := Engine.DatabaseClientClass.Create;573 Client.Database := Self;574 end;575 end;576 577 constructor TDatabase.Create;578 begin579 Tables := TTables.Create;580 Tables.Database := Self;581 Engine := nil;582 end;583 584 destructor TDatabase.Destroy;585 begin586 Engine := nil;587 Tables.Free;588 inherited Destroy;589 end;590 591 procedure TDatabase.Load;592 begin593 if Assigned(Client) then Client.Load;594 end;595 596 procedure TDatabase.Save;597 begin598 if Assigned(Client) then Client.Save;599 end;600 601 procedure TDatabase.Clear;602 begin603 Tables.Clear;604 end;605 606 755 end. 607 756
Note:
See TracChangeset
for help on using the changeset viewer.