-
> мне же нужно, чтобы если я кидаю компонент например на > панель, компонент не позволил бы мне этого сделать
Перекройте ValidateContainer панели procedure TComponent.InsertComponent(AComponent: TComponent);
begin
AComponent.ValidateContainer(Self);
-
мне же нужно, чтобы если я кидаю компонент например на панель, компонент не позволил бы мне этого сделать...
От кого наследуемся и зачем? Если не хотим попасть на панель.
-
судя по тексту штука невизуальная. но отнаследована зачем-то от тконтрола.
-
один экземпляр на форме контрлируется конструктором через оунера. оунер чтоб был мдичайлд - там же. чтобы не попасть на панель - принудительно ставить парентом оунера или вообще наследваться от ткомпонент.
все три задачи решены.
-
Компонент наследуется от TCustomPanel.
то, что Owner будет формой, а Parent nil, я уже установил опытным путем)
> Перекройте ValidateContainer панели
Сейчас попробую
-
> судя по тексту штука невизуальная. но отнаследована зачем- > то от тконтрола.
Это с чего такие выводы?????
> ...для того, чтобы "нажать" на панели нужную кнопку....
визуальный компонент
-
ну хорошо. а почему я как пользователь компонента не должен мочь положить визуальное на панель?
-
теоретически можешь... но в MDI приложениях в этом все равно нет смысла...
-
Первый вопрос решен через переопределение метода SetParent... осталось 2 и 3... Есть идеи?
-
через канструктор. сказали же уже
-
2 вопрос закрыт, спасибо всем, кто откликнулся... если будут идеи по поводу 3-его вопроса, также буду благодарен
-
> Есть ряд задач (3 штуки)
Спасибо. Мы тут, валенки, совсем разучились считать "штуки".
> во время разработки приложения этот компонент можно было > "бросить" только на форму со стилем FormStyle = MDIForm
Ну , положим, реализовал ты это. А потом тупой юзер взял да изменил ФормСтайл на иной стиль. Как тебе эти грабли ?)
-
> Спасибо. Мы тут, валенки, совсем разучились считать "штуки".
Ну никак не мог за это не зацепиться...
> Как тебе эти грабли ?)
да, что есть, то есть. упустил этот момент из виду. не страшно, немного изменю логику...
DimaBr не получается реализовать перехват сообщения CM_TEXTCHANGED в компоненте. Если это (procedure TextChanged(var Message: TMessage); message CM_TEXTCHANGED;) написать в самом проекте, то все работает, но тоже самое в компоненте работать отказывается... и хотя в инете подобных примеров немало, пока непонимаю, что я такого наделал, что у меня не работает.
-
> написать в самом проекте, то все работает, но тоже самое > в компоненте работать отказывается...
Покажите код
-
2) Вопрос примерно из той же серии, что и первый. Нужно, чтобы на форме мог быть только один подобный компонент. Каким способом этого можно добиться?
А почему не один во всем приложении... Может проще так:
... var flag: boolean; ... constructor TMDIPanel.Create(AOwner: TComponent); begin ... if flag then raise Exception.Create('') else flag := true; end;
...
destructor TMDIPanel.Destroy; begin flag := False; ... end;
-
> Ну никак не мог за это не зацепиться.
)
Да просто, извини уж, к месту вспомнилось:
"Три штуки. Размер сорок два, сорок три, сорок пять" (В) Василий Алибабаевич
-
С третьим вопросом выкрутился через WM_MDIREFRESHMENU. Спасибо всем, кто проявил участие и помогал. Кому интересно, что получается, скачайте демку http://slil.ru/26008874
-
Не качается оттуда что-то. Может выложишь на webfile.ru ?
-
У меня вообще-то есть компонент на эту тему. Напиши мыло - скину
-
http://webfile.ru/2117620скинь сюда - decoding@yandex.ru не все с компонентом проходит гладко... есть вопросы, и если сам не решу их в ближайшее время, снова обращусь за помощью, т.ч. тема пока не закрыта
|