powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / С++ Builder. Видимость контролов формы с методов (не обработчиков)
4 сообщений из 4, страница 1 из 1
С++ Builder. Видимость контролов формы с методов (не обработчиков)
    #38188080
Chaki_Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Пришлось пересесть с C# на C++, аж дух захватывает (ближе конечно к слову - "парализует")! К сожалению не найдя ответов в Google или от незнания что писать в запросе, есть вопросы, которые не позволяют сдвинуться с места.

1) Использование контрола из метода (не обработчика)
Так работает:
Код: plaintext
1.
2.
3.
4.
void __fastcall TForm1::btnOpenDirectoryClick(TObject *Sender)
{
   ListView1->AddItem("Text", this);
}

С собственного метода не работает:
Код: plaintext
1.
2.
3.
4.
void ItemAdd (String text)
{
   ListView1->AddItem("Text", this);
}

Метод "не видит" контрола ListView1. Предполагаю, что в заголовке класса (формы) должен быть указан метод ItemAdd - принадлежность к форме, тогда видимость ListView1 для метода ItemAdd будет решена. Только синтаксис раскусить не удалось, все примеры кода расположены внутри обработчиков кнопок или загрузки формы, что конечно работает...

2) Собственный класс. Регистрация метода в заголовке и использование
Заголовок:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
#ifndef WindowsRegistryBusinessLayerH
#define WindowsRegistryBusinessLayerH
//---------------------------------------------------------------------------
class WindowsRegistryBusinessLayer {
   public: static void RegWrite();
   public: static void RegWriteА(int a);
};

Реализация:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
#pragma hdrstop
#include "WindowsRegistryBusinessLayer.h"
#include "Registry.hpp"
//---------------------------------------------------------------------------
#pragma package(smart_init)
void WindowsRegistryBusinessLayer::RegWrite()
{
}
void WindowsRegistryBusinessLayer::RegWriteA(int a)
{
}

Так компилится. Если попробовать сделать метод с параметром String
Заголовок:
Код: plaintext
1.
2.
3.
4.
5.
6.
#ifndef WindowsRegistryBusinessLayerH
#define WindowsRegistryBusinessLayerH
//---------------------------------------------------------------------------
class WindowsRegistryBusinessLayer {
   public: static void RegWriteB(String b);
};

Реализация:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
#pragma hdrstop
#include "WindowsRegistryBusinessLayer.h"
#include "Registry.hpp"
//---------------------------------------------------------------------------
#pragma package(smart_init)
void WindowsRegistryBusinessLayer::RegWriteB(String b)
{
}

Выдает 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), что в инклудах написать (для обработки контролов формы)?
...
Рейтинг: 0 / 0
С++ Builder. Видимость контролов формы с методов (не обработчиков)
    #38188274
Сисдба Мастеркеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
С++ Builder. Видимость контролов формы с методов (не обработчиков)
    #38189821
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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'

Ты видимо неправильно объявил или определил метод. А послал нам вообще что-то другое.
В объявлении метода и определении метода сигнатуры должны полностью совпадать.
...
Рейтинг: 0 / 0
С++ Builder. Видимость контролов формы с методов (не обработчиков)
    #38189824
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, про остальное я лично нихрена не понял. Если ты подрудишься изложить вопросы поподробнее, возможно кто-то и ответит на них.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / С++ Builder. Видимость контролов формы с методов (не обработчиков)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]