Форум: "Основная";
Текущий архив: 2004.02.13;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c