Главная страница
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.036 c
14-39020
SniZ
2004-01-25 20:38
2004.02.13
Почтовый сервер


14-39070
iudjen
2004-01-23 21:40
2004.02.13
по истечении 30 дней программа не работает если не ввел пароль


3-38729
Vladimir Bolotin
2004-01-21 21:15
2004.02.13
Как скрыть от пользователя обращение к данным?


1-38823
SeriousSam
2004-02-02 20:48
2004.02.13
Как сделать чтоб нажатие entera было равно нажатию на Button1?


1-38923
Ramario
2004-02-04 11:35
2004.02.13
Работа с файлами