Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Класс

63K
26 декабря 2010 года
Nehemian
2 / / 06.11.2010
Дядьки и Тетьки, помогите, есть такой вопрос: у меня есть табличка stringgrid в которой поля называются " Номер Назвагие Жанр Учет". Класс я сделал такой:
 
Код:
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.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог