Ignore:
Timestamp:
Nov 14, 2012, 2:58:35 PM (12 years ago)
Author:
chronos
Message:
  • Přidáno: Ikony k záložkám jednotlivých tabulek.
  • Upraveno: Zobecněn systém pohledů na dynamickou strukturu.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Forms/UFormList.pas

    r7 r8  
    77uses
    88  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
    9   ActnList, Menus, SpecializedList, USqlDatabase, UListViewSort;
     9  ActnList, Menus, StdCtrls, ExtCtrls, SpecializedList, USqlDatabase,
     10  UListViewSort, UDataView, URegistry;
    1011
    1112type
     
    2122  TListDbColumn = class(TListObject)
    2223    procedure AddItem(Caption, Name: string; Visible: Boolean; Width: Integer);
     24  end;
     25
     26  { TDataViewList }
     27
     28  TDataViewList = class(TDataView)
     29    Caption: string;
     30    Name: string;
     31    ImageIndex: Integer;
     32    Columns: TListDbColumn;
     33    constructor Create;
     34    destructor Destroy; override;
     35    procedure LoadFromRegistry(Context: TRegistryContext);
     36    procedure SaveToRegistry(Context: TRegistryContext);
    2337  end;
    2438
     
    3448    ADuplicate: TAction;
    3549    ActionList1: TActionList;
     50    LabelItemCount: TLabel;
    3651    ListView1: TListView;
    3752    MenuItem1: TMenuItem;
     
    4055    MenuItem4: TMenuItem;
    4156    MenuItem5: TMenuItem;
     57    Panel1: TPanel;
    4258    PopupMenu1: TPopupMenu;
    4359    ToolBar1: TToolBar;
     
    6076      Selected: Boolean);
    6177  private
     78    FDataViewList: TDataViewList;
     79    procedure SetDataViewList(AValue: TDataViewList);
    6280  public
    63     Columns: TListDbColumn;
    6481    DbRows: TDbRows;
    65     Table: string;
     82    property DataViewList: TDataViewList read FDataViewList write SetDataViewList;
    6683    procedure UpdateInterface;
    6784    procedure UpdateData;
     
    8097resourcestring
    8198  SItemDeletion = 'Item deletion';
    82   SDoYouWantToDeleteItem = 'Do you want to delte item';
     99  SDoYouWantToDeleteItem = 'Do you want to really delete item?';
     100  SItemCount = 'Item count: %s';
     101
     102{ TDataViewList }
     103
     104constructor TDataViewList.Create;
     105begin
     106  Columns := TListDbColumn.Create;
     107end;
     108
     109destructor TDataViewList.Destroy;
     110begin
     111  Columns.Free;
     112  inherited Destroy;
     113end;
     114
     115procedure TDataViewList.LoadFromRegistry(Context: TRegistryContext);
     116begin
     117
     118end;
     119
     120procedure TDataViewList.SaveToRegistry(Context: TRegistryContext);
     121begin
     122
     123end;
    83124
    84125{ TListColumns }
     
    101142procedure TFormList.FormCreate(Sender: TObject);
    102143begin
    103   Columns := TListDbColumn.Create;
    104144  DbRows := TDbRows.Create;
    105145end;
     
    122162    if MessageDlg(SItemDeletion, SDoYouWantToDeleteItem, mtConfirmation,
    123163      [mbYes, mbNo], 0) = mrYes then begin
    124       Core.Database.Query(nil, 'DELETE FROM `' + Table + '` WHERE `Id` = ' + IntToStr(0));
     164      Core.Database.Query(nil, 'DELETE FROM `' + DataViewList.Name +
     165        '` WHERE `Id` = ' + IntToStr(Integer(ListView1.Selected.Data)));
    125166    end;
    126167  end;
     
    137178  ListView1.Items.Count := 0;
    138179  FreeAndNil(DbRows);
    139   FreeAndNil(Columns);
    140180end;
    141181
     
    150190begin
    151191  if (Item.Index >= 0) and (Item.Index < DbRows.Count) then begin
    152     for I := 0 to Columns.Count - 1 do begin
     192    for I := 0 to DataViewList.Columns.Count - 1 do begin
     193      Item.Data := Pointer(StrToInt(DbRows[Item.Index].Values['Id']));
    153194      if I = 0 then Item.Caption := DbRows[Item.Index].Items[0].Value
    154         else Item.SubItems.Add(DbRows[Item.Index].Items[I].Value);
     195        else Item.SubItems.Add(DbRows[Item.Index].Values[TDbColumn(DataViewList.Columns[I]).Name]);
    155196    end;
    156197  end;
     
    161202begin
    162203  UpdateInterface;
     204end;
     205
     206procedure TFormList.SetDataViewList(AValue: TDataViewList);
     207begin
     208  if FDataViewList=AValue then Exit;
     209  if Assigned(AValue) then begin
     210  end else begin
     211    DbRows.Clear;
     212    ListView1.Items.Clear;
     213  end;
     214  FDataViewList := AValue;
    163215end;
    164216
     
    178230begin
    179231  ListView1.Columns.Clear;
    180   Filter := '';
    181   for I := 0 to Columns.Count - 1 do begin
     232  Filter := 'Id';
     233  for I := 0 to DataViewList.Columns.Count - 1 do
     234  with TDbColumn(DataViewList.Columns[I]) do begin
    182235    NewColumn := ListView1.Columns.Add;
    183     NewColumn.Caption := TDbColumn(Columns[I]).Caption;
    184     NewColumn.Width := TDbColumn(Columns[I]).Width;
    185     NewColumn.Visible := TDbColumn(Columns[I]).Visible;
    186     if I > 0 then Filter := Filter + ', ';
    187     Filter := Filter + TDbColumn(Columns[I]).Name;
    188   end;
    189   Core.Database.Query(DbRows, 'SELECT ' + Filter + ' FROM ' + Table);
    190 
    191   ListView1.Items.Count := DbRows.Count;;
     236    NewColumn.Caption := Caption;
     237    NewColumn.Width := Width;
     238    NewColumn.Visible := Visible;
     239    Filter := Filter + ', `' + Name + '`';
     240  end;
     241  Core.Database.Query(DbRows, 'SELECT ' + Filter + ' FROM ' + DataViewList.Name);
     242
     243  ListView1.Items.Count := DbRows.Count;
    192244  ListView1.Refresh;
     245
     246  LabelItemCount.Caption := Format(SItemCount, [IntToStr(DbRows.Count)]);
    193247end;
    194248
Note: See TracChangeset for help on using the changeset viewer.