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

Вниз

TAction в форме-потомке.   Найти похожие ветки 

 
tria ©   (2004-02-02 17:02) [0]

Есть форма frm1, в которой объявлен act1:TAction. Есть потомок формы frm2=class(frm1). В ней есть кнопка tbt1 в ToolBar. Ей назначаю tbt.Action:=frm1.act1 (в инспекторе объектов). При запуске на кнопке tbt нет рисунка и при нажатии на нее не вызывается соотв. обработчик. Так и должно быть и я должен перенести определение act1 в frm2 или это как-то лечится?


 
Dedushka_Mazai ©   (2004-02-02 17:10) [1]

наверное, надо просто tbt.Action:=act1


 
tria ©   (2004-02-02 17:21) [2]

Тогда инспектор объектов ругается "Invalid property value".
Напоминаю: tbt.Action:=frm1.act1 это не строка кода, это в инспекторе объектов пытаюсь выставить свойство кнопки tbt в форме-потомке.


 
Dedushka_Mazai ©   (2004-02-02 17:25) [3]

приведи объявления для обеих форм.


 
tria ©   (2004-02-02 17:29) [4]

Удалив все ненужное получим следующий код (комментарий указывает на соответствие между вопросом и реальным кодом):
Предок:
TfmWorkForm = class(TfmMyForm)//frm1
ActionList1: TActionList;
acPeriod: TAction; //act1
.....
end;

Потомок:
TfmRegister = class(TfmWorkForm) //frm2
ToolBar1: TToolBar;
ToolButton1: TToolButton; //tbt
.....
end;


 
Dedushka_Mazai ©   (2004-02-02 17:32) [5]

ты потомка как создавал: просто заменил TForm на TfmWorkForm?
если да, то надо ещё dfm подфиксить: в самом начале вместо object
написать inherited


 
VAleksey ©   (2004-02-02 17:32) [6]

tbt.Action:=acPeriod


 
tria ©   (2004-02-02 17:38) [7]

>Dedushka_Mazai
Судя по всему, создавал заменой. Через репозитарий или как оно там называется, я не работал, это точно.
написал:
inherited fmRegister: TfmRegister
все одно не работает. Может надо что-то типа
inherited fmRegister: TfmRegister (TfmWorkForm)?


 
tria ©   (2004-02-02 17:39) [8]

>VAleksey
И писать это в OnCreate? Оставлю такую возможность на крайний случай.


 
Dedushka_Mazai ©   (2004-02-02 17:41) [9]

Может надо что-то типа
inherited fmRegister: TfmRegister (TfmWorkForm)?

неа. всё должно итак работать. после фикса дфм-а надо переоткрыть форму. если на потомке появился actionlist, значит всё нормально


 
tria ©   (2004-02-02 17:45) [10]

>VAleksey
Может я не правильно понял, поменял в ObjectInspector fmWorkForm.act1 на tbt.Action:=acPeriod - заработало. Но!!! У меня теперь на форме два ActionList - тот, который от TfmWorkForm и еще один, от другого потомка TfmWorkForm. Слава богу, они носят разные названия. Как с этим глюком бороться или оставить как есть?


 
Dedushka_Mazai ©   (2004-02-02 17:46) [11]

убей actionlist на потомке. иначе какой смысл вообще с наследованием играться?


 
tria ©   (2004-02-02 17:49) [12]

У меня такая иерархия:
TfmWorkForm
. .
. .
TfmRegister TAnotherForm

И Action которые в TAnotherForm ненужны ни в TfmWorkForm, ни в TfmRegister. Разве ж это не логично?


 
tria ©   (2004-02-02 17:53) [13]

Ой. Дико извиняюсь. Второй ActionList - это родной, только назван он так же, как и в TAnotherForm. Давно не лазил в этот участок кода и все позабыл. Проглючило...
Всем большое спасибо, особливо тебе, дедушка...


 
Dedushka_Mazai ©   (2004-02-02 17:55) [14]

у тебя в обявлении потомка не должно быть никаких action list-ов.
action list берётся из предка. а action-ы в него можешь добавлять в потомках какие заблагорассудится.

если бы ты добавил предка в репозиторий, а потом создал потомка на его основании, то никакого бы геморроя не было, а так приходится ручками поправлять


 
tria ©   (2004-02-02 17:59) [15]

Дело в том, что приходится писать на нескольких компьютерах, и будет ли переносится репозитарий сам, вместе с директорией исходников, я не уверен. Еще когда читал про такую возможность, мне она уже тогда показалась неудобной. Замена в дфм на inherited выглядит удобней.



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

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

Наверх




Память: 0.5 MB
Время: 0.046 c
14-39034
DEF
2004-01-25 02:49
2004.02.13
архив форума


3-38759
_mandrake_
2004-01-16 17:58
2004.02.13
Помогите с запросом


1-38894
Кен
2004-02-05 01:42
2004.02.13
Как фильтровать дерево ? По шаблону.


1-38929
turonix
2004-02-04 11:53
2004.02.13
Как из функции вне класса запустить обработчик события в классе?


4-39126
Kair
2003-12-12 07:56
2004.02.13
Курсор мышки