Changeset 3 for trunk/Forms


Ignore:
Timestamp:
Jan 18, 2015, 5:25:37 PM (10 years ago)
Author:
chronos
Message:
  • Added: Support for editing String and DateTime value types in record edit form.
Location:
trunk
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk

    • Property svn:ignore
      •  

        old new  
        33MyData.lps
        44data.xml
         5Config.xml
  • trunk/Forms/UFormField.lfm

    r2 r3  
    2626  end
    2727  object ButtonOk: TButton
    28     Left = 624
     28    Left = 880
    2929    Height = 25
    30     Top = 312
     30    Top = 400
    3131    Width = 75
     32    Anchors = [akRight, akBottom]
    3233    Caption = 'Ok'
    3334    ModalResult = 1
     
    5960    Left = 16
    6061    Height = 25
    61     Top = 146
     62    Top = 144
    6263    Width = 93
    6364    Caption = 'Text after:'
     
    7475  object ComboBoxType: TComboBox
    7576    Left = 167
    76     Height = 35
     77    Height = 37
    7778    Top = 48
    7879    Width = 265
    7980    ItemHeight = 0
     81    OnChange = ComboBoxTypeChange
    8082    Style = csDropDownList
    8183    TabOrder = 4
    8284  end
    8385  object ButtonCancel: TButton
    84     Left = 528
     86    Left = 784
    8587    Height = 25
    86     Top = 312
     88    Top = 400
    8789    Width = 75
     90    Anchors = [akRight, akBottom]
    8891    Caption = 'Cancel'
    8992    ModalResult = 2
    9093    TabOrder = 5
    9194  end
     95  object PageControl1: TPageControl
     96    Left = 16
     97    Height = 200
     98    Top = 184
     99    Width = 936
     100    ActivePage = TabSheetDateTime
     101    Anchors = [akTop, akLeft, akRight, akBottom]
     102    ShowTabs = False
     103    TabIndex = 2
     104    TabOrder = 6
     105    object TabSheetString: TTabSheet
     106      Caption = 'TabSheetString'
     107      ClientHeight = 194
     108      ClientWidth = 930
     109      object EditStringDefault: TEdit
     110        Left = 160
     111        Height = 35
     112        Top = 8
     113        Width = 265
     114        TabOrder = 0
     115      end
     116      object Label5: TLabel
     117        Left = 16
     118        Height = 25
     119        Top = 8
     120        Width = 127
     121        Caption = 'Default value:'
     122        ParentColor = False
     123      end
     124    end
     125    object TabSheetInteger: TTabSheet
     126      Caption = 'TabSheetInteger'
     127    end
     128    object TabSheetDateTime: TTabSheet
     129      Caption = 'TabSheetDateTime'
     130      ClientHeight = 194
     131      ClientWidth = 930
     132      object DateEditMin: TDateEdit
     133        Left = 136
     134        Height = 35
     135        Top = 24
     136        Width = 216
     137        CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
     138        OKCaption = 'OK'
     139        CancelCaption = 'Cancel'
     140        DateOrder = doNone
     141        ButtonWidth = 23
     142        NumGlyphs = 1
     143        MaxLength = 0
     144        TabOrder = 0
     145      end
     146      object Label6: TLabel
     147        Left = 16
     148        Height = 25
     149        Top = 32
     150        Width = 96
     151        Caption = 'Minimum:'
     152        ParentColor = False
     153      end
     154      object DateEditMax: TDateEdit
     155        Left = 136
     156        Height = 35
     157        Top = 72
     158        Width = 216
     159        CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
     160        OKCaption = 'OK'
     161        CancelCaption = 'Cancel'
     162        DateOrder = doNone
     163        ButtonWidth = 23
     164        NumGlyphs = 1
     165        MaxLength = 0
     166        TabOrder = 1
     167      end
     168      object Label7: TLabel
     169        Left = 16
     170        Height = 25
     171        Top = 80
     172        Width = 100
     173        Caption = 'Maximum:'
     174        ParentColor = False
     175      end
     176    end
     177    object TabSheetBoolean: TTabSheet
     178      Caption = 'TabSheetBoolean'
     179    end
     180  end
    92181end
  • trunk/Forms/UFormField.pas

    r2 r3  
    77uses
    88  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
    9   UDatabase;
     9  ComCtrls, EditBtn, UDatabase;
    1010
    1111type
     
    1717    ButtonCancel: TButton;
    1818    ComboBoxType: TComboBox;
     19    DateEditMin: TDateEdit;
     20    DateEditMax: TDateEdit;
    1921    EditName: TEdit;
     22    EditStringDefault: TEdit;
    2023    EditTextBefore: TEdit;
    2124    EditTextAfter: TEdit;
     
    2427    Label3: TLabel;
    2528    Label4: TLabel;
     29    Label5: TLabel;
     30    Label6: TLabel;
     31    Label7: TLabel;
     32    PageControl1: TPageControl;
     33    TabSheetDateTime: TTabSheet;
     34    TabSheetInteger: TTabSheet;
     35    TabSheetString: TTabSheet;
     36    TabSheetBoolean: TTabSheet;
     37    procedure ComboBoxTypeChange(Sender: TObject);
    2638    procedure FormCreate(Sender: TObject);
    2739    procedure FormShow(Sender: TObject);
     
    5567end;
    5668
     69procedure TFormField.ComboBoxTypeChange(Sender: TObject);
     70begin
     71  PageControl1.TabIndex := ComboBoxType.ItemIndex;
     72end;
     73
    5774procedure TFormField.Load(Field: TField);
    5875begin
     
    6178  EditTextBefore.Text := Field.TextBefore;
    6279  ComboBoxType.ItemIndex := Integer(Field.FieldType);
     80  ComboBoxTypeChange(Self);
     81  if Field.FieldType = ftString then
     82    EditStringDefault.Text := TFieldString(Field.TypeRelated).DefaultValue;
     83  if Field.FieldType = ftDateTime then begin
     84    DateEditMin.Date := TFieldDateTime(Field.TypeRelated).Min;
     85    DateEditMax.Date := TFieldDateTime(Field.TypeRelated).Max;
     86  end;
    6387end;
    6488
     
    6993  Field.TextAfter := EditTextAfter.Text;
    7094  Field.FieldType := TFieldType(ComboBoxType.ItemIndex);
     95  if Field.FieldType = ftString then
     96    TFieldString(Field.TypeRelated).DefaultValue := EditStringDefault.Text;
     97  if Field.FieldType = ftDateTime then begin
     98    TFieldDateTime(Field.TypeRelated).Min := DateEditMin.Date;
     99    TFieldDateTime(Field.TypeRelated).Max := DateEditMax.Date;
     100  end;
    71101end;
    72102
  • trunk/Forms/UFormFields.pas

    r2 r3  
    66
    77uses
    8   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ActnList,
    9   ComCtrls, Menus, UDatabase;
     8  Classes, SysUtils, XMLConf, FileUtil, Forms, Controls, Graphics, Dialogs,
     9  ActnList, ComCtrls, Menus, UDatabase;
    1010
    1111type
  • trunk/Forms/UFormRecord.lfm

    r2 r3  
    11object FormRecord: TFormRecord
    2   Left = 837
    3   Height = 240
    4   Top = 298
    5   Width = 320
     2  Left = 639
     3  Height = 694
     4  Top = 174
     5  Width = 859
    66  Caption = 'FormRecord'
     7  ClientHeight = 694
     8  ClientWidth = 859
     9  OnCreate = FormCreate
     10  OnDestroy = FormDestroy
     11  OnShow = FormShow
    712  LCLVersion = '1.3'
     13  object Panel1: TPanel
     14    Left = 4
     15    Height = 632
     16    Top = 4
     17    Width = 851
     18    Align = alTop
     19    BorderSpacing.Around = 4
     20    TabOrder = 0
     21  end
     22  object ButtonOk: TButton
     23    Left = 760
     24    Height = 25
     25    Top = 648
     26    Width = 75
     27    Anchors = [akRight, akBottom]
     28    Caption = 'Ok'
     29    ModalResult = 1
     30    TabOrder = 1
     31  end
     32  object ButtonCancel: TButton
     33    Left = 649
     34    Height = 27
     35    Top = 646
     36    Width = 72
     37    Anchors = [akRight, akBottom]
     38    Caption = 'Cancel'
     39    ModalResult = 2
     40    TabOrder = 2
     41  end
     42  object ActionList1: TActionList
     43    left = 423
     44    top = 379
     45    object ASave: TAction
     46      Caption = 'Save'
     47      OnExecute = ASaveExecute
     48    end
     49    object ACancel: TAction
     50      Caption = 'Cancel'
     51      OnExecute = ACancelExecute
     52    end
     53  end
    854end
  • trunk/Forms/UFormRecord.pas

    r2 r3  
    66
    77uses
    8   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, UDatabase;
     8  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
     9  ComCtrls, ActnList, StdCtrls, EditBtn, UDatabase, Contnrs;
    910
    1011type
     12
     13  { TFormRecord }
     14
    1115  TFormRecord = class(TForm)
     16    ASave: TAction;
     17    ACancel: TAction;
     18    ActionList1: TActionList;
     19    ButtonOk: TButton;
     20    ButtonCancel: TButton;
     21    Panel1: TPanel;
     22    procedure ACancelExecute(Sender: TObject);
     23    procedure ASaveExecute(Sender: TObject);
     24    procedure FormCreate(Sender: TObject);
     25    procedure FormDestroy(Sender: TObject);
     26    procedure FormShow(Sender: TObject);
    1227  private
    1328    { private declarations }
     
    1530    Table: TTable;
    1631    Row: TRecord;
     32    Controls: TObjectList; // TListObject<TControl>
     33    Labels: TObjectList; // TListObject<TControl>
     34    procedure ReloadControls;
     35    procedure Load(DataRecord: TRecord);
     36    procedure Save(DataRecord: TRecord);
    1737  end;
    1838
     
    2444{$R *.lfm}
    2545
     46{ TFormRecord }
     47
     48procedure TFormRecord.FormShow(Sender: TObject);
     49begin
     50  ReloadControls;
     51end;
     52
     53procedure TFormRecord.ACancelExecute(Sender: TObject);
     54begin
     55  ModalResult := mrCancel;
     56  Close;
     57end;
     58
     59procedure TFormRecord.ASaveExecute(Sender: TObject);
     60begin
     61  ModalResult := mrOk;
     62  Close;
     63end;
     64
     65procedure TFormRecord.FormCreate(Sender: TObject);
     66begin
     67  Controls := TObjectList.Create;
     68  Labels := TObjectList.Create;
     69end;
     70
     71procedure TFormRecord.FormDestroy(Sender: TObject);
     72begin
     73  Labels.Free;
     74  Controls.Free;
     75end;
     76
     77procedure TFormRecord.ReloadControls;
     78begin
     79end;
     80
     81procedure TFormRecord.Load(DataRecord: TRecord);
     82var
     83  I: Integer;
     84  NewLabel: TLabel;
     85  NewControl: TControl;
     86  CellRect: TRect;
     87begin
     88  Row := DataRecord;
     89  Controls.Clear;
     90  Labels.Clear;
     91  for I := 0 to Table.Fields.Count - 1 do begin
     92    CellRect := Rect(10, 10 + I * 70, Panel1.Width - 20, (I + 1) * 70);
     93    NewLabel := TLabel.Create(Panel1);
     94    NewLabel.Caption := TField(Table.Fields[I]).TextBefore;
     95    NewLabel.Parent := Panel1;
     96    NewLabel.Left := CellRect.Left;
     97    NewLabel.Top := CellRect.Top;
     98    NewLabel.Visible := True;
     99    Labels.Add(NewLabel);
     100    case TField(Table.Fields[I]).FieldType of
     101      ftString: begin
     102        NewControl := TEdit.Create(Panel1);
     103        NewControl.Parent := Panel1;
     104        NewControl.Left := CellRect.Left;
     105        NewControl.Top := CellRect.Top + NewLabel.Height + 6;
     106        NewControl.Width := CellRect.Right - CellRect.Left;
     107        NewControl.Visible := True;
     108        TEdit(NewControl).Text := TValueString(Row.Values[I]).Value;
     109        Controls.Add(NewControl);
     110      end;
     111      ftDateTime: begin
     112        NewControl := TDateEdit.Create(Panel1);
     113        NewControl.Parent := Panel1;
     114        NewControl.Left := CellRect.Left;
     115        NewControl.Top := CellRect.Top + NewLabel.Height + 6;
     116        NewControl.Width := CellRect.Right - CellRect.Left;
     117        NewControl.Visible := True;
     118        TDateEdit(NewControl).Date := TValueDateTime(Row.Values[I]).Value;
     119        Controls.Add(NewControl);
     120      end;
     121    end;
     122  end;
     123end;
     124
     125procedure TFormRecord.Save(DataRecord: TRecord);
     126var
     127  I: Integer;
     128begin
     129  for I := 0 to Table.Fields.Count - 1 do begin
     130    case TField(Table.Fields[I]).FieldType of
     131      ftString: TValueString(Row.Values[I]).Value := TEdit(Controls[I]).Text;
     132      ftDateTime: TValueDateTime(Row.Values[I]).Value := TDateEdit(Controls[I]).Date;
     133    end;
     134  end;
     135end;
     136
    26137end.
    27138
  • trunk/Forms/UFormRecords.lfm

    r2 r3  
    3131    TabOrder = 0
    3232    ViewStyle = vsReport
     33    OnData = ListView1Data
    3334    OnDblClick = AModifyExecute
    3435    OnSelectItem = ListView1SelectItem
  • trunk/Forms/UFormRecords.pas

    r2 r3  
    3131    procedure ARemoveExecute(Sender: TObject);
    3232    procedure FormShow(Sender: TObject);
     33    procedure ListView1Data(Sender: TObject; Item: TListItem);
    3334    procedure ListView1SelectItem(Sender: TObject; Item: TListItem;
    3435      Selected: Boolean);
     
    4647implementation
    4748
     49uses
     50  UFormRecord;
     51
    4852{$R *.lfm}
    4953
     
    5357begin
    5458  Caption := 'Table - ' + Table.Name;
    55   UpdateInterface;
     59  ReloadList;
     60end;
     61
     62procedure TFormRecords.ListView1Data(Sender: TObject; Item: TListItem);
     63var
     64  I: Integer;
     65begin
     66  if (Item.Index >= 0) and (Item.Index < Table.Records.Count) then
     67  with TRecord(Table.Records[Item.Index]) do begin
     68    for I := 0 to Table.Fields.Count - 1 do begin
     69      if I = 0 then Item.Caption := TValue(Values[0]).GetString
     70        else Item.SubItems.Add(TValue(Values[I]).GetString);
     71    end;
     72    Item.Data := Table.Records[Item.Index];
     73  end
    5674end;
    5775
     
    6482procedure TFormRecords.AModifyExecute(Sender: TObject);
    6583begin
    66 
     84  if Assigned(ListView1.Selected) then begin
     85    FormRecord.Table := Table;
     86    FormRecord.Load(TRecord(ListView1.Selected.Data));
     87    if FormRecord.ShowModal = mrOk then begin
     88      FormRecord.Save(TRecord(ListView1.Selected.Data));
     89      ReloadList;
     90    end;
     91  end;
    6792end;
    6893
    6994procedure TFormRecords.ARemoveExecute(Sender: TObject);
    7095begin
    71 
     96  if Assigned(ListView1.Selected) then begin
     97    Table.Records.Remove(ListView1.Selected.Data);
     98    ReloadList;
     99  end;
    72100end;
    73101
    74102procedure TFormRecords.AAddExecute(Sender: TObject);
     103var
     104  NewRecord: TRecord;
     105  ValueClass: TValueClass;
     106  I: Integer;
     107  NewValue: TValue;
    75108begin
     109  NewRecord := TRecord.Create;
     110  NewRecord.Parent := Table;
     111  NewRecord.Values.Count := Table.Fields.Count;
     112  for I := 0 to Table.Fields.Count - 1 do begin
     113    ValueClass := TField(Table.Fields[I]).GetValueClass;
     114    NewValue := ValueClass.Create;
     115    NewRecord.Values[I] := NewValue;
     116  end;
    76117
     118  FormRecord.Table := Table;
     119  FormRecord.Load(NewRecord);
     120  if FormRecord.ShowModal = mrOk then begin
     121    FormRecord.Save(NewRecord);
     122    Table.Records.Add(NewRecord);
     123    ReloadList;
     124  end else NewRecord.Free;
    77125end;
    78126
     
    84132
    85133procedure TFormRecords.ReloadList;
     134var
     135  I: Integer;
     136  NewColumn: TListColumn;
    86137begin
     138  ListView1.Columns.Clear;
     139  for I := 0 to Table.Fields.Count - 1 do begin
     140    NewColumn := ListView1.Columns.Add;
     141    NewColumn.Caption := TField(Table.Fields[I]).TextBefore;
     142    NewColumn.Width := 200;
     143  end;
     144
    87145  ListView1.Items.Count := Table.Records.Count;
    88146  ListView1.Repaint;
  • trunk/Forms/UFormTables.lfm

    r2 r3  
    77  ClientHeight = 660
    88  ClientWidth = 978
     9  OnActivate = FormActivate
     10  OnClose = FormClose
    911  OnShow = FormShow
    1012  LCLVersion = '1.3'
  • trunk/Forms/UFormTables.pas

    r2 r3  
    3838    procedure AShowFieldsExecute(Sender: TObject);
    3939    procedure AShowRecordsExecute(Sender: TObject);
     40    procedure FormActivate(Sender: TObject);
     41    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    4042    procedure FormShow(Sender: TObject);
    4143    procedure ListView1Data(Sender: TObject; Item: TListItem);
     
    116118    Database.Tables.Remove(ListView1.Selected.Data);
    117119    ReloadList;
    118     UpdateInterface;
    119120  end;
    120121end;
     
    138139end;
    139140
     141procedure TFormMain.FormActivate(Sender: TObject);
     142begin
     143  Core.Init;
     144end;
     145
     146procedure TFormMain.FormClose(Sender: TObject; var CloseAction: TCloseAction);
     147begin
     148  Core.Done;
     149end;
     150
    140151procedure TFormMain.FormShow(Sender: TObject);
    141152begin
    142153  Database := Core.Database;
    143154  ReloadList;
    144   UpdateInterface;
    145155end;
    146156
     
    149159  ListView1.Items.Count := Database.Tables.Count;
    150160  ListView1.Repaint;
     161  FormMain.UpdateInterface;
    151162end;
    152163
Note: See TracChangeset for help on using the changeset viewer.