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

Вниз

Отображение события в инспекторе объектов   Найти похожие ветки 

 
Stanislav_SM   (2004-12-30 20:11) [0]

Ув. мастера, помогите пожалуйста. Я создал фрейм. Для него описал событие (в published), но когда я его помещаю на основную форму, то в инспекторе объектов его нет. Что не так.


type
 TSelectRecEvent = procedure(ID: Integer) of object;

 TGrItemsFrame = class(TFrame)
   Panel1: TPanel;
   StatusBar1: TStatusBar;
   DBGridEh1: TDBGridEh;
   DBTreeFilter1: TDBTreeFilter;
   Button1: TButton;
   procedure DBGridEh1DblClick(Sender: TObject);
 private
   FOnSelectRec: TSelectRecEvent;
   procedure DoSelectRec(ID: Integer);
 published
   property OnSelectRec: TSelectRecEvent read FOnSelectRec write FOnSelectRec;

 end;

implementation
uses DMUnit;
{$R *.dfm}

procedure TGrItemsFrame.DoSelectRec(ID: Integer);
begin
 if Assigned(FOnSelectRec) then FOnSelectRec(ID);
end;

procedure TGrItemsFrame.DBGridEh1DblClick(Sender: TObject);
var ID:integer;
begin
if not DM.Items.Active then exit;
if not DM.Items.RecordCount>0 then exit;
ID:=DM.Items.FieldByName("I_ID").AsInteger;
DoSelectRec(ID);
end;

end.



 
Юрий Зотов ©   (2004-12-31 00:00) [1]

В коде ошибок нет (есть мелкие погрешности, но они не принципиальны). Суть в том, что для того, чтобы новое свойство (а события - это те же самые свойства) фрейма (формы, модуля данных) появилось в ИО, для этого фрейма (формы, модуля данных) надо зарегистрировать CustomModule (см. RegisterCustomModule).

Но тут возникнут 2 новые проблемы. Во-первых, какой именно класс CustomModule надо регистрировать именно для фрейма и как к этому классу достучаться - об этом, похоже, известно только самому Borland"у. Во-вторых, если даже этот CustomModule и удастся зарегистрировать, то на наследниках Вашего фрейма исчезнут все компоненты, лежащие на предке (откроете DFM - увидите причину в первом же слове). В общем, с этой задачкой придется поковыряться немало (и далеко не факт, что ее вообще удастся решить), а готового решения тут, похоже, нет.

Есть простой (но не всегда приемлемый) способ - зарегистрировать фрейм в палитре, как компонент. По идее, тогда и события должны появиться, и лежащие компоненты не должны исчезнуть - но фрейм уже перестанет быть собственно фреймом.


 
prosoft   (2004-12-31 10:15) [2]

См. ответ здесь
http://delphimaster.net/view/5-1104132825/


 
Stanislav_SM   (2005-01-10 21:37) [3]

Спасибо за совет



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

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

Наверх




Память: 0.47 MB
Время: 0.058 c
14-1127898327
nk
2005-09-28 13:05
2005.10.23
Чем можно открыть автокадовские файлы... кроме автокада ?!! ))


9-1118244727
Novouralsk
2005-06-08 19:32
2005.10.23
Special To grouzd[e]v


14-1128062277
Vladimir88
2005-09-30 10:37
2005.10.23
Delphi 2005


11-1108772659
Lars
2005-02-19 03:24
2005.10.23
MultiLine edit box Horizontal Scroll bar


8-1117531654
Pahan07
2005-05-31 13:27
2005.10.23
Фильтрация шума