Changeset 29 for trunk/Forms


Ignore:
Timestamp:
Sep 10, 2022, 10:54:56 PM (2 years ago)
Author:
chronos
Message:
  • Fixed: Load table fields in records list and record edit form.
  • Fixed: Record add needs to insert new row into database.
Location:
trunk/Forms
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Forms/UFormConnect.lfm

    r28 r29  
    8787        Left = 110
    8888        Height = 43
    89         Top = 25
     89        Top = 16
    9090        Width = 446
    9191        Anchors = [akTop, akLeft, akRight]
     
    107107      ClientWidth = 693
    108108      object Label4: TLabel
    109         Left = 17
     109        Left = 19
    110110        Height = 26
    111111        Top = 19
     
    124124        Left = 19
    125125        Height = 26
    126         Top = 58
     126        Top = 72
    127127        Width = 40
    128128        Caption = 'Port:'
     
    130130      end
    131131      object SpinEditPort: TSpinEdit
    132         Left = 150
     132        Left = 152
    133133        Height = 43
    134         Top = 58
     134        Top = 64
    135135        Width = 133
    136136        MaxValue = 65535
  • trunk/Forms/UFormFields.pas

    r28 r29  
    160160
    161161procedure TFormFields.ReloadList;
    162 var
    163   DbRows: TDbRows;
    164   NewField: TField;
    165   I: Integer;
    166162begin
    167   Fields.Clear;
    168   DbRows := TDbRows.Create;
    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;
    178   end;
     163  Fields.Load;
    179164
    180165  ListView1.Items.Count := Fields.Count;
  • trunk/Forms/UFormRecord.pas

    r28 r29  
    3737
    3838uses
    39   UDataTypes;
     39  UDataTypes, UCore;
    4040
    4141{$R *.lfm}
     
    8686const
    8787  LabelWidth = 300;
    88 begin
     88var
     89  LineHeight: Integer;
     90begin
     91  LineHeight := Core.ScaleDPI1.ScaleY(35, Core.ScaleDPI1.DesignDPI.Y);
     92
    8993  Row := DataRecord;
    9094  Controls.Clear;
    9195  Labels.Clear;
    9296  for I := 0 to Table.Fields.Count - 1 do begin
    93     CellRect := Rect(10, 10 + I * 35, Panel1.Width - 20, (I + 1) * 35);
     97    CellRect := Rect(10, 10 + I * LineHeight, Panel1.Width - 20, (I + 1) * LineHeight);
    9498    NewLabel := TLabel.Create(Panel1);
    95     NewLabel.Caption := TField(Table.Fields[I]).TextBefore;
     99    NewLabel.Caption := Table.Fields[I].TextBefore;
    96100    NewLabel.Parent := Panel1;
    97101    NewLabel.Left := CellRect.Left;
     
    99103    NewLabel.Visible := True;
    100104    Labels.Add(NewLabel);
    101     case TField(Table.Fields[I]).DataType.FieldType of
     105    case Table.Fields[I].DataType.FieldType of
    102106      ftString: begin
    103107        NewControl := TEdit.Create(Panel1);
     
    183187begin
    184188  for I := 0 to Table.Fields.Count - 1 do begin
    185     case TField(Table.Fields[I]).DataType.FieldType of
     189    case Table.Fields[I].DataType.FieldType of
    186190      ftString: TValueString(Row.Values[I]).Value := TEdit(Controls[I]).Text;
    187191      ftInteger: TValueInteger(Row.Values[I]).Value := TSpinEdit(Controls[I]).Value;
  • trunk/Forms/UFormRecords.pas

    r28 r29  
    6060    ToolBar1.Buttons[I].Hint := ToolBar1.Buttons[I].Caption;
    6161  Caption := STable + ' - ' + Table.Caption;
     62  Table.Fields.Load;
    6263  ReloadList;
    6364end;
     
    6869begin
    6970  if (Item.Index >= 0) and (Item.Index < Table.Records.Count) then
    70   with TRecord(Table.Records[Item.Index]) do begin
     71  with Table.Records[Item.Index] do begin
    7172    for I := 0 to Table.Fields.Count - 1 do begin
    72       if I = 0 then Item.Caption := TValue(Values[0]).GetString
    73         else Item.SubItems.Add(TValue(Values[I]).GetString);
     73      if I = 0 then Item.Caption := Values[0].GetString
     74        else Item.SubItems.Add(Values[I].GetString);
    7475    end;
    7576    Item.Data := Table.Records[Item.Index];
     
    116117  I: Integer;
    117118  NewValue: TValue;
     119  Columns: string;
     120  Values: string;
    118121begin
    119122  NewRecord := TRecord.Create;
    120   NewRecord.Parent := Table;
     123  NewRecord.Table := Table;
    121124  NewRecord.Values.Count := Table.Fields.Count;
    122125  for I := 0 to Table.Fields.Count - 1 do begin
    123     ValueClass := TField(Table.Fields[I]).GetValueClass;
     126    ValueClass := Table.Fields[I].GetValueClass;
    124127    NewValue := ValueClass.Create;
    125128    NewRecord.Values[I] := NewValue;
     
    132135    if ShowModal = mrOk then begin
    133136      Save(NewRecord);
    134       Table.Records.Add(NewRecord);
     137
     138      Values := '';
     139      Columns := '';
     140      for I := 0 to Table.Fields.Count - 1 do begin
     141        Columns := Columns + Table.Fields[I].Name;
     142        Values := Values + '"' + NewRecord.Values[I].GetString + '"';
     143        if I < Table.Fields.Count - 1 then begin
     144          Columns := Columns + ' , ';
     145          Values := Values + ' , ';
     146        end;
     147      end;
     148      Table.DbClient.Query('INSERT INTO ' + Table.Name + ' ( ' + Columns + ' )' +
     149        ' VALUES ( ' + Values + ' )');
     150
     151      NewRecord.Free;
    135152      ReloadList;
    136153    end else NewRecord.Free;
     
    150167  I: Integer;
    151168begin
    152   Table.LoadRecords;
     169  Table.Records.Load;
    153170
    154171  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;
    159   for I := 0 to Table.Fields.Count - 1 do begin
    160     ListViewRecords.Columns[I].Caption := TField(Table.Fields[I]).TextBefore;
    161     ListViewRecords.Columns[I].Width := 200;
     172  try
     173    while ListViewRecords.Columns.Count > Table.Fields.Count do
     174      ListViewRecords.Columns[ListViewRecords.ColumnCount - 1].Free;
     175    while ListViewRecords.Columns.Count < Table.Fields.Count do
     176      ListViewRecords.Columns.Add;
     177    for I := 0 to Table.Fields.Count - 1 do begin
     178      ListViewRecords.Columns[I].Caption := Table.Fields[I].TextBefore;
     179      ListViewRecords.Columns[I].Width := 200;
     180    end;
     181  finally
     182    ListViewRecords.Columns.EndUpdate;
    162183  end;
    163   ListViewRecords.Columns.EndUpdate;
    164184
    165185  ListViewRecords.Items.Count := Table.Records.Count;
  • trunk/Forms/UFormTables.pas

    r28 r29  
    7373  with TTable(FTables[Item.Index]) do begin
    7474    Item.Caption := Caption;
    75     Item.SubItems.Add(IntToStr(RecordsCount) + ' ' + IntToStr(Fields.Count));
     75    Item.SubItems.Add(IntToStr(RecordsCount));
    7676    Item.Data := FTables[Item.Index];
    7777  end
Note: See TracChangeset for help on using the changeset viewer.