![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите разобраться с ООП [D6, MSSQL]
ZDenis © (2004-09-07 13:55:00)Есть описание класса 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.
Defunct (2004-09-08 03:08:00) [1]С чем возникли трудности? С описанием класса или с реализацией?
Пока что таблицы у вас нет. В приведенном коде есть только одна запись.
Вместо 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]:TPrinterTableRead 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;
ZDenis (2004-09-07 15:05:00) [2]>Skyle ©
TPrinter должен реализовывать возможность добавления,редактирования и удаления записи из таблици Printer.
Например
var Printer:Trinter;
begin
.....
Printer.addItem;
.....
end;
Skyle (2004-09-07 14:54:00) [3]
> [2] ZDenis © (07.09.04 14:52)
А что этот TPrinter должен делать?
И какое это отношение имеет к БД, таблицам и прочей нечисти?
ZDenis (2004-09-07 14:52:00) [4]есть БД,таблица скажем Printer,хранимые процедуры реализующие добавление,редактирование,удаление записи и т.п.
Нужно написать клиентскую часть с использованием ООП.
Как правильно описать класс и методы класса например TPrinter?
Rem (2004-09-07 14:35:00) [5]Правильно, скорее всего, так:
Printer:=TPrinter.Create;
Printer.Add;
Printer.name:='HP';
Printer.SerN:=='bnnmbb'
......
Но вообще, вопрос поставлен некорректно:
1. Используется класс TPrinter, реализованный также в модуле Printers. Какое отношение между ними?
2. Речь, судя по всему, идет про базы данных, а в вопросе - про ООП.
Поэтому могу ошибиться с ответом, так как, признаюсь, не совсем его понял.
Прежде чем задавать вопрос - сформулируйте его правильно.
"Правильно заданный вопрос - половина ответа" (С)...