Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу Можно ли добраться до кода инициализации формы
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Alter Alter вне форума
Member
 
Сообщений: 88
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 13.01.2004
По умолчанию Можно ли добраться до кода инициализации формы - 16.04.2010, 14:00

Опыта разработки в билдере у меня нет никакого, и по этому возник такой элементарный вопрос, на который не могу найти ответ.
Можно ли добраться до кода инициализации формы, т.е. увидеть, как создаются контролы на форме. Потому как мне необходимо вставить свой код в момент, когда создалась форма, но на ней еще не расположились контролы; и нужно вставить код туда, когда контролы уже установились и приняли начальные значения.

Заранее спасибо!!!
Ответить с цитированием
  (#2 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,247
Сказал(а) спасибо: 26
Поблагодарили 51 раз(а) в 51 сообщениях
Регистрация: 16.10.2005
По умолчанию 16.04.2010, 16:34

Цитата:
вставить свой код в момент, когда создалась форма, но на ней еще не расположились контролы
Честно говоря, не уверен, что такое возможно. Попробуйте вставить свой код в конструктор формы. Но, мне кажется, что даже в этот момент контролы уже созданы.

А не расскажете ли, для чего нужно такое странное поведение?

Может, проще создать контролы динамически?
Ответить с цитированием
  (#3 (permalink)) Старый
FataLL FataLL вне форума
Member
 
Аватар для FataLL
 
Сообщений: 1,783
Сказал(а) спасибо: 2
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 04.11.2004
По умолчанию 16.04.2010, 18:16

Момент создания контроллов не отловишь даже в конструкторе. Они уже созданы к этому моменту.
Ответить с цитированием
  (#4 (permalink)) Старый
Alter Alter вне форума
Member
 
Сообщений: 88
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 13.01.2004
По умолчанию 17.04.2010, 11:40

Меня удивило то, что конструктор класса вызывается в vcl далеко первым при создании объекта. Но опять же, рассмотрим на примере котрола TDriveComboBox, размещенный на TForm. В конструкторе TForm я обращаюсь к DriveComboBox1->Items->Count (но если вызвать DriveComboBox1->Free, то метод корректно завершит свои действия). Выпадает исключение, по поводу что я хочу узнать значение, куда указывает пустой указатель.
Можно конечно в конструкторе выполнить Free всех объектов, а потом динамически заново их создать, но я думаю тот, кто после меня будет разбирать это - ужаснется в конвульсиях, и тогда встанет вопрос о моей компетентности.

Alexiski - контрол свой пишу обзора папок, при возможности создавать папку. В этом контроле есть находятся TDriveComboBox, TDirectoryListBox ну и еще пару элементов. Связь TDriveComboBox::DirList не устраивает тем, что нельзя отследить момент, когда переключаешь комбобокс на недоступный раздел, например на раздел привода, чтобы отловить исключение и совершить какие-то действия.
Потом нужно запоминать, в какой папке находился каждого раздела, и при переключении комбобокса показывать тот путь, где был прошлый раз на соответствующем разделе. Так вот, для начала нужно знать, сколько разделов, и это я попытался сделать в конструкторе класса исходного контрола. Вообщем, как - то так.
Ответить с цитированием
  (#5 (permalink)) Старый
FataLL FataLL вне форума
Member
 
Аватар для FataLL
 
Сообщений: 1,783
Сказал(а) спасибо: 2
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 04.11.2004
По умолчанию 18.04.2010, 04:56

Alter
Ничего удивительного нет. События вызываются тогда, когда всё подготовлено, проинициализировано, память выделена, объекты созданы. В твоём случае нужен другой подход. Как бороться с критическими ошибками, я тебе уже говорил. Поищи другие компоненты, которые ведут себя более адекватно [например, JVCL]
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
caxaromires caxaromires вне форума
Member
 
Аватар для caxaromires
 
Сообщений: 42
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.03.2010
По умолчанию 19.04.2010, 18:56

Если все дело упирается в получение списка разделов, то существует функция GetLogicalDriveString. А уточнить какой именно раздел поможет функция GetDriveType (я использовал простой ComboBox и в его списке таким образом были только логические диски).

Код:
//Получение списка логических дисков
char *BufFor;
int LogDiskCount = GetLogicalDriveStrings(0,BufFor);
BufFor = new char [LogDiskCount];
GetLogicalDriveStrings(LogDiskCount,BufFor);
char drive[3] = {0,0,0};
UINT type;
for (int i=0;i<LogDiskCount-1;i+=4)
        {
        memmove(drive,&BufFor[i],2);
        type = GetDriveType(drive);
        if (type == DRIVE_FIXED)
                ComboBox_Drive->Items->Add(BufFor[i]);
        }
delete BufFor;
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно добраться до свойств компонентов расположеных на форме Leon .NET 11 19.12.2007 15:32
Как можно добраться до Api из модуля kernel32 Olejek Assembler 3 21.09.2007 12:22
Можно ли использывать формы с различными компонентами, созданные Borland C++ Minoga_dot Visual C++ 3 31.03.2007 00:50
Как можно отловить открытие формы программе Garik888 Delphi 15 14.07.2006 15:18
Как можно определить, что на заголовке формы нажата кнопка мыши vikaz C++ Builder 5 05.05.2006 04:02
Как можно сделать пароль доступа для открытия формы eva001 C++ Builder 3 14.03.2006 20:04
Как можно из кода BCB 6 обеспечить доступ к объектам FastReport scorpion_ C++ Builder 2 05.09.2005 09:33
Можно ли сделать кнопку вне формы и не картинкой Shurik_A DHTML, JavaScript, VBScript 2 14.04.2005 03:00
Как можно послать запрос на сайт и получить ответ в виде строки html кода всего сайта KVN Delphi 1 28.10.2004 22:44
Где можно посмотреть простой пример формы Anonymous Visual C++ 5 05.08.2003 11:12
Как можно организовать заполнение формы по одному клику Anonymous Visual C++ 3 21.05.2003 23:06
Как сделать чтобы при инициализации формы записи из TQuery отображались в TListView Anonymous Delphi 3 14.04.2003 15:30



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов