Работа со всей строкой либо со всеми элементами столбца
buf1:=tab1.Rows[i].Text;
tab1.Rows[i].Text:=tab1.Rows[i+1].Text;
tab1.Rows[i+1].Text:=buf1;
buf1:=tab1.Cols[i].Text;
tab1.Cols[i].Text:=tab1.Cols[i+1].Text;
tab1.Cols[i+1].Text:=buf1;
Пример записи в таблицу данных так, чтобы программа проверяла конец столбцов и переходила на новую строку автоматически.
procedure TForm1.T1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
with T1 do
if Col < ColCount - 1 then
Col := Col + 1
else if Row < RowCount - 1 then
begin
Row := Row + 1;
Col := 0;
end
else
begin
T1.RowCount:=T1.RowCount + 1;
Row := Row + 1;
Col := 0;
end;
end;
Проект работы с таблицей и с файлами.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ComCtrls, Grids, XPMan, StdCtrls,ShellAPI, Buttons;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
Help1: TMenuItem;
N10: TMenuItem;
PopupMenu1: TPopupMenu;
N12: TMenuItem;
CloseALL1: TMenuItem;
XPManifest1: TXPManifest;
Open: TOpenDialog;
Save: TSaveDialog;
N13: TMenuItem;
N11: TMenuItem;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
T1: TStringGrid;
TabSheet2: TTabSheet;
T2: TStringGrid;
TabSheet3: TTabSheet;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Label3: TLabel;
Label4: TLabel;
About1: TMenuItem;
N14: TMenuItem;
procedure N5Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure CloseALL1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure T1KeyPress(Sender: TObject; var Key: Char);
procedure N13Click(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1 :TForm1; // Объявление глобальных переменных
ks :byte;
bs :byte;
implementation
uses Unit2, Unit3;
{$R *.dfm}
procedure TForm1.N5Click(Sender: TObject);
begin
close;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
Pagecontrol1.ActivePage:=TabSheet1;
end;
procedure TForm1.N8Click(Sender: TObject);
begin
Pagecontrol1.ActivePage:=TabSheet2;
end;
procedure TForm1.N9Click(Sender: TObject);
begin
Pagecontrol1.ActivePage:=TabSheet3;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
T1.Cells[0,0]:=' Вуз';
T1.Cells[1,0]:=' Город';
T1.Cells[2,0]:=' Стоимость обучения';
T1.Cells[3,0]:=' Дата окончания лицензии';
T1.Cells[4,0]:=' Штраф';
T2.Cells[0,0]:=' Вуз';
T2.Cells[1,0]:=' Дата окончания лицензии';
T2.Cells[2,0]:='Сумма штрафа'
end;
procedure TForm1.N12Click(Sender: TObject);
begin
ShellAbout(Form1.Handle, 'Департамент Образования',
'Все права принадлежат BOBA DMX and LuDoeD' + #9#9+
'All rights reserved', Application.Icon.Handle);
end;
procedure TForm1.CloseALL1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
PageControl1.ActivePage:=TabSheet1;
end;
procedure TForm1.N14Click(Sender: TObject);
begin
ShellAbout(Form1.Handle, 'Департамент Образования',
'Все права принадлежат BOBA DMX and LuDoeD' + #9#9+
'All rights reserved', Application.Icon.Handle);
end;
procedure TForm1.N11Click(Sender: TObject);
begin
Form3 := TForm3.Create(Application);
Form3.show;
end;
procedure TForm1.T1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
with T1 do
if Col < ColCount - 1 then
Col := Col + 1
else if Row < RowCount - 1 then
begin
Row := Row + 1;
Col := 0;
end
else
begin
T1.RowCount:=T1.RowCount + 1;
Row := Row + 1;
Col := 0;
end;
end;
procedure TForm1.N13Click(Sender: TObject);
var
i,j: Integer;
begin
j:=T1.Row;
T1.Rows[j].Clear;
for i:=j to T1.RowCount-2 do
T1.Rows[i].Assign(T1.Rows[i+1]);
T1.RowCount:=T1.RowCount-1;
end;
procedure TForm1.PageControl1Change(Sender: TObject);
var
i,j,k,h :Byte;
min,max :Integer;
begin
Case PageControl1.TabIndex of
0:Begin
N11.Enabled:=False;
End;
1:begin
k:=1;
N11.Enabled:=True;
for i:=1 to T1.RowCount -1 do
begin
if T1.Cells[3,i]<>'' Then
If StrToDate(T1.Cells[3,i])<Date Then
Begin
T2.Cells[0,k]:=T1.Cells[0,i];
T2.Cells[1,k]:=T1.Cells[3,i];
T2.Cells[2,k]:=T1.Cells[4,i];
k:=k+1;
h:=h+1;
label4.Caption:=intTostr(h);
T2.RowCount:=i+1;
end;
end;
End;
2:begin // Нахождение max и min
max:=StrToInt(T1.Cells[2,1]);
N11.Enabled:=False;
for j:=2 to T1.RowCount-1 do
if StrToInt(T1.Cells[2,j])>max then
max:=StrToInt(T1.Cells[2,j]);
Edit1.Text:=IntToStr(max);
min:=StrToInt(T1.Cells[2,1]);
for j:=2 to T1.RowCount-1 do
if StrToInt(T1.Cells[2,j])<min then
min:=StrToInt(T1.Cells[2,j]);
Edit2.Text:=IntToStr(min);
end;
end;
end;
procedure TForm1.N10Click(Sender: TObject);
begin
Edit1.Text:='';
Edit2.Text:='';
T1.RowCount:=2;
T1.Rows[1].Clear;
end;
procedure SaveT1(T1: TStringGrid; const FileName: TFileName);
var
f: TextFile;
i, k: Integer;
begin
AssignFile(f, FileName);
Rewrite(f);
with T1 do
begin
Writeln(f, ColCount);
Writeln(f, RowCount);
for i := 0 to ColCount - 1 do
for k := 0 to RowCount - 1 do
Writeln(F, Cells[i, k]);
end;
CloseFile(F);
end;
procedure LoadT1(T1: TStringGrid; const FileName: TFileName);
var
f: TextFile;
j, i, k: Integer;
h: String;
begin
AssignFile(f, FileName);
Reset(f);
with T1 do
begin
Readln(f, j);
ColCount := j;
Readln(f, j);
RowCount := j;
for i := 0 to ColCount - 1 do
for k := 0 to RowCount - 1 do
begin
Readln(f, h);
Cells[i, k] := h;
end;
end;
CloseFile(f);
end;
procedure TForm1.N2Click(Sender: TObject);
begin
If Open.Execute then
LoadT1(T1,Open.FileName);
end;
procedure TForm1.N3Click(Sender: TObject);
begin
If Save.Execute then
SaveT1(T1,Save.FileName);
end;
end.
Создадим в меню пункт «Файл», в котором будут предусмотрены подпункты – «Считать из файла» и «Сохранить в файл». Это удобно для больших объемов информации в таблицах и при отладке проекта, т.к. можно не вводить каждый раз при запуске информацию в таблицу.
