Текущий архив: 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.46 MB
Время: 0.039 c