MPru
03-01-2007, 10:14
написал я компонент TExtProgressBar который создан при помощи базового класа TGraphicControl
Если в нем задать __property любого типа и при выполнении присвоить значение равное нулю тогда это значение ей не присвоится хотя никаких проверок на ее значение не ведется Например:
ExtProgressBar.h
#include <SysUtils.hpp>
#include <Classes.hpp>
#include <Controls.hpp>
//---------------------------------------------------------------------------
class PACKAGE TExtProgressBar : public TGraphicControl
{
private:
void __fastcall SetProgress(bool value);
bool FProgress;
///............................
__published:
__property bool Progress = { read=FProgress, write=SetProgress };
};
ExtProgressBar.cpp
#include <vcl.h>
#pragma hdrstop
#include "ExtProgressBar.h"
#pragma package(smart_init)
static inline void ValidCtrCheck(TExtProgressBar *)
{
new TExtProgressBar(NULL);
}
//---------------------------------------------------------------------------
namespace Extprogressbar
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TExtProgressBar)};
RegisterComponents("Samples", classes, 0);
}
}
//---------------------------------------------------------------------------
void __fastcall TExtProgressBar::SetProgress(bool value)
{
if(value!=FProgress)
{
FProgress=value;
//.............
Paint();
}
}
//.......
Если в нем задать __property любого типа и при выполнении присвоить значение равное нулю тогда это значение ей не присвоится хотя никаких проверок на ее значение не ведется Например:
ExtProgressBar.h
#include <SysUtils.hpp>
#include <Classes.hpp>
#include <Controls.hpp>
//---------------------------------------------------------------------------
class PACKAGE TExtProgressBar : public TGraphicControl
{
private:
void __fastcall SetProgress(bool value);
bool FProgress;
///............................
__published:
__property bool Progress = { read=FProgress, write=SetProgress };
};
ExtProgressBar.cpp
#include <vcl.h>
#pragma hdrstop
#include "ExtProgressBar.h"
#pragma package(smart_init)
static inline void ValidCtrCheck(TExtProgressBar *)
{
new TExtProgressBar(NULL);
}
//---------------------------------------------------------------------------
namespace Extprogressbar
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TExtProgressBar)};
RegisterComponents("Samples", classes, 0);
}
}
//---------------------------------------------------------------------------
void __fastcall TExtProgressBar::SetProgress(bool value)
{
if(value!=FProgress)
{
FProgress=value;
//.............
Paint();
}
}
//.......