Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.031 c
14-1094645941
Aspart
2004-09-08 16:19
2004.09.26
Для чего нужна оперативная память принтеру?


4-1092430217
GuAV
2004-08-14 00:50
2004.09.26
Подмена WinAPI функции в своём приложении.


14-1093800846
KilkennyCat
2004-08-29 21:34
2004.09.26
Давно мечтал стать писателем. Вот, мой первый рассказ. Критикуйте


14-1094235698
Piter
2004-09-03 22:21
2004.09.26
Где в IE можно указать пароль от прокси сервера?!


11-1080766748
Максим
2004-04-01 00:59
2004.09.26
Как в RichEdit добавить картинки?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский