144 lines
3.4 KiB
ObjectPascal
144 lines
3.4 KiB
ObjectPascal
unit fSimpleGrid;
|
|
|
|
interface
|
|
|
|
uses
|
|
System.SysUtils, System.Types, System.UITypes, System.Classes,
|
|
System.Variants,
|
|
FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
|
|
System.Rtti, FMX.Grid.Style, FMX.Edit, FMX.Grid, FMX.Controls.Presentation,
|
|
FMX.ScrollBox, uRecords;
|
|
|
|
type
|
|
TfrSimpleGrid = class(TFrame)
|
|
sg: TStringGrid;
|
|
sgR2: TStringColumn;
|
|
sgR1: TStringColumn;
|
|
edtName: TEdit;
|
|
edtFileName: TEdit;
|
|
btnOpen: TButton;
|
|
btnAdd: TButton;
|
|
btnDel: TButton;
|
|
btnEdt: TButton;
|
|
od: TOpenDialog;
|
|
procedure btnAddClick(Sender: TObject);
|
|
procedure btnDelClick(Sender: TObject);
|
|
procedure sgCellClick(const Column: TColumn; const Row: Integer);
|
|
procedure btnOpenClick(Sender: TObject);
|
|
procedure btnEdtClick(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
FMyRecord: TArray<TListCommands>;
|
|
FTableName: string;
|
|
procedure SetMyArray(const Value: TArray<TListCommands>);
|
|
procedure SetTableName(const Value: string);
|
|
|
|
public
|
|
{ Public declarations }
|
|
procedure UpdateGrid;
|
|
published
|
|
property ObjectRecord: TArray<TListCommands> read FMyRecord
|
|
write SetMyArray;
|
|
property TableName: string read FTableName write SetTableName;
|
|
|
|
end;
|
|
|
|
implementation
|
|
|
|
{$R *.fmx}
|
|
|
|
uses ugeneral;
|
|
|
|
{ TfrSimpleGrid }
|
|
|
|
procedure TfrSimpleGrid.btnAddClick(Sender: TObject);
|
|
var
|
|
NewRec: TListCommands;
|
|
begin
|
|
if (edtName.Text = '') or (edtFileName.Text = '') then
|
|
exit;
|
|
NewRec.R1 := edtName.Text;
|
|
NewRec.R2 := edtFileName.Text;
|
|
SetLength(FMyRecord, Length(FMyRecord) + 1);
|
|
FMyRecord[High(FMyRecord)] := NewRec;
|
|
DB.SaveRecordArray<TListCommands>(FTableName, FMyRecord);
|
|
edtName.Text := '';
|
|
edtFileName.Text := '';
|
|
UpdateGrid;
|
|
end;
|
|
|
|
procedure TfrSimpleGrid.btnDelClick(Sender: TObject);
|
|
var
|
|
i, RowIndex: Integer;
|
|
begin
|
|
RowIndex := sg.Row;
|
|
if (RowIndex < 0) or (RowIndex > High(FMyRecord)) then
|
|
exit;
|
|
for i := RowIndex to High(FMyRecord) - 1 do
|
|
FMyRecord[i] := FMyRecord[i + 1];
|
|
SetLength(FMyRecord, Length(FMyRecord) - 1);
|
|
DB.SaveRecordArray<TListCommands>(FTableName, FMyRecord);
|
|
UpdateGrid;
|
|
end;
|
|
|
|
procedure TfrSimpleGrid.btnEdtClick(Sender: TObject);
|
|
var RowIndex:integer;
|
|
begin
|
|
if (edtName.Text = '') or (edtFileName.Text = '') then
|
|
exit;
|
|
RowIndex := sg.Row;
|
|
if (RowIndex < 0) or (RowIndex > High(FMyRecord)) then
|
|
exit;
|
|
FMyRecord[RowIndex].R1 := edtName.Text;
|
|
FMyRecord[RowIndex].R2 := edtFileName.Text;
|
|
DB.SaveRecordArray<TListCommands>(FTableName, FMyRecord);
|
|
edtName.Text := '';
|
|
edtFileName.Text := '';
|
|
UpdateGrid;
|
|
end;
|
|
|
|
procedure TfrSimpleGrid.btnOpenClick(Sender: TObject);
|
|
var
|
|
i, RowIndex: Integer;
|
|
begin
|
|
if od.Execute then
|
|
edtFileName.Text := od.FileName;
|
|
end;
|
|
|
|
procedure TfrSimpleGrid.SetMyArray(const Value: TArray<TListCommands>);
|
|
begin
|
|
FMyRecord := Value;
|
|
end;
|
|
|
|
procedure TfrSimpleGrid.SetTableName(const Value: string);
|
|
begin
|
|
FTableName := Value;
|
|
end;
|
|
|
|
procedure TfrSimpleGrid.sgCellClick(const Column: TColumn; const Row: Integer);
|
|
begin
|
|
edtName.Text := sg.Cells[0, Row];
|
|
edtFileName.Text := sg.Cells[1, Row];
|
|
end;
|
|
|
|
procedure TfrSimpleGrid.UpdateGrid;
|
|
var
|
|
i: Integer;
|
|
begin
|
|
sg.BeginUpdate;
|
|
try
|
|
sg.RowCount := 1; // Ñáðàñûâàåì ñòðîêè (îñòàâëÿåì òîëüêî çàãîëîâêè)
|
|
|
|
for i := 0 to High(FMyRecord) do
|
|
begin
|
|
sg.RowCount := i + 1;
|
|
sg.Cells[0, i] := FMyRecord[i].R1;
|
|
sg.Cells[1, i] := FMyRecord[i].R2;
|
|
end;
|
|
finally
|
|
sg.EndUpdate;
|
|
end;
|
|
end;
|
|
|
|
end.
|