Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
С++ Builder. Видимость контролов формы с методов (не обработчиков)
|
|||
|---|---|---|---|
|
#18+
Добрый день. Пришлось пересесть с C# на C++, аж дух захватывает (ближе конечно к слову - "парализует")! К сожалению не найдя ответов в Google или от незнания что писать в запросе, есть вопросы, которые не позволяют сдвинуться с места. 1) Использование контрола из метода (не обработчика) Так работает: Код: plaintext 1. 2. 3. 4. С собственного метода не работает: Код: plaintext 1. 2. 3. 4. Метод "не видит" контрола ListView1. Предполагаю, что в заголовке класса (формы) должен быть указан метод ItemAdd - принадлежность к форме, тогда видимость ListView1 для метода ItemAdd будет решена. Только синтаксис раскусить не удалось, все примеры кода расположены внутри обработчиков кнопок или загрузки формы, что конечно работает... 2) Собственный класс. Регистрация метода в заголовке и использование Заголовок: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Реализация: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Так компилится. Если попробовать сделать метод с параметром String Заголовок: Код: plaintext 1. 2. 3. 4. 5. 6. Реализация: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Выдает 2 ошибки: [BCC32 Error] WindowsRegistryBusinessLayer.h(11): E2293 ) expected Full parser context WindowsRegistryBusinessLayer.cpp(5): #include BusinessLayer\WindowsRegistryBusinessLayer.h WindowsRegistryBusinessLayer.h(8): class WindowsRegistryBusinessLayer [BCC32 Error] WindowsRegistryBusinessLayer.cpp(22): E2316 'WindowsRegistryBusinessLayer::RegWirteB(UnicodeString)' is not a member of 'WindowsRegistryBusinessLayer' 3. Передача ссылку контрола с формы в метод другого класс Если я желаю написать класс, в котором я буду обрабатывать, ну например, ProgressBar, не буду ж я писать все это дело в обработчиках контролов формы и т.п. местах. Поэтому вполне логически вынести всю логику в другой класс с помощью передачи ссылки этого контрола в другой класс. Как зарегистрировать такой класс (пример кода в ClassExample.h и ClassExample.cpp), что в инклудах написать (для обработки контролов формы)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2013, 14:44 |
|
||
|
С++ Builder. Видимость контролов формы с методов (не обработчиков)
|
|||
|---|---|---|---|
|
#18+
Chaki_Black пишет: > Так работает: > void __fastcall TForm1::btnOpenDirectoryClick(TObject *Sender) > { > ListView1->AddItem("Text", this); > } > С собственного метода не работает: > void ItemAdd (String text) > { > ListView1->AddItem("Text", this); > } Буквы "TForm1::" ни на какие мысли не наводят ? Учите С++, это практически основы. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2013, 16:29 |
|
||
|
С++ Builder. Видимость контролов формы с методов (не обработчиков)
|
|||
|---|---|---|---|
|
#18+
Chaki_Black, Так компилится. Если попробовать сделать метод с параметром String #ifndef WindowsRegistryBusinessLayerH #define WindowsRegistryBusinessLayerH //--------------------------------------------------------------------------- class WindowsRegistryBusinessLayer { public: static void RegWriteB(String b); }; Выдает 2 ошибки: [BCC32 Error] WindowsRegistryBusinessLayer.h(11): E2293 ) expected Full parser context Подозреваю, что не определён тип String. В С++ нет такого встроенного типа, ты его должен сам определить (или использовать определение из BCB). WindowsRegistryBusinessLayer.cpp(5): #include BusinessLayer\WindowsRegistryBusinessLayer.h Слеш должен быть не '\', а '/'. Но может быть это не важно. Это не путь, это инструкция для компилятора, где найти файл, возможно, конечно, конкретный компилятор понимает и так, и так, но '/' правильней. WindowsRegistryBusinessLayer.h(8): class WindowsRegistryBusinessLayer [BCC32 Error] WindowsRegistryBusinessLayer.cpp(22): E2316 'WindowsRegistryBusinessLayer::RegWirteB(UnicodeString)' is not a member of 'WindowsRegistryBusinessLayer' Ты видимо неправильно объявил или определил метод. А послал нам вообще что-то другое. В объявлении метода и определении метода сигнатуры должны полностью совпадать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 14:47 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38188080&tid=2020366]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 266ms |

| 0 / 0 |
