powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / назначить процедуру для исполнения
15 сообщений из 15, страница 1 из 1
назначить процедуру для исполнения
    #33309246
есть класс. например такой:

class Dima
{
public:
Dima();
void SetDimasWeight(int w);
int GetDimasWeight();
private:
int DimasWeight;
};

так вот я хочу, чтоб после создания объекта я мог бы назначить для этого объекта процедуру, которая бы исполнялась каждый раз, когда меняется DimasWeight.

Как это сделать? понятно что для этого нужно сделать кое-какие изменения в классе.. вопрос в том - какие?

Заранее спасибо!
...
Рейтинг: 0 / 0
назначить процедуру для исполнения
    #33309265
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если речь идет про Бильдер, то property + F1 + исходник любой чего-угодно
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
назначить процедуру для исполнения
    #33309284
а если не про Бильдер? про property я знаю... мне интересно, можно ли такое сделать и как используя чистый C++
...
Рейтинг: 0 / 0
назначить процедуру для исполнения
    #33309322
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему в чистом С++ нет пропертей, это Борман использует

Вызывай методы
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
назначить процедуру для исполнения
    #33309595
Nebel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Карабас БарабасПо-моему в чистом С++ нет пропертей, это Борман использует

Вызывай методы
Posted via ActualForum NNTP Server 1.3
а пример можно? :)
...
Рейтинг: 0 / 0
назначить процедуру для исполнения
    #33309614
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой уж тут пример ? Пример как вызвать метод класса ?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
назначить процедуру для исполнения
    #33309674
Nebel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Карабас БарабасКакой уж тут пример ? Пример как вызвать метод класса ?
Posted via ActualForum NNTP Server 1.3
нет. как правильно property объявить.
Т.е. имеем следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#include <math.h> 
#include <iostream.h> 
#include <oleauto.hpp> 

class ComItem 
{ 
public: 
    ComItem(); 
    ~ComItem(); 
    void SetValue(Variant NewValue); 
    Variant GetValue(); 
private: 
    Variant Value; 
} 

нужно чтоб работало примерно так:
Код: plaintext
1.
2.
ComItem *item1=new ComItem(); 
item1->OnChangeItem=MyFunc1;
т.е. если после этого вызываем item1->SetValue(2), то MyFunc1 вызывается автоматически.

Как правильно объявить OnChangeItem? и как правильно вызывать это дело в SetValue?
заранее спасибо :)
...
Рейтинг: 0 / 0
назначить процедуру для исполнения
    #33309705
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
typedef void __fastcall (__closure *TMyIBTableOnGetExcelString)(AnsiString &Text, TMyIBTableRec *rec, AnsiString FieldName);

class PACKAGE TMyIBTable : public TComponent
{
private:
  TMyIBTableOnGetExcelString FOnGetExcelString;
  void __fastcall SetOnGetExcelString(TMyIBTableOnGetExcelString value);
  TMyIBTableOnGetExcelString __fastcall GetOnGetExcelString();
public:
  __property TMyIBTableOnGetExcelString OnGetExcelString  = { read=GetOnGetExcelString, write=SetOnGetExcelString };
};


void __fastcall TMyIBTable::SetOnGetExcelString(TMyIBTableOnGetExcelString value)
{
  if(FOnGetExcelString != value) {
    FOnGetExcelString = value;
  }
}
TMyIBTableOnGetExcelString __fastcall TMyIBTable::GetOnGetExcelString()
{
  return FOnGetExcelString;
}



// и в нужном месте:
void TMyIBTable::somemethod()
{
    ..............
        if (FOnGetExcelString) FOnGetExcelString(Text,rec,fn);
    .............
}

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
назначить процедуру для исполнения
    #33309829
Anton M.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно повесить событие на таймер и при каждом срабатывании таймера проверять изменение переменной.
...
Рейтинг: 0 / 0
назначить процедуру для исполнения
    #33310398
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рекомендую почитать про Pattern "Subject-observer"
...
Рейтинг: 0 / 0
назначить процедуру для исполнения
    #33310630
Nebel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anton M.Можно повесить событие на таймер и при каждом срабатывании таймера проверять изменение переменной.
нет такое дело не подходит... как-то это неправильно...
...
Рейтинг: 0 / 0
назначить процедуру для исполнения
    #33330552
gelrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно просто запихнуть вызов функции SetValue().
...
Рейтинг: 0 / 0
назначить процедуру для исполнения
    #33334160
ska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Таджиева если не про Бильдер? про property я знаю... мне интересно, можно ли такое сделать и как используя чистый C++

Сделать еще один класс, переопределить там операторы "=" и сделать
myint DimasWeight;
:-)
...
Рейтинг: 0 / 0
назначить процедуру для исполнения
    #33334648
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Таджиев
так вот я хочу, чтоб после создания объекта я мог бы назначить для этого объекта процедуру, которая бы исполнялась каждый раз, когда меняется DimasWeight.

Как это сделать? понятно что для этого нужно сделать кое-какие изменения в классе.. вопрос в том - какие?


Вызвать эту процедуру в void SetDimasWeight(int w);
Если надо динамически ее менять, используй указатель на процедуру и вызывай ее по указателю.
...
Рейтинг: 0 / 0
назначить процедуру для исполнения
    #33334881
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Таджиевесть класс. ........для этого объекта процедуру, которая бы исполнялась каждый раз, когда меняется......Как это сделать? .......

можно сделать так...
а) ышо один базовый класс события.
б) при создании Вашего класса сохранять экземпляры его в статическом листе.
в) при определённых событиях звать необходимый класс события.

звучит страшно...но зато юзать легко...
вся логика как шаблоны и плюс отслеживание единственности экземпляров класса умещаеться в одном ашнике...строчек 200...
юзать ышо просче... надо событие - достаточно отнаследоваться от событийного класса необходимого типа... всё остальное автоматом...


удачи Вам
(круглый)
ЗЫ
Идею подкинул - далее сами...
ЗЫ ЗЫ
Если туман - рекомендую заглянуть в книгу Джэффа Элджера. Там все приёмы есть - а уж составить Вашу мозаику Вам не составит труда :)
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / назначить процедуру для исполнения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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