[delphi7] Property editor registreren

Pagina: 1
Acties:

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

Topicstarter
Ik heb een property editor gemaakt voor een hKey. Dat ding is rechtstreeks van TEnumProperty afgeleid, dus hij gaat een dropdown-list weergeven in de object inspector, met alle registry branches (of root keys, net hoe je het noemen wilt).

Het gekke is alleen dat de property editor wel geregistreerd lijkt te worden (ik heb een MessageBox laten doen in de Register procedure) maar de editor het vervolgens niet doet. Het is dus een editor voor hKey en de property in kwestie is ook hKey. Met daarbij dat hkey gedeclareert is als
Delphi:
1
HKEY = type LongWord;
...wat betekent dat hKey een individueel type is, en dus niet identical aan LongWord of Integer of wat dan ook.

De property editor registreer ik in de Register procedure als volgt:
Delphi:
1
2
RegisterPropertyEditor(TypeInfo(hKey), TMagicSettings, '',
  TRegistryBranchEditor);
Ik heb ook al geprobeerd ipv TMagicSettings nil in te vullen (dus alle hKey properties in alle componenten) en de propertynaam in te vullen. In beide gevallen doet ie het niet. Met "doet het niet" bedoel ik dus dat in de object inspector geen dropdown-list gemaakt wordt en de hKey nog steeds als getalletje wordt weergegeven.

Wie helpt me verder? Het is nml wel erg vreemd dat zoiets basics niet wil :?

//update:
Als ik de property declareer als Cardinal en de property editor ook al zodanig registreer, dan werkt het allemaal prima. Maar waarom dan niet met hKey :?

[ Voor 10% gewijzigd door _Thanatos_ op 11-04-2004 00:37 ]

日本!🎌


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 20:33

Tomatoman

Fulltime prutser

Probeer eens een ShowMessage('I am alive!') of iets dergelijks in de constructor van TRegistryBranchEditor te zetten. Dan weet je tenminste of de property editor überhaupt wel gestart wordt.

Een goede grap mag vrienden kosten.


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

Topicstarter
Dat heb ik ook geprobeerd, maar de constructor werd dus niet aangeroepen (nu ik em dus met een Cardinal gebruik wel)

日本!🎌


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 20:33

Tomatoman

Fulltime prutser

Kijk even in de klassedeclaratie of het wel echt een hKey is bij deze property. Als het echt een hKey is, moet je je realiseren dat dit al dan niet hetzelfde type is als een Cardinal.
Delphi:
1
2
3
type
  HKey1 = Cardinal;
  HKey2 = type(Cardinal);
In deze code wordt voor HKey1 geen aparte type information gegenereerd door de compiler, zodat de property editor beide typen niet kan onderscheiden. Voor HKey2 wordt wèl aparte type information gegenereerd, zodat de property editor beide types kan onderscheiden.

Een goede grap mag vrienden kosten.


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

Topicstarter
Ik gaf ik mijn startpost ook al aan dat hKey als jouw HKey2 gedeclareerd is. Het is dan ook een doodnormale hKey, zoals die ook in jouw delphi zit (Windows unit geloof ik).

日本!🎌