Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2014, 16:50   #1
BoozZzilla
Форумчанин
 
Аватар для BoozZzilla
 
Регистрация: 26.01.2009
Сообщений: 125
По умолчанию Можно ли передать форме аргумент и вернуть при закрытии значение.

Можно ли реализовать связь двух элементов как нибудь кроме глобальных переменных?

Есть stringrid. Надо отработать нажатие на ячейку и в зависимости от площади нажатия на всплывающую картинку занести определенную цифру в матрицу.
Сейчас при нажатии на ячейку stringgrid-а запускается обработчик, который ловит координаты ячейки, после чего создаю новую маленькую форму с картинкой, и она уже считает куда там мышка щелкнула.
Таким образом имею два отдельных процесса - взять координаты ячейки и взять координаты щелчка на картинке(собственно цифра нажатая).
Можно ли их друг с другом завязать? Знаю мало и мне в голову приходят только глобальные переменные.

Идея наверное бредовая, но я думал о вызове новой формы с передачей её координат нажатой ячейки в виде аргументов, а уже на этой форме своим обработчиком без использования внешних переменных присвоить ячейке матрицы значение.
BoozZzilla вне форума Ответить с цитированием
Старый 20.10.2014, 16:57   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Что значит площадь нажатия то??
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 20.10.2014, 20:05   #3
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

существует множество разных способов передачи данных между классами, которые изначально друг о друге не знают.

Все эти способы условно можно разделить на две группы:

1. Система сообщений.
2. Система сигналов.

Следующий пример иллюстрирует, как можно организовать примитивную систему сигналов:

http://rextester.com/ZCYS7007


Код:
#include <functional>
#include <iostream>
using namespace std;


// --- form1 ничего не знает ни о каких других классах
struct form1
{
    void reciever() {  cout<<"form1: recieved data\n"; } 
    
};

// --- form1 ничего не знает ни о каких других классах
struct form2
{
    void post() 
    {
        
        if(channel)
            cout<<"form2: post data\n",
            channel();
        else
            cout<<"form2: can`t post data: channel not ready\n;"; 
    } 
    
    
    function<void()> channel;
};


// --- главная функция программы. Здесь мы создаем объекты обеих форм, 
//     которые не подозревают о существовании друг друга

int main()
{
    std::cout << "Hello, world!\n";
    
    
    form1 f1; // <--- будет принимать данные откуда то извне
    
    form2 f2; // <--- будет отправлять данные куда то в эфир
    
    // --- в точке программы, где известно про оба класса, 
    //можно настроить канал связи между двумя классами, 
    //которые не подозревают о существовании друг друга:
    
    f2.channel = [&f1]{ f1.reciever(); };
    
    //----- теперь попросим f2 отправить посылку по установленному каналу:
    f2.post();
}
_Bers вне форума Ответить с цитированием
Старый 22.10.2014, 12:09   #4
BoozZzilla
Форумчанин
 
Аватар для BoozZzilla
 
Регистрация: 26.01.2009
Сообщений: 125
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
существует множество разных способов передачи данных между классами, которые изначально друг о друге не знают.

Все эти способы условно можно разделить на две группы:

1. Система сообщений.
2. Система сигналов.
Спасибо, это интересно и как раз то что я хотел. Буду копать...
BoozZzilla вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли как-нибудь передать значение из HTTP Request в переменную? n1cklan JavaScript, Ajax 1 08.10.2012 02:57
Счетчик, сохраняющий значение при закрытии программы в Delphi 7 bogdanidze Помощь студентам 1 13.05.2011 00:46
Нужно передать аргумент XxXGhosTXxX Общие вопросы C/C++ 12 10.04.2011 19:13
как передать аргумент? Sergey112233 Microsoft Office Excel 5 13.02.2011 12:32
Можно ли как нибудь перехватить событие при закрытии крышки ноутбука? XAKKEP Общие вопросы Delphi 8 02.10.2010 19:00