"SpookiePower" <boxjunk2600@hotmail.com> skrev i en meddelelse
news:akqkhi$n7l$1@news.cybercity.dk...
> Jeg har lavet en type som ser sådan ud -
> TFarve = (clRed, clYellow, clLime, clBlue, clPurple);
>
> Disse farver af typen TFarve, skal jeg have lagt over i et Panel som
bruger
> typen TColor. Er det egentligt muligt at konvertere en selvdefineret
type
> til
> en anden, feks TColor ?
Hmmmm.... nej - den går ikke Granberg.
Du har vist blandet to ting sammen. Selv om du har anvendt navne som
også bruges om standard farver, så er det stadig en *opremsningstype* du
har defineret (det betyder parenteserne). Du kunne f.eks. have skrevet
dette i stedet:
TFarve = (farveRoed, farveGul, farveGroen, farveBlaa, farveLilla);
Det er nok en lidt dum måde at gøre det på, hvis du ønsker
typekompatibilitet med TColor.
Du kan sagtens få din farve ind i et Panel, f.eks. sådan her:
Panel1.Color := TColor(MinFarve);
Det der sker så, er at du får typecastet dine værdier over, men det
bliver helt forkert i dette tilfælde, fordi værdierne ikke svarer til
hinanden (du får ordinalværdierne 0,1,2,3,4,5).
Måske har du brug for en "Subrange type" i stedet for? Denne har dog
visse begrænsninger. Se selv i dette udklip fra Delphis hjælpefil:
A subrange type represents a subset of the values in another ordinal
type (called the base type). Any construction of the form Low..High,
where Low and High are constant expressions of the same ordinal type and
Low is less than High, identifies a subrange type that includes all
values between Low and High. For example, if you declare the enumerated
type
type TColors = (Red, Blue, Green, Yellow, Orange, Purple, White, Black);
you can then define a subrange type like
type TMyColors = Green..White;
Here TMyColors includes the values Green, Yellow, Orange, Purple, and
White.
--
M.v.h.
Olav
Fjern intet for at skrive til mig
|