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

Вниз

Пишу свой класс. Прошу рекомендации, замечания   Найти похожие ветки 

 
saNat ©   (2005-01-23 17:18) [0]

Доброго времени суток.
В моем проекте требуется работа с Excel"ом. Поэтому решил написать класс для работы с ним. В связи с малым опытом, прошу помочь в разработке.
Предполагается создание одельного компонента. Пока для удобства отладки реализую в отдельном модуле. Ниже представлен код конструктора, деструктора и свойства, указывающие создан объетк или нет и видимость окна Excel.


//Компонент для работы с Excel
Unit ExcelUnit;

Interface

Uses
Classes,ComObj;

Type
//Объявление класса
TEVAExcel=Class(TObject)
 Public

 Private
  //Поле связи с объектом
  This:Variant;
  //Поле результата создания экземпляра
  fEnabled:Boolean;
  //Поле видимости экземпляра
  fVisible:Boolean;
  //Метод чтения результата создания экземпляра
  Function GetEnabled:Boolean;
  //Метод чтения видимости экземпляра
  Function GetVisible:Boolean;
  //Метод записи видимости экземпляра
  Procedure SetVisible(Param:Boolean);

 Published
  //Свойство результата создания объекта
  Property Enabled:Boolean
   Read  GetEnabled
   Default False;
  //Свойство видимости объекта
  Property Visible:Boolean
   Read GetVisible
   Write SetVisible
   Default False;
  //Конструктор
  Constructor Create;
  //Деструктор
  Procedure Free;

End;

Implementation

Constructor TEVAExcel.Create;
Begin
Inherited;
fEnabled:=True;
Try
 This:=CreateOleObject("Excel.Application");
Except
 fEnabled:=False;
End;
End;

Function TEVAExcel.GetEnabled:Boolean;
Begin
Result:=fEnabled;
End;

Function TEVAExcel.GetVisible:Boolean;
Begin
Result:=fVisible;
End;

Procedure TEVAExcel.SetVisible(Param:Boolean);
Begin
fVisible:=Param;
Try
 This.Visible:=Param;
Except
 fVisible:=Not Param;
End;
End;

Procedure TEVAExcel.Free;
Begin
fEnabled:=False;
Try
 This.Quit;
Except
 fEnabled:=True;
End;
Inherited;
End;

End.


С уважением, ЕВА


 
GanibalLector ©   (2005-01-23 17:53) [1]

А чем стандартный не устраивает?
Уже б писал наследника от него(от стандартного т.е.)


 
saNat ©   (2005-01-23 18:08) [2]

А какой стандартный?

Продолжая свою канитель. Дописал методы добавления/удаления книг и листов.

//Êîìïîíåíò äëÿ ðàáîòû ñ Excel
Unit ExcelUnit;

Interface

Uses
Classes,ComObj;

Type
//Îáúÿâëåíèå êëàññà
TEVAExcel=Class(TObject)
 Public

 Private
  //Ïîëå ñâÿçè ñ îáúåêòîì
  This:Variant;
  //Ïîëå ðåçóëüòàòà ñîçäàíèÿ ýêçåìïëÿðà
  fEnabled:Boolean;
  //Ïîëå âèäèìîñòè ýêçåìïëÿðà
  fVisible:Boolean;
  //Ìåòîä ÷òåíèÿ ðåçóëüòàòà ñîçäàíèÿ ýêçåìïëÿðà
  Function GetEnabled:Boolean;
  //Ìåòîä ÷òåíèÿ âèäèìîñòè ýêçåìïëÿðà
  Function GetVisible:Boolean;
  //Ìåòîä çàïèñè âèäèìîñòè ýêçåìïëÿðà
  Procedure SetVisible(Param:Boolean);

 Published
  //Ñâîéñòâî ðåçóëüòàòà ñîçäàíèÿ îáúåêòà
  Property Enabled:Boolean
   Read  GetEnabled
   Default False;
  //Ñâîéñòâî âèäèìîñòè îáúåêòà
  Property Visible:Boolean
   Read GetVisible
   Write SetVisible
   Default False;
  //Êîíñòðóêòîð
  Constructor Create;
  //Äîáàâèòü êíèãó
  Function AddBook:Boolean;
  //Óäàëèòü êíèãó
  Function FreeBook:Boolean;
  //Äîáàâèòü ëèñò
  Function AddPage(Name:String):Boolean;
  //Óäàëèòü ëèñò
  Function FreePage(Number:Variant):Boolean;
  //Äåñòðóêòîð
  Procedure Free;

End;

Implementation

Constructor TEVAExcel.Create;
Begin
Inherited;
fEnabled:=True;
Try
 This:=CreateOleObject("Excel.Application");
Except
 fEnabled:=False;
End;
End;

Function TEVAExcel.GetEnabled:Boolean;
Begin
Result:=fEnabled;
End;

Function TEVAExcel.GetVisible:Boolean;
Begin
Result:=fVisible;
End;

Procedure TEVAExcel.SetVisible(Param:Boolean);
Begin
fVisible:=Param;
Try
 This.Visible:=Param;
Except
 fVisible:=Not Param;
End;
End;

Function TEVAExcel.AddBook:Boolean;
Begin
Result:=True;
Try
 This.WorkBooks.Add;
Except
 Result:=False;
End;
End;

Function TEVAExcel.FreeBook:Boolean;
Begin
Result:=True;
Try
 This.ActiveWorkBook.Close;
Except
 Result:=False;
End;
End;

Function TEVAExcel.AddPage(Name:String):Boolean;
Begin
Result:=True;
Try
 This.Sheets.Add;
 This.ActiveSheet.Name:=Name;
Except
 Result:=False;
End;
End;

Function TEVAExcel.FreePage(Number:Variant):Boolean;
Begin
Result:=True;
Try
 This.DisplayAlerts:=False;
 This.Sheets[Number].Delete;
 This.DisplayAlerts:=True;
Except
 Result:=False;
End;
End;

Procedure TEVAExcel.Free;
Begin
fEnabled:=False;
Try
 This.Quit;
Except
 fEnabled:=True;
End;
Inherited;
End;

End.


Кстати, возник вопрос. У меня объявлено свойство, например список имен книг. Как сделать чтобы этот список отображался в инспекторе объектов?



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

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

Наверх




Память: 0.49 MB
Время: 0.036 c
1-1106685428
SergP
2005-01-25 23:37
2005.02.06
MDI и Меню


14-1106207207
guest_Dmitry
2005-01-20 10:46
2005.02.06
Процедуры в IB


14-1106048489
Layner
2005-01-18 14:41
2005.02.06
неужели такие бывают (это я про индуса что ниже)


4-1103553881
GuAV
2004-12-20 17:44
2005.02.06
GlobalAddAtom - Limitations ?


4-1103448057
banderas
2004-12-19 12:20
2005.02.06
Drag&Drop файлов