С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
brony
77 / 57 / 4
Регистрация: 02.01.2012
Сообщений: 521

Windows Form вызывание в своих функциях компонентов

02.06.2012, 21:18. Показов 3931. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создал свой .cpp файл, подключил к проекту, подключил к заголовочному файлу, на нажатие кнопки прописал вызов функции, в функции прописал изменение текста на кнопке. Отказывается работать. Однако, если функцию разместить в файле где прописано нажатие кнопки всё работает. Что я делаю не так? Как получить доступ к компонентам формы через свои функции?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.06.2012, 21:18
Ответы с готовыми решениями:

Составить программу в Windows Form, которая выводит сообщение о своих возможностях.
Составить программу в Windows Form, которая выводит сообщение о своих возможностях. (Введите номер необходимой функции: 1-квадрат ,...

Использование TObject *Sender в своих функциях
Всем доброго времени суток. Столкнулся с проблемой что при использовании TObject *Sender в своей функции все красиво, но только до тех пор...

Использование компонентов формы в своих классах
Написал класс class myclass { public: void SetText(AnsiString text); }; void myclass::SetText(AnsiString text) {

9
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
02.06.2012, 21:23
отказывается работать - это не компилируется или что?
что такое свои функции? просто свободные функции, которым какие-то параметры передаются? не мемберы классов? если так, то чтобы в теле функции можно было изменить текст какого-то компонента, то в эту функцию в качестве аргумента нужно передавать указатель (ссылку) на компонент, свойства которого вы хотите изменить (например чтобы изменить текст).
1
brony
77 / 57 / 4
Регистрация: 02.01.2012
Сообщений: 521
02.06.2012, 21:48  [ТС]
Цитата Сообщение от DU Посмотреть сообщение
отказывается работать - это не компилируется или что?
Да, не компилируется. При попытке обращения к элементу он его не находит.


Цитата Сообщение от DU Посмотреть сообщение
что такое свои функции?
функции, описанные в отдельных подключенных к основному проекту cpp файлах
Цитата Сообщение от DU Посмотреть сообщение
то чтобы в теле функции можно было изменить текст какого-то компонента, то в эту функцию в качестве аргумента нужно передавать указатель (ссылку) на компонент, свойства которого вы хотите изменить (например чтобы изменить текст).
Можно тут поподробнее?
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
02.06.2012, 21:52
вот код:
C++
1
2
3
4
5
6
7
8
9
10
void f()
{
   i = 10;
}
 
int main()
{
   int  i = 0;
   f();
}
это кривой код, потому что функция f ничего не знает про меременную, которая объявлена в другом месте. чтобы это заработало, в функцию f нужно передать пемеренную i по указателю или ссылке:

C++
1
2
3
4
void f(int& i)
{
  i = 10;
}

Если у вас такие же функции , то в них нужно передавать какой-то контрол, чтобы поменять у него текст:

C++
1
2
3
4
void f(SomeControl& control)
{
   control->SetText("text");
}
1
brony
77 / 57 / 4
Регистрация: 02.01.2012
Сообщений: 521
02.06.2012, 22:11  [ТС]
Цитата Сообщение от DU Посмотреть сообщение
Если у вас такие же функции , то в них нужно передавать какой-то контрол, чтобы поменять у него текст:

Да, подобные функции, но я так и не понял указатель на что именно нужно передавать.


К примеру функция должна менять текст на кнопке. В файле Form1.h если прописать на клике кнопки this->button1->Text = L"111"; то работает. Нужно при клике вызвать функцию, которая находится не в Form1.h которая и поменяет текст. До меня так и не дошло как это сделать.
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
02.06.2012, 22:15
button1 - это как раз и есть тот самый контрол. тип его я не знаю. скажем пусть будет
Button (правильный тип класса смотрите у себя в коде, я не знаю с чем вы там работаете)
тогда функция f :
C++
1
2
3
4
5
6
7
8
9
10
void f(Button* btn)
{
  btn->Text = L"dsff";
}
 
// а вот тут функция формы, которая вызывается при клике:
void Form::onButton1Click()
{
  f(this->button1); // вот тут и идет передача в функцию той самой кнопки
}
тут вариант не с ссылками а с указателями. но суть та же.
1
brony
77 / 57 / 4
Регистрация: 02.01.2012
Сообщений: 521
02.06.2012, 22:42  [ТС]
Цитата Сообщение от DU Посмотреть сообщение
button1 - это как раз и есть тот самый контрол. тип его я не знаю. скажем пусть будет
Button (правильный тип класса смотрите у себя в коде, я не знаю с чем вы там работаете)
тогда функция f :
C++
1
2
3
4
5
6
7
8
9
10
void f(Button* btn)
{
  btn->Text = L"dsff";
}
 
// а вот тут функция формы, которая вызывается при клике:
void Form::onButton1Click()
{
  f(this->button1); // вот тут и идет передача в функцию той самой кнопки
}
тут вариант не с ссылками а с указателями. но суть та же.

Сдалал всё так, выдаётся ошибка: f: идентификатор не найден
Вложения
Тип файла: rar 123.rar (142.0 Кб, 13 просмотров)
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
02.06.2012, 22:47
что у вас в коде f? вы функцию такую в каком-то файле объявили? а том файле, откуда ее вызываете инклуд нужный прописали?
0
brony
77 / 57 / 4
Регистрация: 02.01.2012
Сообщений: 521
02.06.2012, 22:50  [ТС]
Цитата Сообщение от DU Посмотреть сообщение
что у вас в коде f? вы функцию такую в каком-то файле объявили? а том файле, откуда ее вызываете инклуд нужный прописали?
да...
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
02.06.2012, 22:58
где да?
основы с++ почитайте по части модульности, инклудов и т.п.
в MyFunctoin.h файле объявляется функция
void f();

в cpp файле MyFunction.cpp определяется эта функция
void f()
{
}

в других файлах если нужно вызвать эту функцию, то в списке инклудов нужно нужно прописать
include "MyFunction.h"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.06.2012, 22:58
Помогаю со студенческими работами здесь

Создать win form, используя шаблон windows form в clr, однако такого шаблона на моей студии 2013 нет
есть необходимость создать win form используя шаблон windows form в clr, однако такого шаблона на моей студии 2013 не обнаружено ... :(

Создание своих компонентов. TICQComponent своими руками?
Есть необоснованное, но всё же желание написать собственный ICQ клиент. Знаю о существовании TICQComponent'а для Delphi, но его...

Посоветуйте литературу для написания своих компонентов в WinForms
посоветуйте литературу для написания своих компонентов в WinForms))

Вызывание точки останова
Ввести целое число N. Выделить из этого числа цифры, кратные m, и записать их в одномерный массив.-Условие задачи. Ниже моё...

Создает ли Windows папку Windows.old также и для своих регулярных обновлений?
До сих пор считал (так пишут :)), что папка Windows.old создается при смене версии ОС на Windows 10 путем обновления. У самого так было,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru