Сделал класс поток. В нем есть функция синхронизации, котрая должна обновлять кепшн на форме. Функция потока вызывает функцию, которая как параметр - указатель на функцию харнится вв ее свойствах.
typedef void (*MyFunc)(AnsiString);
class TUpdThread : public TThread
{
private:
protected:
void __fastcall Execute();
void __fastcall UpdateCaption();
void __fastcall GetRegistryVals();
public:
__fastcall TUpdThread(bool CreateSuspended);
void __fastcall SetUpdProc(MyFunc NewUpdProc);
};
void __fastcall TUpdThread::SetUpdProc(MyFunc NewUpdProc){
UpdateFunc = NewUpdProc;
}
void __fastcall TUpdThread::UpdateCaption(){
UpdateFunc(Message);
Sleep(1);
}
У формы сделал функцию:
__fastcall TMainForm::SetCaption(AnsiString Value){
Report->Caption = Value;
}
Но опять встает та же проблема:
Application->Initialize();
Application->CreateForm(__classid(TMainForm), &MainForm);
TUpdThread *UpdateThread = new TUpdThread(true);
UpdateThread->SetUpdProc(MainForm->SetCaption);
// UpdateThread->Resume;
Application->Run();
не могу я этот метод там указывать как параметр эту функцию передать, говорит, что еще класса нет =(
ТАК! Вписал #include <formunit.h>, ошибку не выдает, но!
Теперь ему не нравится вот что:
Cannot convert 'void (* (_closure )(AnsiString))(AnsiString)' to 'void (*)(AnsiString)'
|