Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.26;
Скачать: CL | DM;

Вниз

Помогите разобраться с ООП   Найти похожие ветки 

 
ZDenis ©   (2004-09-07 13:55) [0]

Есть описание класса TPrinter и пара методов как правильней использовать эти методы:например сначала заполнять скажем поля объекта Printer,а затем вызывать метод AddItem
Printer:=TPrinter.Create;
Printer.name:="HP";
Printer.SerN:=="bnnmbb"
......
Printer.Add;
или как в приведенном коде.
unit uPrinter;

interface
uses
 SysUtils, Classes;
Type
 TPrinter=class
private
 fid:integer;
 fName:string;
 fSerN:string;
 fInvN:string;
 fUserid:integer;
 fStatusid:smallint;
 fPrim:string;
 fKomnataId:integer;
 public
  constructor Create;
  procedure addItem(name,SerN,InvN,Komnata,Prim:string);
  procedure EditItem(Id:integer;NewName,NewSerN,NewInvN,NewKomnata,NewPrim:string) ;
end;
implementation
uses UDm;
constructor TPrinter.Create;
 begin
 end;
procedure TPrinter.addItem(Name,SerN,InvN,Komnata,prim:string);
 begin
  with DM1.SP1 do begin
   ProcedureName :="AddPrinter";
   Parameters.Refresh;
   Parameters.ParamByName("@PrinterName").Value :=name;
   Parameters.ParamByName("@PrinterSerN").Value :=SerN;
   Parameters.ParamByName("@PrinterInvN").Value :=InvN;
   Parameters.ParamByName("@Komnata").Value :=Komnata;
   Parameters.ParamByName("@prim").Value :=prim;
   ExecProc;
  end;
  Dm1.SPqPrinter.Close;
  Dm1.SPqPrinter.open;
end;
procedure TPrinter.EditItem(Id:integer;NewName,NewSerN,NewInvN,NewKomnata,NewPrim:string)  ;
begin
 with DM1.SP1 do begin
  close;
  ProcedureName :="EditPrinter";
  Parameters.Refresh;
  Parameters.ParamByName("@PrinterName").Value :=NewName;
  Parameters.ParamByName("@PrinterSerN").Value :=NewSerN;
  Parameters.ParamByName("@PrinterInvN").Value :=NewInvN;
  Parameters.ParamByName("@Komnata").Value :=NewKomnata;
  Parameters.ParamByName("@prim").Value :=NewPrim;
  Parameters.ParamByName("@PrinterID").Value :=ID;
  ExecProc;
 end;
dm1.SPqPrinter.Close;
dm1.SPqPrinter.open;
end;
end.


 
Rem   (2004-09-07 14:35) [1]

Правильно, скорее всего, так:
Printer:=TPrinter.Create;
Printer.Add;
Printer.name:="HP";
Printer.SerN:=="bnnmbb"
......


Но вообще, вопрос поставлен некорректно:
1. Используется класс TPrinter, реализованный также в модуле Printers. Какое отношение между ними?
2. Речь, судя по всему, идет про базы данных, а в вопросе - про ООП.
Поэтому могу ошибиться с ответом, так как, признаюсь, не совсем его понял.
Прежде чем задавать вопрос - сформулируйте его правильно.

"Правильно заданный вопрос - половина ответа" (С)...


 
ZDenis ©   (2004-09-07 14:52) [2]

есть БД,таблица скажем Printer,хранимые процедуры реализующие добавление,редактирование,удаление записи и т.п.
Нужно написать клиентскую часть с использованием ООП.
Как правильно описать класс и методы класса например TPrinter?


 
Skyle ©   (2004-09-07 14:54) [3]


> [2] ZDenis ©   (07.09.04 14:52)

А что этот TPrinter должен делать?
И какое это отношение имеет к БД, таблицам и прочей нечисти?


 
ZDenis ©   (2004-09-07 15:05) [4]

>Skyle ©
TPrinter должен реализовывать возможность добавления,редактирования и удаления записи из таблици Printer.
Например
var Printer:Trinter;
begin
.....
Printer.addItem;
.....
end;


 
Defunct ©   (2004-09-08 03:08) [5]

С чем возникли трудности? С описанием класса или с реализацией?

Пока что таблицы у вас нет. В приведенном коде есть только одна запись.

Вместо EditItem, сделайте Item доступным.
Вместо AddItem, cделайте функцию Add, которая возвращает вновь созданный объект.

TPrinterTable = class
private
  FItems  : Array of TPrinterTable;
  fid        : integer;
  fName      : string;
  fSerN      : string;
  fInvN      : string;
  fUserid    : integer;
  fStatusid  : smallint;
  fPrim      : string;
  fKomnataId : integer;
  FCount     : Integer;

  Procedure SetItem( Index: Integer; ATable: TPrinterTable);
  Function  GetItem( Index: Integer):TPrinterTable;
public
  Property Count: Integer Read FCount;
  Property Items[Index: Integer]:TPrinterTable Read GetItem Write SetItem;
  Property  Id:Integer Read FId Write SetId;
  ...
  ...
  ...
  < все поля данных вынести как свойства>
  ...

  Function    Add:TPrinterTable;
  Function    Delete(ItemIndex):Boolean;
  Function    Select(ItemIndex):Boolean;
  .. и т.п.

  Constructor Create;
  Destructor  Destroy;
End;

Function TPrinterTable.Add;
Begin
 Inc(FCount);
 SetLength(FItems, FCount);
 Result := TPrinterTable.Create;
 FItems[ FCount -1] := Result;
End;



Страницы: 1 вся ветка

Текущий архив: 2004.09.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.055 c
4-1091763988
Петр
2004-08-06 07:46
2004.09.26
ком-порт


1-1095072110
limon_
2004-09-13 14:41
2004.09.26
поиск в combobox


1-1094908924
][ncognito
2004-09-11 17:22
2004.09.26
Опять вопрос по ТриВью


14-1094236128
noname.txt
2004-09-03 22:28
2004.09.26
Как узнать PageRank и ТИц страницы???


14-1094640803
Димитрий
2004-09-08 14:53
2004.09.26
Библиотеки компонентов параллельного программирования