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

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

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

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

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

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

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

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

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


Цитата Сообщение от DU Посмотреть сообщение
что такое свои функции?
функции, описанные в отдельных подключенных к основному проекту cpp файлах
Цитата Сообщение от DU Посмотреть сообщение
то чтобы в теле функции можно было изменить текст какого-то компонента, то в эту функцию в качестве аргумента нужно передавать указатель (ссылку) на компонент, свойства которого вы хотите изменить (например чтобы изменить текст).
Можно тут поподробнее?
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
02.06.2012, 21:52 4
вот код:
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  [ТС] 5
Цитата Сообщение от 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 6
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  [ТС] 7
Цитата Сообщение от 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 8
что у вас в коде f? вы функцию такую в каком-то файле объявили? а том файле, откуда ее вызываете инклуд нужный прописали?
0
brony
77 / 57 / 4
Регистрация: 02.01.2012
Сообщений: 521
02.06.2012, 22:50  [ТС] 9
Цитата Сообщение от DU Посмотреть сообщение
что у вас в коде f? вы функцию такую в каком-то файле объявили? а том файле, откуда ее вызываете инклуд нужный прописали?
да...
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
02.06.2012, 22:58 10
где да?
основы с++ почитайте по части модульности, инклудов и т.п.
в MyFunctoin.h файле объявляется функция
void f();

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

в других файлах если нужно вызвать эту функцию, то в списке инклудов нужно нужно прописать
include "MyFunction.h"
0
02.06.2012, 22:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2012, 22:58
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru