Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Delphi
Перезагрузить страницу Events и Message создание компонента
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
X-Cite_Forever X-Cite_Forever вне форума
Member
 
Сообщений: 536
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.10.2006
По умолчанию Events и Message создание компонента - 14.12.2006, 20:10

Столкнулся с такой проблемой при создании компонента:

Код:
TWorkBooks=object
   private
   public
    WorkSheets:TWorkSheets;//
    Procedure ActiveWorkBooks(Value:integer);//Установить активную книгу
  end;

TExcelWork = class(TComponent)
  private
    { Private declarations }
    FOnSetCell:TNotifyEvent;//
  protected
    { Protected declarations }
  public
    { Public declarations }
    WorkBooks:TWorkBooks;//
    Constructor Create(AOwner:TComponent);override;//
    Destructor Destroy;override;//
  published
    { Published declarations }
    Property OnSetCell: TNotifyEvent read FOnSetCell write FOnSetCell;//
  end;

implementation

Procedure ActiveWorkBooks(Value:integer);
begin
FF:=Value;
if Assigned(FOnSetCell) then FOnSetCell(Self);
end;
Компонент не должен быть визуальным, как например TImageList
Требуется создать событие например OnSetCell которое будет происходить при вызове процедуры ActiveWorkBooks из объекта TWorkBooks. Требуется чтобы оно было на вкладке Events инспектора свойств => должно быть описано в TExcelWork, но вызываться должно из TWorkBooks. Естественно Delphi не видит, т.к. TWorkBooks является полем в TExcelWork . Как вызвать его?
И второе как послать сообщение этому же компоненту, Handle он не имеет.
Например я думал обойти так.

Код:
TWorkBooks=object
   private
   public
    WorkSheets:TWorkSheets;//
    Procedure ActiveWorkBooks(Value:integer);//Установить активную книгу
  end;

TExcelWork = class(TComponent)
  private
    { Private declarations }
    FOnSetCell:TNotifyEvent;//
    procedure SetAfter(var Msg: TMessage); message EW_SetCellAfter;
  protected
    { Protected declarations }
  public
    { Public declarations }
    WorkBooks:TWorkBooks;//
    Constructor Create(AOwner:TComponent);override;//
    Destructor Destroy;override;//
  published
    { Published declarations }
    Property OnSetCell: TNotifyEvent read FOnSetCell write FOnSetCell;//
  end;

Implementation

procedure TWorkBooks.ActiveWorkBooks(Value: integer);
begin
e.FActiveWorkBooks:=Value;
SendMessage(здесь требуется указать этот же компонент, EW_SetCellAfter, 0, DWORD(PChar(inttostr(Value)))); 
end;

procedure SetAfter(var Msg: TMessage);
begin
if Assigned(FOnSetCell) then FOnSetCell(Self);
end;
Но и это не дало результатов...
Лучше всего конечно же первый способ...
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое создание визуального компонента Light241 Delphi 3 05.11.2009 08:53
Создание плейлиста с помощью компонента ListBox arhan C++ Builder 7 13.11.2008 09:47
Создание редактора свойств vcl компонента A-leXeY C++ Builder 0 26.04.2008 01:41
Создание созданием компонента в С++ Андрейка C. C++ Builder 2 10.03.2006 03:48
Создание своего компонента в Builder Serega_Mexanik C++ Builder 2 15.12.2005 17:36
Создание нового компонента в С++ FOBOSX C++ Builder 12 11.03.2005 16:21
Создание VCL компонента в RunTime juda Delphi 1 31.10.2004 00:26
Создание VCL компонента в RunTime juda C++ Builder 1 07.10.2004 18:34
Создание стрелочного индикатора компонента Spider_Den C++ Builder 10 21.09.2004 18:36
Создание компонента TSearchEdit slip Delphi 0 12.04.2004 13:30
Создание компонента DBLookupComboBox Lightix C++ Builder 2 10.02.2004 19:48
BCB6 создание нового компонента Anonymous C++ Builder 3 03.12.2003 11:17



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов