TBook=class
Nomer:integer;
Nazv:string;
Zanr:string;
ycet:integer;
end;
Класс
Код:
Вот, подскажите как из таблицы начиная со второй строки классу присвоить значения что в таблице ???
Так, вообще задача выглядит так:Создать класс TBook, экземпляры которого описывают книги, хранящиеся в фонде университетской библиотеки. В числе полей объекта должны присутствовать код библиотечного учета, ее выходные данные, тематический раздел,
текущее состояние (в фонде,выдана с указанием даты выдачи и фамилии читаталя, на реставрации). Методы класса должны обеспечивать выполнение операций по выдаче и приему книги,просмотр ее текущего состояния, определение количества экземпляров данной книги в фондах библиотеки.
Буду благодарен тому кто выложит свой вариант, или хотя бы с чем-нибудь поможет.
Вот моя задача. Работает если не сильно эксперементировать.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids,ComObj;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
Button2: TButton;
StringGrid2: TStringGrid;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
StringGrid3: TStringGrid;
Button7: TButton;
ComboBox1: TComboBox;
Edit1: TEdit;
Button8: TButton;
Label1: TLabel;
Button9: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TBook = class
Kod:integer;
Zvan:string;
Zanr:string;
ycet:integer;
end;
var
Form1: TForm1;
MBook,MyBook:TBook;
n,re,ty:integer;
gt:integer; gt1:string;
implementation
uses Unit2;
function SaveAsExcelFile(stringGrid: TstringGrid; FileName: string): Boolean;
const
xlWBATWorksheet = -4167;
var
Row, Col: Integer;
GridPrevFile: string;
XLApp, Sheet: OLEVariant;
begin
Result := False;
XLApp := CreateOleObject('Excel.Application');
try
XLApp.Visible := False;
XLApp.Workbooks.Add(xlWBatWorkSheet);
Sheet := XLApp.Workbooks[1].WorkSheets[1];
Sheet.Name := 'My Sheet Name';
for col := 0 to stringGrid.ColCount - 1 do
for row := 0 to stringGrid.RowCount - 1 do
Sheet.Cells[row + 1, col + 1] := stringGrid.Cells[col, row];
try
XLApp.Workbooks[1].SaveAs(FileName);
Result := True;
except
// Error ?
end;
finally
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
XLAPP := Unassigned;
Sheet := Unassigned;
end;
end;
end;
function Xls_To_StringGrid(AGrid: TStringGrid; AXLSFile: string): Boolean;
const
xlCellTypeLastCell = $0000000B;
var
XLApp, Sheet: OLEVariant;
RangeMatrix: Variant;
x, y, k, r: Integer;
begin
Result := False;
// Create Excel-OLE Object
XLApp := CreateOleObject('Excel.Application');
try
// Hide Excel
XLApp.Visible := False;
// Open the Workbook
XLApp.Workbooks.Open(AXLSFile);
// Sheet := XLApp.Workbooks[1].WorkSheets[1];
Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];
// In order to know the dimension of the WorkSheet, i.e the number of rows
// and the number of columns, we activate the last non-empty cell of it
Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
// Get the value of the last row
x := XLApp.ActiveCell.Row;
// Get the value of the last column
y := XLApp.ActiveCell.Column;
// Set Stringgrid's row &col dimensions.
AGrid.RowCount := x;
AGrid.ColCount := y;
// Assign the Variant associated with the WorkSheet to the Delphi Variant
RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value;
// Define the loop for filling in the TStringGrid
k := 1;
repeat
for r := 1 to y do
AGrid.Cells[(r - 1), (k - 1)] := RangeMatrix[K, R];
Inc(k, 1);
AGrid.RowCount := k + 1;
until k > x;
// Unassign the Delphi Variant Matrix
RangeMatrix := Unassigned;
finally
// Quit Excel
if not VarIsEmpty(XLApp) then
begin
// XLApp.DisplayAlerts := False;
XLApp.Quit;
XLAPP := Unassigned;
Sheet := Unassigned;
Result := True;
end;
end;
end;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if Xls_To_StringGrid(StringGrid1, 'D:\Table1.xls') then
ShowMessage('Библиотека Загружена!!!');
n:=3;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
stringgrid1.ColWidths[1]:=80;
stringgrid2.ColWidths[1]:=80;
stringgrid3.ColWidths[1]:=80;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.StringGrid2.Visible:=true;
form1.Button3.Visible:=true;
stringgrid2.Cells[0,0]:='Код';
stringgrid2.Cells[1,0]:='Название';
stringgrid2.Cells[2,0]:='Жанр';
stringgrid2.Cells[3,0]:='Учет';
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
MBook:=Tbook.create;
MBook.Kod:=strtoint(stringgrid2.cells[0,1]);
MBook.Zvan:=stringgrid2.cells[1,1];
MBook.Zanr:=stringgrid2.cells[2,1];
MBook.ycet:=strtoint(stringgrid2.Cells[3,1]);
form1.Button4.Visible:=true;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
n:=3;
stringgrid1.Cells[0,n]:=inttostr(MBook.Kod);
stringgrid1.Cells[1,n]:=MBook.Zvan;
stringgrid1.Cells[2,n]:=MBook.Zanr;
stringgrid1.Cells[3,n]:=inttostr(MBook.ycet);
n:=n+1;
form1.Button5.Visible:=true;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
if SaveAsExcelFile(stringGrid1, 'D:\Table1.xls') then
ShowMessage('Библиотека Сохранена!!!');
form1.Button3.Visible:=false;
form1.Button4.Visible:=false;
form1.Button5.Visible:=false;
form1.StringGrid2.Visible:=false;
// MBook.Destroy;
form1.Button8.Visible:=false;
form1.StringGrid3.Visible:=false;
form1.label1.Visible:=false;
form1.Button9.Visible:=false;
form1.Button7.Visible:=false;
form1.ComboBox1.Visible:=false;
form1.Edit1.Visible:=false;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
form1.ComboBox1.Visible:=true;
form1.Edit1.Visible:=true;
form1.StringGrid3.Visible:=true;
form1.Button7.Visible:=true;
stringgrid3.Cells[0,0]:='Код';
stringgrid3.Cells[1,0]:='Название';
stringgrid3.Cells[2,0]:='Жанр';
stringgrid3.Cells[3,0]:='Учет';
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
gt:=combobox1.ItemIndex; gt1:=edit1.text;
form1.Button8.Visible:=true;
end;
procedure TForm1.Button8Click(Sender: TObject);
var qwer:integer;
begin
MyBook:=TBook.Create;
for qwer:=1 to n do
begin
if stringgrid1.Cells[gt,qwer] = gt1 then re:=qwer;
end;
MyBook.Kod:=strtoint(stringgrid1.cells[0,re]);
MyBook.Zvan:=stringgrid1.cells[1,re];
MyBook.Zanr:=stringgrid1.cells[2,re];
MyBook.ycet:=strtoint(stringgrid1.Cells[3,re]);
stringgrid3.Cells[0,1]:=inttostr(MyBook.Kod);
stringgrid3.Cells[1,1]:=MyBook.Zvan;
stringgrid3.Cells[2,1]:=MyBook.Zanr;
stringgrid3.Cells[3,1]:=inttostr(MyBook.ycet);
if stringgrid3.Cells[1,4] = '0' then label1.caption:='Книги Нет =('
else begin label1.caption:='Книга Есть =) Забрать ???' ;
form1.Button9.Visible:=true;
end;
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
stringgrid1.cells[3,re]:=inttostr(0);
form1.Button5.Visible:=true;
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids,ComObj;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
Button2: TButton;
StringGrid2: TStringGrid;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
StringGrid3: TStringGrid;
Button7: TButton;
ComboBox1: TComboBox;
Edit1: TEdit;
Button8: TButton;
Label1: TLabel;
Button9: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TBook = class
Kod:integer;
Zvan:string;
Zanr:string;
ycet:integer;
end;
var
Form1: TForm1;
MBook,MyBook:TBook;
n,re,ty:integer;
gt:integer; gt1:string;
implementation
uses Unit2;
function SaveAsExcelFile(stringGrid: TstringGrid; FileName: string): Boolean;
const
xlWBATWorksheet = -4167;
var
Row, Col: Integer;
GridPrevFile: string;
XLApp, Sheet: OLEVariant;
begin
Result := False;
XLApp := CreateOleObject('Excel.Application');
try
XLApp.Visible := False;
XLApp.Workbooks.Add(xlWBatWorkSheet);
Sheet := XLApp.Workbooks[1].WorkSheets[1];
Sheet.Name := 'My Sheet Name';
for col := 0 to stringGrid.ColCount - 1 do
for row := 0 to stringGrid.RowCount - 1 do
Sheet.Cells[row + 1, col + 1] := stringGrid.Cells[col, row];
try
XLApp.Workbooks[1].SaveAs(FileName);
Result := True;
except
// Error ?
end;
finally
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
XLAPP := Unassigned;
Sheet := Unassigned;
end;
end;
end;
function Xls_To_StringGrid(AGrid: TStringGrid; AXLSFile: string): Boolean;
const
xlCellTypeLastCell = $0000000B;
var
XLApp, Sheet: OLEVariant;
RangeMatrix: Variant;
x, y, k, r: Integer;
begin
Result := False;
// Create Excel-OLE Object
XLApp := CreateOleObject('Excel.Application');
try
// Hide Excel
XLApp.Visible := False;
// Open the Workbook
XLApp.Workbooks.Open(AXLSFile);
// Sheet := XLApp.Workbooks[1].WorkSheets[1];
Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];
// In order to know the dimension of the WorkSheet, i.e the number of rows
// and the number of columns, we activate the last non-empty cell of it
Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
// Get the value of the last row
x := XLApp.ActiveCell.Row;
// Get the value of the last column
y := XLApp.ActiveCell.Column;
// Set Stringgrid's row &col dimensions.
AGrid.RowCount := x;
AGrid.ColCount := y;
// Assign the Variant associated with the WorkSheet to the Delphi Variant
RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value;
// Define the loop for filling in the TStringGrid
k := 1;
repeat
for r := 1 to y do
AGrid.Cells[(r - 1), (k - 1)] := RangeMatrix[K, R];
Inc(k, 1);
AGrid.RowCount := k + 1;
until k > x;
// Unassign the Delphi Variant Matrix
RangeMatrix := Unassigned;
finally
// Quit Excel
if not VarIsEmpty(XLApp) then
begin
// XLApp.DisplayAlerts := False;
XLApp.Quit;
XLAPP := Unassigned;
Sheet := Unassigned;
Result := True;
end;
end;
end;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if Xls_To_StringGrid(StringGrid1, 'D:\Table1.xls') then
ShowMessage('Библиотека Загружена!!!');
n:=3;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
stringgrid1.ColWidths[1]:=80;
stringgrid2.ColWidths[1]:=80;
stringgrid3.ColWidths[1]:=80;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.StringGrid2.Visible:=true;
form1.Button3.Visible:=true;
stringgrid2.Cells[0,0]:='Код';
stringgrid2.Cells[1,0]:='Название';
stringgrid2.Cells[2,0]:='Жанр';
stringgrid2.Cells[3,0]:='Учет';
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
MBook:=Tbook.create;
MBook.Kod:=strtoint(stringgrid2.cells[0,1]);
MBook.Zvan:=stringgrid2.cells[1,1];
MBook.Zanr:=stringgrid2.cells[2,1];
MBook.ycet:=strtoint(stringgrid2.Cells[3,1]);
form1.Button4.Visible:=true;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
n:=3;
stringgrid1.Cells[0,n]:=inttostr(MBook.Kod);
stringgrid1.Cells[1,n]:=MBook.Zvan;
stringgrid1.Cells[2,n]:=MBook.Zanr;
stringgrid1.Cells[3,n]:=inttostr(MBook.ycet);
n:=n+1;
form1.Button5.Visible:=true;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
if SaveAsExcelFile(stringGrid1, 'D:\Table1.xls') then
ShowMessage('Библиотека Сохранена!!!');
form1.Button3.Visible:=false;
form1.Button4.Visible:=false;
form1.Button5.Visible:=false;
form1.StringGrid2.Visible:=false;
// MBook.Destroy;
form1.Button8.Visible:=false;
form1.StringGrid3.Visible:=false;
form1.label1.Visible:=false;
form1.Button9.Visible:=false;
form1.Button7.Visible:=false;
form1.ComboBox1.Visible:=false;
form1.Edit1.Visible:=false;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
form1.ComboBox1.Visible:=true;
form1.Edit1.Visible:=true;
form1.StringGrid3.Visible:=true;
form1.Button7.Visible:=true;
stringgrid3.Cells[0,0]:='Код';
stringgrid3.Cells[1,0]:='Название';
stringgrid3.Cells[2,0]:='Жанр';
stringgrid3.Cells[3,0]:='Учет';
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
gt:=combobox1.ItemIndex; gt1:=edit1.text;
form1.Button8.Visible:=true;
end;
procedure TForm1.Button8Click(Sender: TObject);
var qwer:integer;
begin
MyBook:=TBook.Create;
for qwer:=1 to n do
begin
if stringgrid1.Cells[gt,qwer] = gt1 then re:=qwer;
end;
MyBook.Kod:=strtoint(stringgrid1.cells[0,re]);
MyBook.Zvan:=stringgrid1.cells[1,re];
MyBook.Zanr:=stringgrid1.cells[2,re];
MyBook.ycet:=strtoint(stringgrid1.Cells[3,re]);
stringgrid3.Cells[0,1]:=inttostr(MyBook.Kod);
stringgrid3.Cells[1,1]:=MyBook.Zvan;
stringgrid3.Cells[2,1]:=MyBook.Zanr;
stringgrid3.Cells[3,1]:=inttostr(MyBook.ycet);
if stringgrid3.Cells[1,4] = '0' then label1.caption:='Книги Нет =('
else begin label1.caption:='Книга Есть =) Забрать ???' ;
form1.Button9.Visible:=true;
end;
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
stringgrid1.cells[3,re]:=inttostr(0);
form1.Button5.Visible:=true;
end;
end.