Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / назначить процедуру для исполнения / 15 сообщений из 15, страница 1 из 1
06.10.2005, 15:01
    #33309246
назначить процедуру для исполнения
есть класс. например такой:

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

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

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

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

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

Вызывай методы
Posted via ActualForum NNTP Server 1.3
а пример можно? :)
...
Рейтинг: 0 / 0
06.10.2005, 16:35
    #33309614
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
назначить процедуру для исполнения
Какой уж тут пример ? Пример как вызвать метод класса ?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
06.10.2005, 16:56
    #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
06.10.2005, 17:04
    #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
06.10.2005, 17:37
    #33309829
Anton M.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
назначить процедуру для исполнения
Можно повесить событие на таймер и при каждом срабатывании таймера проверять изменение переменной.
...
Рейтинг: 0 / 0
07.10.2005, 00:09
    #33310398
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
назначить процедуру для исполнения
Рекомендую почитать про Pattern "Subject-observer"
...
Рейтинг: 0 / 0
07.10.2005, 09:11
    #33310630
Nebel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
назначить процедуру для исполнения
Anton M.Можно повесить событие на таймер и при каждом срабатывании таймера проверять изменение переменной.
нет такое дело не подходит... как-то это неправильно...
...
Рейтинг: 0 / 0
18.10.2005, 14:35
    #33330552
gelrt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
назначить процедуру для исполнения
можно просто запихнуть вызов функции SetValue().
...
Рейтинг: 0 / 0
20.10.2005, 04:05
    #33334160
ska
ska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
назначить процедуру для исполнения
Дмитрий Таджиева если не про Бильдер? про property я знаю... мне интересно, можно ли такое сделать и как используя чистый C++

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

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


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

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

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


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


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