Changeset 8 for trunk/Forms/UFormList.pas
- Timestamp:
- Nov 14, 2012, 2:58:35 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Forms/UFormList.pas
r7 r8 7 7 uses 8 8 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; 10 11 11 12 type … … 21 22 TListDbColumn = class(TListObject) 22 23 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); 23 37 end; 24 38 … … 34 48 ADuplicate: TAction; 35 49 ActionList1: TActionList; 50 LabelItemCount: TLabel; 36 51 ListView1: TListView; 37 52 MenuItem1: TMenuItem; … … 40 55 MenuItem4: TMenuItem; 41 56 MenuItem5: TMenuItem; 57 Panel1: TPanel; 42 58 PopupMenu1: TPopupMenu; 43 59 ToolBar1: TToolBar; … … 60 76 Selected: Boolean); 61 77 private 78 FDataViewList: TDataViewList; 79 procedure SetDataViewList(AValue: TDataViewList); 62 80 public 63 Columns: TListDbColumn;64 81 DbRows: TDbRows; 65 Table: string;82 property DataViewList: TDataViewList read FDataViewList write SetDataViewList; 66 83 procedure UpdateInterface; 67 84 procedure UpdateData; … … 80 97 resourcestring 81 98 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 104 constructor TDataViewList.Create; 105 begin 106 Columns := TListDbColumn.Create; 107 end; 108 109 destructor TDataViewList.Destroy; 110 begin 111 Columns.Free; 112 inherited Destroy; 113 end; 114 115 procedure TDataViewList.LoadFromRegistry(Context: TRegistryContext); 116 begin 117 118 end; 119 120 procedure TDataViewList.SaveToRegistry(Context: TRegistryContext); 121 begin 122 123 end; 83 124 84 125 { TListColumns } … … 101 142 procedure TFormList.FormCreate(Sender: TObject); 102 143 begin 103 Columns := TListDbColumn.Create;104 144 DbRows := TDbRows.Create; 105 145 end; … … 122 162 if MessageDlg(SItemDeletion, SDoYouWantToDeleteItem, mtConfirmation, 123 163 [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))); 125 166 end; 126 167 end; … … 137 178 ListView1.Items.Count := 0; 138 179 FreeAndNil(DbRows); 139 FreeAndNil(Columns);140 180 end; 141 181 … … 150 190 begin 151 191 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'])); 153 194 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]); 155 196 end; 156 197 end; … … 161 202 begin 162 203 UpdateInterface; 204 end; 205 206 procedure TFormList.SetDataViewList(AValue: TDataViewList); 207 begin 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; 163 215 end; 164 216 … … 178 230 begin 179 231 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 182 235 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; 192 244 ListView1.Refresh; 245 246 LabelItemCount.Caption := Format(SItemCount, [IntToStr(DbRows.Count)]); 193 247 end; 194 248
Note:
See TracChangeset
for help on using the changeset viewer.