Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ по работе с таблицей в Делфи.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
247.81 Кб
Скачать

Работа со всей строкой либо со всеми элементами столбца

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.

Создадим в меню пункт «Файл», в котором будут предусмотрены подпункты – «Считать из файла» и «Сохранить в файл». Это удобно для больших объемов информации в таблицах и при отладке проекта, т.к. можно не вводить каждый раз при запуске информацию в таблицу.