Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вставка своего компонента в TOpenDialog [D6, WinXP]


Th ©   (2002-12-05 18:49:00) 

Подскажите плз. Написал компонент TMyOpenDlg - наследник TOpenDialog. В него вставил MyRadioGrp: TRadioGroup, если я попытаюсь в конструкторе своего TMyOpenDlg сделать MyRadioGrp.Items.Add("MyString"), будет exception, потому что экземпляр TMyOpenDlg еще не имеет Handle, и соотвественно MyRadioGrp не имеет Parent"а. Как это обойти? (т. е. добавить все-таки строчку в MyRadioGrp в конструкторе диалога).


Th   (2002-12-06 13:50:00) [1]

2Suntechnic
В DoShow этого делать не хочется, потому, что эта процедура выполняется каждый раз после вызова Execute, в резульате операции, которые необходимо сделать один раз, делаются при каждом открытии диалога. Это не комильфо, особенно если в группе много элементов

2Сергей Бушин
Сорри, я ошибся немного - мой класс наследник TOpenPictureDialog, поэтому все его возможности мне доступны.Но вариант с TypeChange тоже не проходит по причинам выше изложенным.

В принципе я решил проблему - я временно в конструкторе парентом делаю Application.
Но есть еще вопрос - как динамически (т. е. после вызова Execute) сменить фильтр? Есть сообщение WM_COMMAND, которое ComboBox с фильтрами посылает диалогу при смене текущего фильтра, но как его сэмулировать?


Suntechnic   (2002-12-06 08:02:00) [2]

В DoShow уже есть Handle. Там и проводи инициализацию.


Сергей Бушин   (2002-12-05 20:50:00) [3]

Я не создавал компонент, а обрабатывал событие OnTypeChange. Обработчик срабатывает, когда меняется тип файла. И в данном обработчике он передает ParentHandle. Но данная возможность имеется только в XXXXPictureDialog. Т.е. если тебе очень надо создать свой компонент, то отталкивайся от исходников данных компонентов.


Юрий Федоров   (2002-12-05 19:30:00) [4]

Вообще то TOpenDialog не может быть parent"ом.
Собираешься вставлять группу с помощью присвоения ParentWindow?
Сильно сомневаюсь, что из этого получится что-то хорошее.
Насколько я понимаю, Handle диалога имеется только в процессе
Execute, то есть когда живо его окно, ни в каких других местах Handle"a нет.

Так что скорее всего придется опускаться на уровень API, там при вызове диалога есть возможность добавить на него элементов из ресурса


Наверх

Титульная страница Поиск, карта сайта Написать письмо