Changeset 28 for trunk/Forms


Ignore:
Timestamp:
Sep 10, 2022, 10:21:48 PM (2 years ago)
Author:
chronos
Message:
  • Modified: Do not create all application forms at initialization phase but dynamically.
Location:
trunk/Forms
Files:
19 edited

Legend:

Unmodified
Added
Removed
  • trunk/Forms/UFormConnect.lfm

    r27 r28  
    44  Top = 509
    55  Width = 739
    6   Caption = 'Connection parameters:'
     6  Caption = 'Connection parameters'
    77  ClientHeight = 542
    88  ClientWidth = 739
    99  DesignTimePPI = 144
    10   OnShow = FormShow
     10  OnCreate = FormCreate
    1111  LCLVersion = '2.2.2.0'
    1212  object EditName: TEdit
    13     Left = 253
     13    Left = 256
    1414    Height = 43
    1515    Top = 25
    16     Width = 313
     16    Width = 310
    1717    TabOrder = 0
    1818  end
    1919  object Label1: TLabel
    20     Left = 19
     20    Left = 18
    2121    Height = 26
    22     Top = 31
     22    Top = 32
    2323    Width = 56
    2424    Caption = 'Name:'
     
    2626  end
    2727  object Label2: TLabel
    28     Left = 19
     28    Left = 18
    2929    Height = 26
    3030    Top = 80
     
    3333    ParentColor = False
    3434  end
    35   object ComboBox1: TComboBox
     35  object ComboBoxDbEngines: TComboBox
    3636    Left = 256
    3737    Height = 42
    38     Top = 80
    39     Width = 312
     38    Top = 72
     39    Width = 310
    4040    ItemHeight = 0
    41     OnChange = ComboBox1Change
     41    OnChange = ComboBoxDbEnginesChange
    4242    Style = csDropDownList
    4343    TabOrder = 1
    4444  end
    4545  object ButtonOk: TButton
    46     Left = 552
     46    Left = 624
    4747    Height = 30
    48     Top = 482
     48    Top = 496
    4949    Width = 90
    5050    Anchors = [akRight, akBottom]
     
    5454  end
    5555  object ButtonCancel: TButton
    56     Left = 403
     56    Left = 488
    5757    Height = 30
    58     Top = 480
     58    Top = 496
    5959    Width = 90
    6060    Anchors = [akRight, akBottom]
     
    6565  object PageControl1: TPageControl
    6666    Left = 18
    67     Height = 300
     67    Height = 340
    6868    Top = 139
    6969    Width = 703
     
    7474    TabOrder = 4
    7575    object TabSheetXml: TTabSheet
    76       ClientHeight = 296
     76      ClientHeight = 336
    7777      ClientWidth = 693
    7878      object Label3: TLabel
     
    104104    end
    105105    object TabSheetSql: TTabSheet
    106       ClientHeight = 296
     106      ClientHeight = 336
    107107      ClientWidth = 693
    108108      object Label4: TLabel
  • trunk/Forms/UFormConnect.lrj

    r27 r28  
    11{"version":1,"strings":[
    2 {"hash":117590810,"name":"tformconnect.caption","sourcebytes":[67,111,110,110,101,99,116,105,111,110,32,112,97,114,97,109,101,116,101,114,115,58],"value":"Connection parameters:"},
     2{"hash":124789939,"name":"tformconnect.caption","sourcebytes":[67,111,110,110,101,99,116,105,111,110,32,112,97,114,97,109,101,116,101,114,115],"value":"Connection parameters"},
    33{"hash":5538698,"name":"tformconnect.label1.caption","sourcebytes":[78,97,109,101,58],"value":"Name:"},
    44{"hash":230808394,"name":"tformconnect.label2.caption","sourcebytes":[68,97,116,97,98,97,115,101,32,101,110,103,105,110,101,58],"value":"Database engine:"},
  • trunk/Forms/UFormConnect.pas

    r26 r28  
    1515    ButtonOk: TButton;
    1616    ButtonCancel: TButton;
    17     ComboBox1: TComboBox;
     17    ComboBoxDbEngines: TComboBox;
    1818    EditHost: TEdit;
    1919    EditXml: TEdit;
     
    3232    TabSheetSql: TTabSheet;
    3333    procedure ButtonXmlBrowseClick(Sender: TObject);
    34     procedure ComboBox1Change(Sender: TObject);
    35     procedure FormShow(Sender: TObject);
     34    procedure ComboBoxDbEnginesChange(Sender: TObject);
     35    procedure FormCreate(Sender: TObject);
    3636  public
    3737    procedure Load(ConnectProfile: TDbConnectProfile);
    3838    procedure Save(ConnectProfile: TDbConnectProfile);
    39     procedure Init;
     39    procedure ReloadDbEngines;
    4040    procedure UpdateInterface;
    4141  end;
    42 
    43 var
    44   FormConnect: TFormConnect;
    4542
    4643
     
    5249  UCore, UEngineXML, UEngineMySQL;
    5350
     51resourcestring
     52  SAnyFile = 'Any file';
     53  SXmlFiles = 'XML files';
     54
    5455{ TFormConnect }
    55 
    56 procedure TFormConnect.FormShow(Sender: TObject);
    57 begin
    58 end;
    5956
    6057procedure TFormConnect.ButtonXmlBrowseClick(Sender: TObject);
    6158begin
    62   OpenDialog1.Filter := 'XML files (.xml)|*.xml|Any file|*.*';
     59  OpenDialog1.Filter := SXmlFiles + ' (.xml)|*.xml|' + SAnyFile + '|*.*';
    6360  OpenDialog1.InitialDir := ExtractFileDir(EditXml.Text);
    6461  OpenDialog1.FileName := ExtractFileName(EditXml.Text);
     
    6764end;
    6865
    69 procedure TFormConnect.ComboBox1Change(Sender: TObject);
     66procedure TFormConnect.ComboBoxDbEnginesChange(Sender: TObject);
    7067begin
    7168  UpdateInterface;
     69end;
     70
     71procedure TFormConnect.FormCreate(Sender: TObject);
     72begin
     73  ReloadDbEngines;
    7274end;
    7375
     
    7678  EditName.Text := ConnectProfile.Name;
    7779  //EditConnectionString.Text := Database.ConnectionString;
    78   ComboBox1.ItemIndex := ComboBox1.Items.IndexOfObject(ConnectProfile.ClientType);
    79   if (ComboBox1.ItemIndex = -1) and (ComboBox1.Items.Count > 0) then
    80     ComboBox1.ItemIndex := 0;
     80  ComboBoxDbEngines.ItemIndex := ComboBoxDbEngines.Items.IndexOfObject(ConnectProfile.ClientType);
     81  if (ComboBoxDbEngines.ItemIndex = -1) and (ComboBoxDbEngines.Items.Count > 0) then
     82    ComboBoxDbEngines.ItemIndex := 0;
    8183  if ConnectProfile.Params is TDbConnectParamsXml then
    8284    EditXml.Text := TDbConnectParamsXml(ConnectProfile.Params).FileName;
     
    9294  ConnectProfile.Name := EditName.Text;
    9395  //DatabaseClient.ConnectionString := EditConnectionString.Text;
    94   ConnectProfile.ClientType := TDbClientType(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
     96  ConnectProfile.ClientType := TDbClientType(ComboBoxDbEngines.Items.Objects[ComboBoxDbEngines.ItemIndex]);
    9597  if ConnectProfile.Params is TDbConnectParamsXml then
    9698    TDbConnectParamsXml(ConnectProfile.Params).FileName := EditXml.Text;
     
    101103end;
    102104
    103 procedure TFormConnect.Init;
     105procedure TFormConnect.ReloadDbEngines;
    104106var
    105107  I: Integer;
    106108begin
    107   ComboBox1.Items.Clear;
    108   for I := 0 to Core.DbManager.ClientTypes.Count - 1 do
    109     ComboBox1.Items.AddObject(TDbClientType(Core.DbManager.ClientTypes[I]).Name,
    110       Core.DbManager.ClientTypes[I]);
     109  ComboBoxDbEngines.Items.BeginUpdate;
     110  try
     111    ComboBoxDbEngines.Items.Clear;
     112    for I := 0 to Core.DbManager.ClientTypes.Count - 1 do
     113      ComboBoxDbEngines.Items.AddObject(Core.DbManager.ClientTypes[I].Name,
     114        Core.DbManager.ClientTypes[I]);
     115  finally
     116    ComboBoxDbEngines.Items.Endupdate;
     117  end;
    111118end;
    112119
    113120procedure TFormConnect.UpdateInterface;
    114121begin
    115   PageControl1.TabIndex := ComboBox1.ItemIndex;
     122  PageControl1.TabIndex := ComboBoxDbEngines.ItemIndex;
    116123end;
    117124
  • trunk/Forms/UFormDatabases.pas

    r26 r28  
    4343  end;
    4444
    45 var
    46   FormDatabases: TFormDatabases;
    4745
    4846implementation
     
    5250uses
    5351  UCore, UFormConnect;
     52
     53resourcestring
     54  SRemoveDatabaseConnection = 'Remove database connection';
     55  SRemoveDatabaseConnectionQuery = 'Do you want to really remove database connection %s?';
     56  SNewDatabase = 'New database';
    5457
    5558{ TFormDatabases }
     
    7174begin
    7275  if Assigned(ListView1.Selected) then begin
    73     if MessageDlg('Remove database connection', 'Do you want to really remove database connection ' +
    74     TDbConnectProfile(ListView1.Selected.Data).Name, mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
     76    if MessageDlg(SRemoveDatabaseConnection, Format(SRemoveDatabaseConnectionQuery, [
     77    TDbConnectProfile(ListView1.Selected.Data).Name]), mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
    7578      Core.DbManager.ConnectProfiles.Remove(ListView1.Selected.Data);
    7679      ReloadList;
     
    8487begin
    8588  NewConnectProfile := TDbConnectProfile.Create;
    86   NewConnectProfile.Name := 'New database';
    87   FormConnect.Load(NewConnectProfile);
    88   if FormConnect.ShowModal = mrOk then begin
    89     FormConnect.Save(NewConnectProfile);
    90     Core.DbManager.ConnectProfiles.Add(NewConnectProfile);
    91     ReloadList;
    92   end else NewConnectProfile.Free;
     89  NewConnectProfile.Name := SNewDatabase;
     90  with TFormConnect.Create(nil) do
     91  try
     92    Load(NewConnectProfile);
     93    if ShowModal = mrOk then begin
     94      Save(NewConnectProfile);
     95      Core.DbManager.ConnectProfiles.Add(NewConnectProfile);
     96      ReloadList;
     97    end else NewConnectProfile.Free;
     98  finally
     99    Free;
     100  end;
    93101end;
    94102
     
    96104begin
    97105  if Assigned(ListView1.Selected) then begin
    98     FormConnect.Load(TDbConnectProfile(ListView1.Selected.Data));
    99     if FormConnect.ShowModal = mrOk then begin
    100       FormConnect.Save(TDbConnectProfile(ListView1.Selected.Data));
    101       ReloadList;
     106    with TFormConnect.Create(nil) do
     107    try
     108      Load(TDbConnectProfile(ListView1.Selected.Data));
     109      if ShowModal = mrOk then begin
     110        Save(TDbConnectProfile(ListView1.Selected.Data));
     111        ReloadList;
     112      end;
     113    finally
     114      Free;
    102115    end;
    103116  end;
  • trunk/Forms/UFormField.lfm

    r20 r28  
    11object FormField: TFormField
    22  Left = 721
    3   Height = 444
     3  Height = 533
    44  Top = 85
    5   Width = 974
     5  Width = 1169
    66  Caption = 'Field'
    7   ClientHeight = 444
    8   ClientWidth = 974
    9   DesignTimePPI = 120
     7  ClientHeight = 533
     8  ClientWidth = 1169
     9  DesignTimePPI = 144
    1010  OnCreate = FormCreate
    1111  OnShow = FormShow
    1212  Position = poMainFormCenter
    13   LCLVersion = '1.8.0.6'
     13  LCLVersion = '2.2.2.0'
    1414  object EditName: TEdit
    15     Left = 168
    16     Height = 28
    17     Top = 11
    18     Width = 264
     15    Left = 202
     16    Height = 43
     17    Top = 13
     18    Width = 317
    1919    TabOrder = 0
    2020  end
    2121  object Label1: TLabel
    22     Left = 17
    23     Height = 20
    24     Top = 21
    25     Width = 43
     22    Left = 20
     23    Height = 26
     24    Top = 25
     25    Width = 56
    2626    Caption = 'Name:'
    2727    ParentColor = False
    2828  end
    2929  object ButtonOk: TButton
    30     Left = 880
    31     Height = 25
    32     Top = 400
    33     Width = 75
     30    Left = 1056
     31    Height = 30
     32    Top = 480
     33    Width = 90
    3434    Anchors = [akRight, akBottom]
    3535    Caption = 'Ok'
     
    3838  end
    3939  object EditTextBefore: TEdit
    40     Left = 167
    41     Height = 28
    42     Top = 88
    43     Width = 265
     40    Left = 200
     41    Height = 43
     42    Top = 106
     43    Width = 318
    4444    TabOrder = 2
    4545  end
    4646  object Label2: TLabel
    47     Left = 16
    48     Height = 20
    49     Top = 98
    50     Width = 79
     47    Left = 19
     48    Height = 26
     49    Top = 118
     50    Width = 100
    5151    Caption = 'Text before:'
    5252    ParentColor = False
    5353  end
    5454  object EditTextAfter: TEdit
    55     Left = 167
    56     Height = 28
    57     Top = 136
    58     Width = 265
     55    Left = 200
     56    Height = 43
     57    Top = 163
     58    Width = 318
    5959    TabOrder = 3
    6060  end
    6161  object Label3: TLabel
    62     Left = 16
    63     Height = 20
    64     Top = 144
    65     Width = 66
     62    Left = 19
     63    Height = 26
     64    Top = 173
     65    Width = 84
    6666    Caption = 'Text after:'
    6767    ParentColor = False
    6868  end
    6969  object Label4: TLabel
    70     Left = 17
    71     Height = 20
    72     Top = 56
    73     Width = 68
     70    Left = 20
     71    Height = 26
     72    Top = 67
     73    Width = 85
    7474    Caption = 'Data type:'
    7575    ParentColor = False
    7676  end
    7777  object ComboBoxType: TComboBox
    78     Left = 167
    79     Height = 28
    80     Top = 48
    81     Width = 265
    82     ItemHeight = 20
     78    Left = 200
     79    Height = 42
     80    Top = 58
     81    Width = 318
     82    ItemHeight = 0
    8383    OnChange = ComboBoxTypeChange
    8484    Style = csDropDownList
     
    8686  end
    8787  object ButtonCancel: TButton
    88     Left = 784
    89     Height = 25
    90     Top = 400
    91     Width = 75
     88    Left = 941
     89    Height = 30
     90    Top = 480
     91    Width = 90
    9292    Anchors = [akRight, akBottom]
    9393    Caption = 'Cancel'
     
    9696  end
    9797  object PageControl1: TPageControl
    98     Left = 16
    99     Height = 200
    100     Top = 184
    101     Width = 936
     98    Left = 19
     99    Height = 240
     100    Top = 221
     101    Width = 1124
    102102    ActivePage = TabSheetBoolean
    103103    Anchors = [akTop, akLeft, akRight, akBottom]
     
    106106    TabOrder = 6
    107107    object TabSheetString: TTabSheet
    108       ClientHeight = 194
    109       ClientWidth = 930
     108      ClientHeight = 236
     109      ClientWidth = 1114
    110110      object EditStringDefault: TEdit
    111         Left = 160
    112         Height = 36
    113         Top = 8
    114         Width = 265
     111        Left = 192
     112        Height = 43
     113        Top = 10
     114        Width = 318
    115115        TabOrder = 0
    116116      end
    117117      object Label5: TLabel
    118         Left = 16
    119         Height = 26
    120         Top = 8
    121         Width = 117
     118        Left = 19
     119        Height = 26
     120        Top = 10
     121        Width = 116
    122122        Caption = 'Default value:'
    123123        ParentColor = False
     
    125125    end
    126126    object TabSheetInteger: TTabSheet
    127       ClientHeight = 194
    128       ClientWidth = 930
     127      ClientHeight = 236
     128      ClientWidth = 1114
    129129      object Label10: TLabel
    130         Left = 12
    131         Height = 26
    132         Top = 21
     130        Left = 14
     131        Height = 26
     132        Top = 25
    133133        Width = 87
    134134        Caption = 'Minimum:'
     
    136136      end
    137137      object SpinEditMin: TSpinEdit
    138         Left = 153
    139         Height = 36
    140         Top = 19
    141         Width = 255
     138        Left = 184
     139        Height = 43
     140        Top = 23
     141        Width = 306
    142142        MaxValue = 10000000
    143143        TabOrder = 0
    144144      end
    145145      object SpinEditMax: TSpinEdit
    146         Left = 153
    147         Height = 36
    148         Top = 56
    149         Width = 255
     146        Left = 184
     147        Height = 43
     148        Top = 67
     149        Width = 306
    150150        TabOrder = 1
    151151      end
    152152      object Label11: TLabel
    153         Left = 12
    154         Height = 26
    155         Top = 58
     153        Left = 14
     154        Height = 26
     155        Top = 70
    156156        Width = 91
    157157        Caption = 'Maximum:'
     
    160160    end
    161161    object TabSheetDateTime: TTabSheet
    162       ClientHeight = 194
    163       ClientWidth = 930
     162      ClientHeight = 236
     163      ClientWidth = 1114
    164164      object DateEditMin: TDateEdit
    165         Left = 136
    166         Height = 36
    167         Top = 24
    168         Width = 216
     165        Left = 163
     166        Height = 43
     167        Top = 29
     168        Width = 259
    169169        CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
    170170        DateOrder = doNone
    171         ButtonWidth = 23
     171        ButtonWidth = 28
    172172        NumGlyphs = 1
    173173        MaxLength = 0
     
    175175      end
    176176      object Label6: TLabel
    177         Left = 16
    178         Height = 26
    179         Top = 32
     177        Left = 19
     178        Height = 26
     179        Top = 38
    180180        Width = 87
    181181        Caption = 'Minimum:'
     
    183183      end
    184184      object DateEditMax: TDateEdit
    185         Left = 136
    186         Height = 36
    187         Top = 72
    188         Width = 216
     185        Left = 163
     186        Height = 43
     187        Top = 86
     188        Width = 259
    189189        CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
    190190        DateOrder = doNone
    191         ButtonWidth = 23
     191        ButtonWidth = 28
    192192        NumGlyphs = 1
    193193        MaxLength = 0
     
    195195      end
    196196      object Label7: TLabel
    197         Left = 16
    198         Height = 26
    199         Top = 80
     197        Left = 19
     198        Height = 26
     199        Top = 96
    200200        Width = 91
    201201        Caption = 'Maximum:'
     
    206206    end
    207207    object TabSheetFloat: TTabSheet
    208       ClientHeight = 194
    209       ClientWidth = 930
     208      ClientHeight = 236
     209      ClientWidth = 1114
    210210      object FloatSpinEditMin: TFloatSpinEdit
    211         Left = 144
    212         Height = 36
    213         Top = 16
    214         Width = 266
    215         Increment = 1
     211        Left = 173
     212        Height = 43
     213        Top = 19
     214        Width = 319
    216215        MaxValue = 100000000
    217         MinValue = 0
    218         TabOrder = 0
    219         Value = 0
     216        TabOrder = 0
    220217      end
    221218      object Label8: TLabel
    222         Left = 8
    223         Height = 26
    224         Top = 25
     219        Left = 10
     220        Height = 26
     221        Top = 30
    225222        Width = 87
    226223        Caption = 'Minimum:'
     
    228225      end
    229226      object FloatSpinEditMax: TFloatSpinEdit
    230         Left = 144
    231         Height = 36
    232         Top = 64
    233         Width = 266
    234         Increment = 1
     227        Left = 173
     228        Height = 43
     229        Top = 77
     230        Width = 319
    235231        MaxValue = 100
    236         MinValue = 0
    237232        TabOrder = 1
    238         Value = 0
    239233      end
    240234      object Label9: TLabel
    241         Left = 8
    242         Height = 26
    243         Top = 73
     235        Left = 10
     236        Height = 26
     237        Top = 88
    244238        Width = 91
    245239        Caption = 'Maximum:'
  • trunk/Forms/UFormField.pas

    r26 r28  
    4949    procedure Save(Field: TField);
    5050  end;
    51 
    52 var
    53   FormField: TFormField;
    5451
    5552
  • trunk/Forms/UFormFields.pas

    r26 r28  
    4545  end;
    4646
    47 var
    48   FormFields: TFormFields;
    49 
    5047implementation
    5148
     
    8481  if Fields.Table.DbClient.ConnectProfile.ClientType.DataTypes.Count > 0 then
    8582    NewField.DataType := TDataType(Fields.Table.DbClient.ConnectProfile.ClientType.DataTypes[0]);
    86   FormField.Load(NewField);
    87   if FormField.ShowModal = mrOk then begin
    88     FormField.Save(NewField);
    89     Fields.Table.DbClient.Query('INSERT INTO ModelField ( Name , Caption , Model , DataType ) VALUES ( ' +
    90       NewField.Name + ' , ' + NewField.TextBefore + ' , ' + TableName + ' , ' + NewField.DataType.Name + ' )');
    91     ReloadList;
    92   end else NewField.Free;
     83  with TFormField.Create(nil) do
     84  try
     85    Load(NewField);
     86    if ShowModal = mrOk then begin
     87      Save(NewField);
     88      Fields.Table.DbClient.Query('INSERT INTO ModelField ( Name , Caption , Model , DataType ) VALUES ( ' +
     89        NewField.Name + ' , ' + NewField.TextBefore + ' , ' + TableName + ' , ' + NewField.DataType.Name + ' )');
     90      ReloadList;
     91    end else NewField.Free;
     92  finally
     93    Free;
     94  end;
    9395end;
    9496
     
    101103begin
    102104  if Assigned(ListView1.Selected) then begin
    103     FormField.Load(TField(ListView1.Selected.Data));
    104     if FormField.ShowModal = mrOk then begin
    105       FormField.Save(TField(ListView1.Selected.Data));
    106       Fields.Table.DbClient.Query('UPDATE ModelField SET Caption = ' + TField(ListView1.Selected.Data).TextBefore +
    107         ' , DataType = ' + TField(ListView1.Selected.Data).DataType.Name +
    108         ' WHERE Model = ' + Fields.Table.Name +' , Name = ' + TField(ListView1.Selected.Data).Name);
    109       ReloadList;
     105    with TFormField.Create(nil) do
     106    try
     107      Load(TField(ListView1.Selected.Data));
     108      if ShowModal = mrOk then begin
     109        Save(TField(ListView1.Selected.Data));
     110        Fields.Table.DbClient.Query('UPDATE ModelField SET Caption = ' + TField(ListView1.Selected.Data).TextBefore +
     111          ' , DataType = ' + TField(ListView1.Selected.Data).DataType.Name +
     112          ' WHERE Model = ' + Fields.Table.Name +' , Name = ' + TField(ListView1.Selected.Data).Name);
     113        ReloadList;
     114      end;
     115    finally
     116      Free;
    110117    end;
    111118  end;
     
    160167  Fields.Clear;
    161168  DbRows := TDbRows.Create;
    162   Fields.Table.DbClient.Query('SELECT * FROM ModelField WHERE Model = ' + Fields.Table.Name, DbRows);
    163   for I := 0 to DbRows.Count - 1 do begin
    164     NewField := Fields.AddNew(DbRows[I].Items['Name'],
    165       Fields.Table.DbClient.DbManager.DataTypes.SearchByName(DbRows[I].Items['DataType']));
    166     NewField.TextBefore := DbRows[I].Items['Caption'];
     169  try
     170    Fields.Table.DbClient.Query('SELECT * FROM ModelField WHERE Model = ' + Fields.Table.Name, DbRows);
     171    for I := 0 to DbRows.Count - 1 do begin
     172      NewField := Fields.AddNew(DbRows[I].Items['Name'],
     173        Fields.Table.DbClient.DbManager.DataTypes.SearchByName(DbRows[I].Items['DataType']));
     174      NewField.TextBefore := DbRows[I].Items['Caption'];
     175    end;
     176  finally
     177    DbRows.Free;
    167178  end;
    168   DbRows.Free;
    169179
    170180  ListView1.Items.Count := Fields.Count;
  • trunk/Forms/UFormMain.lfm

    r27 r28  
    11object FormMain: TFormMain
    2   Left = 449
    3   Height = 1274
    4   Top = 108
    5   Width = 1875
     2  Left = 403
     3  Height = 669
     4  Top = 365
     5  Width = 1088
    66  Caption = 'MyData'
    7   ClientHeight = 1240
    8   ClientWidth = 1875
     7  ClientHeight = 635
     8  ClientWidth = 1088
    99  DesignTimePPI = 144
    1010  Menu = MainMenu1
    1111  OnActivate = FormActivate
    1212  OnClose = FormClose
     13  OnCreate = FormCreate
     14  OnDestroy = FormDestroy
    1315  OnShow = FormShow
    1416  LCLVersion = '2.2.2.0'
     
    1719    Left = 0
    1820    Height = 28
    19     Top = 1212
    20     Width = 1875
     21    Top = 607
     22    Width = 1088
    2123    Panels = <>
    2224  end
     
    2527    Height = 44
    2628    Top = 0
    27     Width = 1875
     29    Width = 1088
    2830    AutoSize = True
    2931    Bands = <   
     
    7072  object MainMenu1: TMainMenu
    7173    Images = Core.ImageList1
    72     Left = 1236
    73     Top = 324
     74    Left = 112
     75    Top = 112
    7476    object MenuItem1: TMenuItem
    7577      Caption = 'Database'
  • trunk/Forms/UFormMain.pas

    r27 r28  
    55uses
    66  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Menus,
    7   ComCtrls;
     7  ComCtrls, UFormTables;
    88
    99type
     
    3030    procedure FormActivate(Sender: TObject);
    3131    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
     32    procedure FormCreate(Sender: TObject);
     33    procedure FormDestroy(Sender: TObject);
    3234    procedure FormShow(Sender: TObject);
    3335  private
    3436    procedure SetToolbarHints;
    3537  public
     38    FormTables: TFormTables;
    3639    procedure DockInit;
    3740    procedure UpdateInterface;
     
    4750
    4851uses
    49   UCore, UFormTables;
     52  UCore;
    5053
    5154{ TFormMain }
     
    6265  Core.Done;
    6366  Core.PersistentForm1.Save(Self);
     67end;
     68
     69procedure TFormMain.FormCreate(Sender: TObject);
     70begin
     71  FormTables := TFormTables.Create(nil);
     72end;
     73
     74procedure TFormMain.FormDestroy(Sender: TObject);
     75begin
     76  FreeAndNil(FormTables);
    6477end;
    6578
     
    8699    NewCaption := Core.DbClient.ConnectProfile.Name + ' - ' + NewCaption;
    87100  FormMain.Caption := NewCaption;
     101  FormTables.UpdateInterface;
    88102end;
    89103
  • trunk/Forms/UFormPreferences.pas

    r26 r28  
    2323  end;
    2424
    25 var
    26   FormPreferences: TFormPreferences;
    2725
    2826implementation
  • trunk/Forms/UFormRecord.pas

    r26 r28  
    55uses
    66  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
    7   ComCtrls, ActnList, StdCtrls, EditBtn, UDatabase, Contnrs, Spin;
     7  ComCtrls, ActnList, StdCtrls, EditBtn, UDatabase, Spin, Generics.Collections;
    88
    99type
     
    2626    Table: TTable;
    2727    Row: TRecord;
    28     Controls: TObjectList; // TListObject<TControl>
    29     Labels: TObjectList; // TListObject<TControl>
     28    Controls: TObjectList<TControl>;
     29    Labels: TObjectList<TControl>;
    3030    procedure ReloadControls;
    3131    procedure Load(DataRecord: TRecord);
     
    3333  end;
    3434
    35 var
    36   FormRecord: TFormRecord;
    3735
    3836implementation
     
    4341{$R *.lfm}
    4442
     43resourcestring
     44  STableRecordEdit = 'Table record edit';
     45
    4546{ TFormRecord }
    4647
    4748procedure TFormRecord.FormShow(Sender: TObject);
    4849begin
    49   Caption := 'Table record edit - ' + Table.Caption;
     50  Caption := STableRecordEdit + ' - ' + Table.Caption;
    5051  ReloadControls;
    5152end;
     
    6364procedure TFormRecord.FormCreate(Sender: TObject);
    6465begin
    65   Controls := TObjectList.Create;
    66   Labels := TObjectList.Create;
     66  Controls := TObjectList<TControl>.Create;
     67  Labels := TObjectList<TControl>.Create;
    6768end;
    6869
    6970procedure TFormRecord.FormDestroy(Sender: TObject);
    7071begin
    71   Labels.Free;
    72   Controls.Free;
     72  FreeAndNil(Labels);
     73  FreeAndNil(Controls);
    7374end;
    7475
  • trunk/Forms/UFormRecords.lfm

    r15 r28  
    11object FormRecords: TFormRecords
    22  Left = 621
    3   Height = 549
     3  Height = 824
    44  Top = 308
    5   Width = 897
     5  Width = 1346
    66  Caption = 'Records'
    7   ClientHeight = 549
    8   ClientWidth = 897
     7  ClientHeight = 824
     8  ClientWidth = 1346
     9  DesignTimePPI = 144
    910  OnShow = FormShow
    1011  Position = poMainFormCenter
    11   LCLVersion = '1.8.0.4'
    12   object ListView1: TListView
    13     Left = 4
    14     Height = 505
    15     Top = 4
    16     Width = 889
     12  LCLVersion = '2.2.2.0'
     13  object ListViewRecords: TListView
     14    Left = 6
     15    Height = 758
     16    Top = 6
     17    Width = 1334
    1718    Align = alClient
    18     BorderSpacing.Around = 4
     19    BorderSpacing.Around = 6
    1920    Columns = <   
    2021      item
    2122        Caption = 'Name'
    22         Width = 500
     23        Width = 750
    2324      end   
    2425      item
    2526        Caption = 'Records'
    26         Width = 453
     27        Width = 680
    2728      end>
    2829    OwnerData = True
     
    3233    TabOrder = 0
    3334    ViewStyle = vsReport
    34     OnData = ListView1Data
     35    OnData = ListViewRecordsData
    3536    OnDblClick = AModifyExecute
    36     OnSelectItem = ListView1SelectItem
     37    OnSelectItem = ListViewRecordsSelectItem
    3738  end
    3839  object ToolBar1: TToolBar
    3940    Left = 0
    40     Height = 36
    41     Top = 513
    42     Width = 897
     41    Height = 54
     42    Top = 770
     43    Width = 1346
    4344    Align = alBottom
    44     ButtonHeight = 32
    45     ButtonWidth = 32
     45    ButtonHeight = 48
     46    ButtonWidth = 48
    4647    Images = Core.ImageList1
    4748    ParentShowHint = False
     
    5455    end
    5556    object ToolButton2: TToolButton
    56       Left = 37
     57      Left = 49
    5758      Top = 2
    5859      Action = AModify
    5960    end
    6061    object ToolButton3: TToolButton
    61       Left = 73
     62      Left = 97
    6263      Top = 2
    6364      Action = ARemove
     
    6667  object ActionList1: TActionList
    6768    Images = Core.ImageList1
    68     left = 350
    69     top = 168
     69    Left = 525
     70    Top = 252
    7071    object AAdd: TAction
    7172      Caption = 'Add'
     
    8687  object PopupMenu1: TPopupMenu
    8788    Images = Core.ImageList1
    88     left = 492
    89     top = 172
     89    Left = 738
     90    Top = 258
    9091    object MenuItem1: TMenuItem
    9192      Action = AAdd
  • trunk/Forms/UFormRecords.lrj

    r26 r28  
    11{"version":1,"strings":[
    22{"hash":146434275,"name":"tformrecords.caption","sourcebytes":[82,101,99,111,114,100,115],"value":"Records"},
    3 {"hash":346165,"name":"tformrecords.listview1.columns[0].caption","sourcebytes":[78,97,109,101],"value":"Name"},
    4 {"hash":146434275,"name":"tformrecords.listview1.columns[1].caption","sourcebytes":[82,101,99,111,114,100,115],"value":"Records"},
     3{"hash":346165,"name":"tformrecords.listviewrecords.columns[0].caption","sourcebytes":[78,97,109,101],"value":"Name"},
     4{"hash":146434275,"name":"tformrecords.listviewrecords.columns[1].caption","sourcebytes":[82,101,99,111,114,100,115],"value":"Records"},
    55{"hash":18340,"name":"tformrecords.aadd.caption","sourcebytes":[65,100,100],"value":"Add"},
    66{"hash":88453081,"name":"tformrecords.amodify.caption","sourcebytes":[77,111,100,105,102,121],"value":"Modify"},
  • trunk/Forms/UFormRecords.pas

    r26 r28  
    1616    AModify: TAction;
    1717    ARemove: TAction;
    18     ListView1: TListView;
     18    ListViewRecords: TListView;
    1919    MenuItem1: TMenuItem;
    2020    MenuItem2: TMenuItem;
     
    2929    procedure ARemoveExecute(Sender: TObject);
    3030    procedure FormShow(Sender: TObject);
    31     procedure ListView1Data(Sender: TObject; Item: TListItem);
    32     procedure ListView1SelectItem(Sender: TObject; Item: TListItem;
     31    procedure ListViewRecordsData(Sender: TObject; Item: TListItem);
     32    procedure ListViewRecordsSelectItem(Sender: TObject; Item: TListItem;
    3333      Selected: Boolean);
    3434  public
     
    3838  end;
    3939
    40 var
    41   FormRecords: TFormRecords;
    4240
    4341implementation
     
    6563end;
    6664
    67 procedure TFormRecords.ListView1Data(Sender: TObject; Item: TListItem);
     65procedure TFormRecords.ListViewRecordsData(Sender: TObject; Item: TListItem);
    6866var
    6967  I: Integer;
     
    7977end;
    8078
    81 procedure TFormRecords.ListView1SelectItem(Sender: TObject; Item: TListItem;
     79procedure TFormRecords.ListViewRecordsSelectItem(Sender: TObject; Item: TListItem;
    8280  Selected: Boolean);
    8381begin
     
    8785procedure TFormRecords.AModifyExecute(Sender: TObject);
    8886begin
    89   if Assigned(ListView1.Selected) then begin
    90     FormRecord.Table := Table;
    91     FormRecord.Load(TRecord(ListView1.Selected.Data));
    92     if FormRecord.ShowModal = mrOk then begin
    93       FormRecord.Save(TRecord(ListView1.Selected.Data));
    94       ReloadList;
     87  if Assigned(ListViewRecords.Selected) then begin
     88    with TFormRecord.Create(nil) do
     89    try
     90      Table := Self.Table;
     91      Load(TRecord(ListViewRecords.Selected.Data));
     92      if ShowModal = mrOk then begin
     93        Save(TRecord(ListViewRecords.Selected.Data));
     94        ReloadList;
     95      end;
     96    finally
     97      Free;
    9598    end;
    9699  end;
     
    99102procedure TFormRecords.ARemoveExecute(Sender: TObject);
    100103begin
    101   if Assigned(ListView1.Selected) then
     104  if Assigned(ListViewRecords.Selected) then
    102105  if MessageDlg(SRemoveRecord, SRemoveRecordConfirm,
    103106  mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
    104     Table.Records.Remove(ListView1.Selected.Data);
     107    Table.Records.Remove(ListViewRecords.Selected.Data);
    105108    ReloadList;
    106109  end;
     
    123126  end;
    124127
    125   FormRecord.Table := Table;
    126   FormRecord.Load(NewRecord);
    127   if FormRecord.ShowModal = mrOk then begin
    128     FormRecord.Save(NewRecord);
    129     Table.Records.Add(NewRecord);
    130     ReloadList;
    131   end else NewRecord.Free;
     128  with TFormRecord.Create(nil) do
     129  try
     130    Table := Self.Table;
     131    Load(NewRecord);
     132    if ShowModal = mrOk then begin
     133      Save(NewRecord);
     134      Table.Records.Add(NewRecord);
     135      ReloadList;
     136    end else NewRecord.Free;
     137  finally
     138    Free;
     139  end;
    132140end;
    133141
    134142procedure TFormRecords.UpdateInterface;
    135143begin
    136   AModify.Enabled := Assigned(ListView1.Selected);
    137   ARemove.Enabled := Assigned(ListView1.Selected);
     144  AModify.Enabled := Assigned(ListViewRecords.Selected);
     145  ARemove.Enabled := Assigned(ListViewRecords.Selected);
    138146end;
    139147
     
    144152  Table.LoadRecords;
    145153
    146   ListView1.Columns.BeginUpdate;
    147   while ListView1.Columns.Count > Table.Fields.Count do
    148     ListView1.Columns[ListView1.ColumnCount - 1].Free;
    149   while ListView1.Columns.Count < Table.Fields.Count do
    150     ListView1.Columns.Add;
     154  ListViewRecords.Columns.BeginUpdate;
     155  while ListViewRecords.Columns.Count > Table.Fields.Count do
     156    ListViewRecords.Columns[ListViewRecords.ColumnCount - 1].Free;
     157  while ListViewRecords.Columns.Count < Table.Fields.Count do
     158    ListViewRecords.Columns.Add;
    151159  for I := 0 to Table.Fields.Count - 1 do begin
    152     ListView1.Columns[I].Caption := TField(Table.Fields[I]).TextBefore;
    153     ListView1.Columns[I].Width := 200;
     160    ListViewRecords.Columns[I].Caption := TField(Table.Fields[I]).TextBefore;
     161    ListViewRecords.Columns[I].Width := 200;
    154162  end;
    155   ListView1.Columns.EndUpdate;
     163  ListViewRecords.Columns.EndUpdate;
    156164
    157   ListView1.Items.Count := Table.Records.Count;
    158   ListView1.Repaint;
     165  ListViewRecords.Items.Count := Table.Records.Count;
     166  ListViewRecords.Repaint;
    159167end;
    160168
  • trunk/Forms/UFormTable.lfm

    r5 r28  
    11object FormTable: TFormTable
    22  Left = 812
    3   Height = 351
     3  Height = 526
    44  Top = 164
    5   Width = 725
     5  Width = 665
    66  Caption = 'Table'
    7   ClientHeight = 351
    8   ClientWidth = 725
     7  ClientHeight = 526
     8  ClientWidth = 665
     9  DesignTimePPI = 144
    910  Position = poMainFormCenter
    10   LCLVersion = '1.3'
     11  LCLVersion = '2.2.2.0'
    1112  object EditName: TEdit
    12     Left = 168
    13     Height = 35
    14     Top = 11
    15     Width = 156
     13    Left = 250
     14    Height = 43
     15    Top = 24
     16    Width = 234
    1617    TabOrder = 0
    1718  end
    1819  object Label1: TLabel
    19     Left = 17
    20     Height = 25
    21     Top = 21
    22     Width = 131
     20    Left = 24
     21    Height = 26
     22    Top = 32
     23    Width = 119
    2324    Caption = 'System name:'
    2425    ParentColor = False
    2526  end
    2627  object ButtonOk: TButton
    27     Left = 572
    28     Height = 25
    29     Top = 302
    30     Width = 75
     28    Left = 436
     29    Height = 38
     30    Top = 452
     31    Width = 112
    3132    Anchors = [akRight, akBottom]
    3233    Caption = 'Ok'
     
    3536  end
    3637  object EditCaption: TEdit
    37     Left = 167
    38     Height = 35
    39     Top = 56
    40     Width = 156
     38    Left = 250
     39    Height = 43
     40    Top = 84
     41    Width = 234
    4142    TabOrder = 2
    4243  end
    4344  object Label2: TLabel
    44     Left = 16
    45     Height = 25
    46     Top = 66
    47     Width = 78
     45    Left = 24
     46    Height = 26
     47    Top = 96
     48    Width = 70
    4849    Caption = 'Caption:'
    4950    ParentColor = False
    5051  end
    5152  object ButtonCancel: TButton
    52     Left = 472
    53     Height = 25
    54     Top = 302
    55     Width = 75
     53    Left = 286
     54    Height = 38
     55    Top = 452
     56    Width = 112
    5657    Anchors = [akRight, akBottom]
    5758    Caption = 'Cancel'
  • trunk/Forms/UFormTable.pas

    r26 r28  
    2323  end;
    2424
    25 var
    26   FormTable: TFormTable;
    27 
    2825
    2926implementation
  • trunk/Forms/UFormTables.lfm

    r26 r28  
    1212  OnShow = FormShow
    1313  LCLVersion = '2.2.2.0'
    14   object ListView1: TListView
     14  object ListViewTables: TListView
    1515    Left = 5
    1616    Height = 739
     
    3434    TabOrder = 0
    3535    ViewStyle = vsReport
    36     OnData = ListView1Data
     36    OnData = ListViewTablesData
    3737    OnDblClick = AShowRecordsExecute
    38     OnSelectItem = ListView1SelectItem
     38    OnSelectItem = ListViewTablesSelectItem
    3939  end
    4040  object ToolBar1: TToolBar
  • trunk/Forms/UFormTables.lrj

    r26 r28  
    11{"version":1,"strings":[
    22{"hash":94868163,"name":"tformtables.caption","sourcebytes":[84,97,98,108,101,115],"value":"Tables"},
    3 {"hash":346165,"name":"tformtables.listview1.columns[0].caption","sourcebytes":[78,97,109,101],"value":"Name"},
    4 {"hash":146434275,"name":"tformtables.listview1.columns[1].caption","sourcebytes":[82,101,99,111,114,100,115],"value":"Records"},
     3{"hash":346165,"name":"tformtables.listviewtables.columns[0].caption","sourcebytes":[78,97,109,101],"value":"Name"},
     4{"hash":146434275,"name":"tformtables.listviewtables.columns[1].caption","sourcebytes":[82,101,99,111,114,100,115],"value":"Records"},
    55{"hash":18340,"name":"tformtables.aadd.caption","sourcebytes":[65,100,100],"value":"Add"},
    66{"hash":88453081,"name":"tformtables.amodify.caption","sourcebytes":[77,111,100,105,102,121],"value":"Modify"},
  • trunk/Forms/UFormTables.pas

    r26 r28  
    1818    ARemove: TAction;
    1919    ActionList1: TActionList;
    20     ListView1: TListView;
     20    ListViewTables: TListView;
    2121    MenuItem1: TMenuItem;
    2222    MenuItem2: TMenuItem;
     
    3939    procedure FormDestroy(Sender: TObject);
    4040    procedure FormShow(Sender: TObject);
    41     procedure ListView1Data(Sender: TObject; Item: TListItem);
    42     procedure ListView1SelectItem(Sender: TObject; Item: TListItem;
     41    procedure ListViewTablesData(Sender: TObject; Item: TListItem);
     42    procedure ListViewTablesSelectItem(Sender: TObject; Item: TListItem;
    4343      Selected: Boolean);
    4444  private
     
    5353  end;
    5454
    55 var
    56   FormTables: TFormTables;
    57 
    5855
    5956implementation
     
    7168{ TFormTables }
    7269
    73 procedure TFormTables.ListView1Data(Sender: TObject; Item: TListItem);
     70procedure TFormTables.ListViewTablesData(Sender: TObject; Item: TListItem);
    7471begin
    7572  if (Item.Index >= 0) and (Item.Index < FTables.Count) then
    7673  with TTable(FTables[Item.Index]) do begin
    7774    Item.Caption := Caption;
    78     Item.SubItems.Add(IntToStr(RecordsCount));
     75    Item.SubItems.Add(IntToStr(RecordsCount) + ' ' + IntToStr(Fields.Count));
    7976    Item.Data := FTables[Item.Index];
    8077  end
    8178end;
    8279
    83 procedure TFormTables.ListView1SelectItem(Sender: TObject; Item: TListItem;
     80procedure TFormTables.ListViewTablesSelectItem(Sender: TObject; Item: TListItem;
    8481  Selected: Boolean);
    8582begin
     
    9794procedure TFormTables.UpdateInterface;
    9895begin
    99   ListView1.Enabled := Assigned(Tables);
    100   AAdd.Enabled := Assigned(Tables);
    101   AModify.Enabled := Assigned(Tables) and Assigned(ListView1.Selected);
    102   ARemove.Enabled := Assigned(Tables) and Assigned(ListView1.Selected);
    103   AShowRecords.Enabled := Assigned(Tables) and Assigned(ListView1.Selected);
    104   AShowFields.Enabled := Assigned(Tables) and Assigned(ListView1.Selected);
     96  ListViewTables.Enabled := Assigned(Tables) and Assigned(FDbClient);
     97  AAdd.Enabled := Assigned(Tables) and Assigned(FDbClient);
     98  AModify.Enabled := Assigned(Tables) and Assigned(ListViewTables.Selected) and Assigned(FDbClient);
     99  ARemove.Enabled := Assigned(Tables) and Assigned(ListViewTables.Selected) and Assigned(FDbClient);
     100  AShowRecords.Enabled := Assigned(Tables) and Assigned(ListViewTables.Selected) and Assigned(FDbClient);
     101  AShowFields.Enabled := Assigned(Tables) and Assigned(ListViewTables.Selected) and Assigned(FDbClient);
    105102end;
    106103
     
    112109  NewTable.Name := SNewTable;
    113110  NewTable.DbClient := Tables.DbClient;
    114   FormTable.Load(NewTable);
    115   if FormTable.ShowModal = mrOk then begin
    116     FormTable.Save(NewTable);
    117     Tables.DbClient.Query('INSERT INTO Model ( Name , Caption ) VALUES ( ' +
    118       NewTable.Name + ' , ' + NewTable.Caption + ' )');
    119     ReloadList;
    120   end else NewTable.Free;
     111  with TFormTable.Create(nil) do
     112  try
     113    Load(NewTable);
     114    if ShowModal = mrOk then begin
     115      Save(NewTable);
     116      Tables.DbClient.Query('INSERT INTO Model ( Name , Caption ) VALUES ( ' +
     117        NewTable.Name + ' , ' + NewTable.Caption + ' )');
     118      ReloadList;
     119    end else NewTable.Free;
     120  finally
     121    Free;
     122  end;
    121123end;
    122124
    123125procedure TFormTables.AModifyExecute(Sender: TObject);
    124126begin
    125   if Assigned(ListView1.Selected) then begin
    126     FormTable.Load(TTable(ListView1.Selected.Data));
    127     if FormTable.ShowModal = mrOk then begin
    128       FormTable.Save(TTable(ListView1.Selected.Data));
    129       DbClient.Query('UPDATE Model SET Caption = ' + TTable(ListView1.Selected.Data).Caption + ' WHERE Name = ' + TTable(ListView1.Selected.Data).Name);
    130       ReloadList;
     127  if Assigned(ListViewTables.Selected) then begin
     128    with TFormTable.Create(nil) do
     129    try
     130      Load(TTable(ListViewTables.Selected.Data));
     131      if ShowModal = mrOk then begin
     132        Save(TTable(ListViewTables.Selected.Data));
     133        DbClient.Query('UPDATE Model SET Caption = ' + TTable(ListViewTables.Selected.Data).Caption + ' WHERE Name = ' + TTable(ListViewTables.Selected.Data).Name);
     134        ReloadList;
     135      end;
     136    finally
     137      Free;
    131138    end;
    132139  end;
     
    135142procedure TFormTables.ARemoveExecute(Sender: TObject);
    136143begin
    137   if Assigned(ListView1.Selected) then begin
    138     if MessageDlg(SRemoveTable, Format(SRemoveTableConfirm, [TTable(ListView1.Selected.Data).Caption]),
     144  if Assigned(ListViewTables.Selected) then begin
     145    if MessageDlg(SRemoveTable, Format(SRemoveTableConfirm, [TTable(ListViewTables.Selected.Data).Caption]),
    139146    mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
    140       Tables.DbClient.Query('DELETE FROM Model WHERE Name = ' + TTable(ListView1.Selected.Data).Name);
     147      Tables.DbClient.Query('DELETE FROM Model WHERE Name = ' + TTable(ListViewTables.Selected.Data).Name);
    141148      ReloadList;
    142149    end;
     
    152159  OldField: TField;
    153160  OldTable: TTable;
    154 begin
    155   if Assigned(ListView1.Selected) then begin
    156     OldTable := TTable(ListView1.Selected.Data);
     161  FormFields: TFormFields;
     162begin
     163  if Assigned(ListViewTables.Selected) then begin
     164    OldTable := TTable(ListViewTables.Selected.Data);
     165    FormFields := TFormFields.Create(nil);
    157166    FormFields.TableName := OldTable.Caption;
    158167    FormFields.Fields := TFields.Create;
     
    160169    FormFields.Fields.Assign(OldTable.Fields);
    161170    for I := 0 to FormFields.Fields.Count - 1 do
    162       TField(FormFields.Fields[I]).Table := TField(OldTable.Fields[I]).Table;
     171      FormFields.Fields[I].Table := OldTable.Fields[I].Table;
    163172    if FormFields.ShowModal = mrOk then begin
    164173      // Inefficient way to update table data. Copy original columns to new records and
     
    168177      for I := 0 to NewRecords.Count - 1 do begin
    169178        NewRecords.Items[I] := TRecord.Create;
    170         TRecord(NewRecords.Items[I]).Values.Count := FormFields.Fields.Count;
     179        NewRecords[I].Values.Count := FormFields.Fields.Count;
    171180        for C := 0 to FormFields.Fields.Count - 1 do
    172           TRecord(NewRecords.Items[I]).Values[C] := TField(FormFields.Fields[C]).GetValueClass.Create;
     181          NewRecords[I].Values[C] := FormFields.Fields[C].GetValueClass.Create;
    173182      end;
    174183      for C := 0 to FormFields.Fields.Count - 1 do begin
    175         OldField := OldTable.Fields.SearchByName(TField(FormFields.Fields[C]).Name);
     184        OldField := OldTable.Fields.SearchByName(FormFields.Fields[C].Name);
    176185        if Assigned(OldField) then begin
    177186          FI := OldTable.Fields.IndexOf(OldField);
    178187          for I := 0 to NewRecords.Count - 1 do
    179             TValue(TRecord(NewRecords[I]).Values[C]).Assign(TValue(TRecord(OldTable.Records[I]).Values[FI]));
     188            NewRecords[I].Values[C].Assign(OldTable.Records[I].Values[FI]);
    180189        end;
    181190      end;
     
    186195    end;
    187196    FormFields.Fields.Free;
     197    FormFields.Free;
    188198  end;
    189199end;
     
    191201procedure TFormTables.AShowRecordsExecute(Sender: TObject);
    192202begin
    193   if Assigned(ListView1.Selected) then begin
    194     FormRecords.Table := TTable(ListView1.Selected.Data);
    195     FormRecords.ShowModal;
     203  if Assigned(ListViewTables.Selected) then begin
     204    with TFormRecords.Create(nil) do
     205    try
     206      Table := TTable(ListViewTables.Selected.Data);
     207      ShowModal;
     208    finally
     209      Free;
     210    end;
    196211    ReloadList;
    197212  end;
     
    227242  if Assigned(DbClient) then begin
    228243    DbRows := TDbRows.Create;
    229     DbClient.Query('SELECT * FROM Model', DbRows);
    230     for I := 0 to DbRows.Count - 1 do begin
    231       NewTable := Tables.AddNew(DbRows[I].Items['Name']);
    232       NewTable.Caption := DbRows[I].Items['Caption'];
    233     end;
    234     DbRows.Free;
     244    try
     245      DbClient.Query('SELECT * FROM Model', DbRows);
     246      for I := 0 to DbRows.Count - 1 do begin
     247        NewTable := Tables.AddNew(DbRows[I].Items['Name']);
     248        NewTable.Caption := DbRows[I].Items['Caption'];
     249      end;
     250    finally
     251      DbRows.Free;
     252    end;
    235253  end;
    236254
    237255  for I := 0 to Tables.Count - 1 do
    238     TTable(Tables[I]).LoadRecordsCount;
     256    Tables[I].LoadRecordsCount;
    239257  if Assigned(Tables) then begin
    240     ListView1.Items.Count := Tables.Count;
    241     ListView1.Repaint;
    242   end else ListView1.Items.Count := 0;
     258    ListViewTables.Items.Count := Tables.Count;
     259    ListViewTables.Repaint;
     260  end else ListViewTables.Items.Count := 0;
    243261  UpdateInterface;
    244262end;
Note: See TracChangeset for help on using the changeset viewer.