Форум: "Компоненты";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];
ВнизОтображение события в инспекторе объектов Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.033 c