Главная страница
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.051 c
3-1126454256
VladBD
2005-09-11 19:57
2005.10.23
Нумерация записей с учетом сортировки


3-1126085667
2bj
2005-09-07 13:34
2005.10.23
переход фокуса между компонентами на DBCtrlGrid-е


8-1117266368
MaFon
2005-05-28 11:46
2005.10.23
Здесь была тема про детектор движения.


10-1105978365
Uran
2005-01-17 19:12
2005.10.23
Выгрузить страницу в отдельный файл.


14-1128204297
Ученик чародея
2005-10-02 02:04
2005.10.23
Как вы оцениваете баланс школьной программы?