unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, Grids, StdCtrls; type tVid=(vesovoy,shtuchniy); tZ=record No:byte; Data:tdate;//string[8]; Tovar:string[12]; Firma:string[12]; case Vid:tVid of vesovoy:(KolSortov:1..3; Sort:1..3; VesKg:real; Cena1Kg:real); shtuchniy:(KolStuk:word; Ves1:real; Cena1:real); end; tfz=file of tz; TForm1 = class(TForm) MainMenu1: TMainMenu; OpenDialog1: TOpenDialog; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; StringGrid1: TStringGrid; Edit1: TEdit; GroupBox1: TGroupBox; Label1: TLabel; Edit2: TEdit; Label2: TLabel; Edit3: TEdit; Label3: TLabel; Edit4: TEdit; Label4: TLabel; Edit5: TEdit; Label5: TLabel; Edit6: TEdit; Button1: TButton; Button2: TButton; GroupBox2: TGroupBox; Label6: TLabel; Edit7: TEdit; Label7: TLabel; Edit8: TEdit; Label8: TLabel; Edit9: TEdit; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; procedure N2Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private Procedure MyShowString(n:integer); public { Public declarations } end; var Form1: TForm1; S:string; NomerStroki:integer; implementation {$R *.dfm} procedure TabClear; var iStroki,iStolbca:integer; begin //очистка ячеек таблицы, но не верхней строки for iStolbca:=0 to Form1.StringGrid1.ColCount-1 do for iStroki:=1 to Form1.StringGrid1.RowCount do Form1.StringGrid1.Cells[iStolbca,iStroki]:=''; end;//procedure TabClear; procedure zToRow(iStroki:integer;const Z:tZ); begin //заполнение ячеек iStroki-той строки основной таблицы //данными из полей записи Z with Z, Form1.StringGrid1 do begin Cells[0,iStroki]:=IntToStr(No); Cells[1,iStroki]:=DateToStr(Data); Cells[2,iStroki]:=Tovar; Cells[3,iStroki]:=Firma; case Vid of shtuchniy:begin Cells[4,iStroki]:='ШТ'; Cells[5,iStroki]:=IntToStr(KolStuk); Cells[6,iStroki]:=FloatToStr(Ves1); Cells[7,iStroki]:=FloatToStr(Cena1); end; vesovoy : begin Cells[4,iStroki]:='КГ'; Cells[8,iStroki]:=IntToStr(KolSortov); Cells[9,iStroki]:=IntToStr(Sort); Cells[10,iStroki]:=FloatToStr(VesKg); Cells[11,iStroki]:=FloatToStr(Cena1Kg); end; end;//case Vid end;//with Z end;//procedure zToRow(iStroki:integer;const Z:tZ) Procedure TForm1.MyShowString(n:integer); begin // edit1.Text:=inttostr(n); end; procedure LoadFromFileOfTz; var Z:tZ; Fz:tFz; iStroki:byte; begin //Загружает файл с именем S в таблицу AssignFile(Fz,S); reset(Fz); //задать число строк таблицы //равным больше числа записей в файле Form1.StringGrid1.RowCount:=FileSize(Fz)+1; TabClear ;//очистить таблицу iStroki:=1;//счетчик номеров строк while not eof(Fz) do with Z do begin read(Fz,Z); //заполнить строку таблицы данными из записи Z zToRow(iStroki,Z); inc(iStroki); end; closefile(Fz); end;//procedure LoadFromFileOfTz procedure TForm1.N2Click(Sender: TObject); begin // if opendialog1.Execute then begin s:=OpenDialog1.Filename; LoadFromFileOfTz; NomerStroki:=1; MyShowString(1); end; end; procedure TForm1.N3Click(Sender: TObject); begin // end; procedure TabForFile; var i:integer; begin //УСТАНОВКА ПАРАМЕТРОВ ТАБЛИЦЫ ДЛЯ //ДАННЫХ ИЗ ФАЙЛА ГРУПП (см. тип tFz=file of tZ) //УСТАНОВКА ЧИСЛА СТРОК И СТОЛБЦОВ Form1.StringGrid1.ColCount:=12; Form1.StringGrid1.RowCount:=2; //УСТАНОВКА ШИРИНЫ СТОЛБЦОВ Form1.StringGrid1.ColWidths[0]:=20;//Ключ Form1.StringGrid1.ColWidths[1]:=70; //Дата Form1.StringGrid1.ColWidths[2]:=70; //Товар Form1.StringGrid1.ColWidths[3]:=70; //Изготовитель Form1.StringGrid1.ColWidths[4]:=35;// шт/кг Form1.StringGrid1.ColWidths[5]:=60; //Количество упаковок Form1.StringGrid1.ColWidths[6]:=65; //Вес упаковки Form1.StringGrid1.ColWidths[7]:=75; //Цена упаковки Form1.StringGrid1.ColWidths[8]:=75; //Количество сортов Form1.StringGrid1.ColWidths[9]:=35; //Сорт Form1.StringGrid1.ColWidths[10]:=50; //Вес в килограммах Form1.StringGrid1.ColWidths[11]:=60; //Цена за килограмм //ВЫВОД ЗАГОЛОВКОВ СТОЛБЦОВ Form1.StringGrid1.Cells[0,0]:='No'; Form1.StringGrid1.Cells[1,0]:=' ДАТА'; Form1.StringGrid1.Cells[2,0]:=' ТОВАР'; Form1.StringGrid1.Cells[3,0]:=' ФИРМА'; Form1.StringGrid1.Cells[4,0]:='шт/кг'; Form1.StringGrid1.Cells[5,0]:='КОЛ ШТУК'; Form1.StringGrid1.Cells[6,0]:='ВЕС ШТУКИ'; Form1.StringGrid1.Cells[7,0]:='ЦЕНА ШТУКИ'; Form1.StringGrid1.Cells[8,0]:='КОЛ СОРТОВ'; Form1.StringGrid1.Cells[9,0]:=' СОРТ'; Form1.StringGrid1.Cells[10,0]:=' ВЕС [кг]'; Form1.StringGrid1.Cells[11,0]:=' ЦЕНА 1 кг'; //ЗАДАНИЕ ШИРИНЫ ОКНА ТАБЛИЦЫ Form1.StringGrid1.Width:=34; for i:=0 to 11 do Form1.StringGrid1.Width:=Form1.StringGrid1.Width +Form1.StringGrid1.ColWidths[i]; end;//procedure TabForFile; procedure createfil; var f:tfz; procedure createrec(n:integer;data:tdate;tovar,firma:string; kolsortov,sort,ves1:integer; cena1:real); var z:tz; begin z.No:=n; z.Data:=data; z.Tovar:=tovar; z.Vid:=vesovoy; z.Firma:=firma; z.KolSortov:=kolsortov; z.Sort:=sort; z.VesKg:=ves1; z.Cena1Kg:=cena1; write(f,z); end; procedure createrec2(n:integer;data:tdate;tovar,firma:string; kolshtuk:integer;ves1:real; cena1:real); var z:tz; begin z.No:=n; z.Data:=data; z.Tovar:=tovar; z.Vid:=shtuchniy; z.Firma:=firma; z.KolStuk:=kolshtuk; z.Ves1:=ves1; z.Cena1:=cena1; write(f,z); end; begin assignfile(f,'recs.rec'); rewrite(f); createrec(1,01/03/2006,'AAA','Альфа',2,1,200,22.5); createrec(2,12/03/2006,'ААА','Бета',1,1,350,20.8); createrec2(3,22/03/2006,'БББ','Гамма',100,1.5,30); createrec(4,01/04/2006,'AAA','Альфа',2,1,100,22.5); createrec(5,03/04/2006,'БББ','Бета',1,1,110,1.2); createrec2(6,22/04/2006,'ГГГ','Гамма',200,0.3,25.5); closefile(f); end; procedure TForm1.FormCreate(Sender: TObject); begin OpenDialog1.InitialDir:=extractfilepath(application.ExeName); createfil; //StringGrid1.Rows TabForFile;//своей процедурой //размеры и положение формы Form1.Width:=Form1.StringGrid1.Width+24; Form1.Left:=20; Form1.Top:=110; Form1.StringGrid1.Top:=165; Form1.StringGrid1.Left:=8; Edit1.Text:='Файл не загружен'; //Пока S='', файл не загружен на просмотр S:='';//а в дальнейшем S может представлять //спецификацию файла. //Установка размеров формы при отображении //штучного товара и таблицы // MyShowGrid; // MyShowVesTovar; // MyShowShtTovar; // MyEditsClear; end; procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin MyShowString(arow); end; procedure TForm1.Button1Click(Sender: TObject); begin Form1.StringGrid1.Visible:=false; form1.Height:=button3.Top+button3.Height+40; end; procedure TForm1.Button2Click(Sender: TObject); begin Form1.StringGrid1.Visible:=true; form1.Height:=StringGrid1.Top+StringGrid1.Height+40; end; procedure TForm1.Button3Click(Sender: TObject); begin MyShowString(1); end; end.