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

Вниз

Вставка своего компонента в TOpenDialog   Найти похожие ветки 

 
Th ©   (2002-12-05 18:49) [0]

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


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

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

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


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

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


 
Suntechnic ©   (2002-12-06 08:02) [3]

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


 
Th ©   (2002-12-06 13:50) [4]

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

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

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



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

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

Наверх




Память: 0.48 MB
Время: 0.01 c
8-51846
halt
2002-09-02 21:26
2002.12.16
как проиграть audio сидюк с конкретного cd-привода


3-51571
Брат
2002-11-26 16:43
2002.12.16
Как отловить исключительную ситуацию, которая возникает, когда я


1-51736
h_tray
2002-12-06 09:28
2002.12.16
Как pchar в string перевести


1-51687
MystiX
2002-12-05 19:34
2002.12.16
Помогите!!!!!!!


1-51689
Filat
2002-12-03 19:41
2002.12.16
Backup - как его организовать на Дельфи, и разный ли он?