Главная страница
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.04 c
6-1101062569
KoLoB
2004-11-21 21:42
2005.02.06
Загрузка файла из инета с поcылкой заголовка


3-1104320501
k2
2004-12-29 14:41
2005.02.06
В какую сторону можно оптимизировать запрос?


6-1101386016
aret99
2004-11-25 15:33
2005.02.06
БД в интернете.


1-1106635693
Артем К.
2005-01-25 09:48
2005.02.06
Подскажите, как напечатать графики 3-х TChart(ов) на одном листе?


4-1103546335
grigory
2004-12-20 15:38
2005.02.06
Поиск файла в директории!