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

Вниз

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

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

Наверх





Память: 0.48 MB
Время: 0.043 c
14-1105970093
kaZaNoVa
2005-01-17 16:54
2005.02.06
Online проверка на вирусы


1-1106655181
Antonn
2005-01-25 15:13
2005.02.06
Опять, всем надоевший, StringGrid...


1-1106728327
s_ilnar
2005-01-26 11:32
2005.02.06
считывание файлов в несколько потоков


3-1104912561
makz
2005-01-05 11:09
2005.02.06
Справочник


9-1099156472
lokid7
2004-10-30 21:14
2005.02.06
Сокобан





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский