[Borland] Probleem met Tcolor property in component

Pagina: 1
Acties:

  • hneel
  • Registratie: Maart 2001
  • Nu online

hneel

denkt er het zijne van

Topicstarter
Ik heb een component gemaakt, wat gebaseerd is op de TDBEdit component. Ik heb daar wat kleurtjes aan toegevoegd die in design-time moeten kunnen worden ingesteld en die ook een default-waarde moeten hebben.

Ik probeerde het volgende in de header file (ik gebruik C++Builder 5):

C++:
1
2
3
4
5
private:
  TColor  FColorRW;

__published:
  __property TColor  ColorRW    = { read=FColorRW   , write=FColorRW    , default=clWindow  };


Het probleem is dat de default kleur at design time toch gewoon zwart is.

Ik kan dat fixen door in de constructor alsnog de kleur in te stellen:

C++:
1
2
3
4
5
__fastcall THneDBEdit::THneDBEdit(TComponent* Owner)
  : TDBEdit(Owner)
{
  ColorRW   = clWindow;
}


Dan zie je at design time de juiste kleur, maar als je die verandert werkt het niet. At runtime krijg je dan alsnog clWindow.

Hoe krijg ik dit goed? Een constuctor wordt toch maar 1 keer aangeroepen? :? Of zowel bij design-time als bij run-time? Zo ja, kan je dan de code conditioneel laten uitvoeren?

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Je doet het correct. De default van de property zet de waarde niet, dat moet je doen in de constructor.

Zet eens wat breakpoints en kijk wat er wel en niet aangeroepen wordt en in welke volgorde.

We adore chaos because we like to restore order - M.C. Escher