Hmm, that's strange! Try the following code. You should see a combobox for the 'Something' property:
[pascal]unit anothercomponent;
interface
uses
Classes;
type
TMyType = (mtA, mtB, mtC);
TAnotherComponent = class(TComponent)
private
FSomething: TMyType;
published
property Something: TMyType read FSomething write FSomething;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TAnotherComponent]);
end;
end.[/pascal]
You'll have to confirm what part of the unit is being compiled first! I noticed that there's a {$ELSE} sitting there in the code snippet you gave. These mean to conditionally compile - which means one of the branches won't compile at all! If you're unlucky, your type will be
[pascal]type
_D3DFORMAT = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;[/pascal]
That won't have a combobox because it's simply a number! (DWord = 32 bit unsigned integer, aka LongWord or Cardinal [in its current size]). How would Delphi possibly know what values to drop down if that's the case? (Note that the extra 'type' part there simply gives the new type a unique identity, so that you can't directly assign a DWord to a _D3DFormat type without a cast.
If that bit *is* the one being compiled, you'll have to write your own property editor I guess. You could create a form or dialogue with the known possible values (maybe a combobox) and an OK button. For more info, here are three articles by Peter Morris
http://www.howtodothings.com/showart...sp?article=310
http://www.howtodothings.com/showart...sp?article=320
http://www.howtodothings.com/showart...sp?article=327
Bookmarks