| Jeg bruger Delphi 7 og arbejder på en komponent, som indeholder et
 dynamisk array af farver. Jeg vil gerne tildele farveværdier.
 Her følger er et kodeklip:
 
 
 TColorArray     = array of TColor;
 
 TCustomStatusDots = class(TImage)
 private
 { Private declarations }
 ...
 FColorIndex   : Word;
 FStatusColors : TColorArray;
 ...
 end;
 
 procedure TCustomStatusDots.NewColors(NoOfColors: Word);
 begin
 SetLength(FStatusColors,NoOfColors);
 FColorIndex:= 0;
 end;
 
 procedure TCustomStatusDots.AddColor(Color: TColor);
 begin
 if FColorIndex < Length(FStatusColor) then
 begin
 FStatusColors[FColorIndex]:= Color;
 Inc(FColorIndex);
 end;
 end;
 
 procedure TCustomStatusDots.AssignStatusColors(NewColors: TColorArray);
 begin
 SetLength(FStatusColors,Length(NewColors));
 FStatusColors:= Copy(NewColors,0,High(NewColors));
 end;
 
 
 
 Mit andet forsøg er dette:
 
 StatusDots.NewColors(5);
 StatusDots.AddColor(clBlack);
 StatusDots.AddColor(clYellow);
 StatusDots.AddColor(clBlue);
 StatusDots.AddColor(clLime);
 StatusDots.AddColor(clRed);
 
 Det virker, men er ikke elegant.
 Mit første forsøg var:
 
 StatusDots.AssignStatusColors([clBlack,clYellow,clBlue,clLime,clRed]);
 
 Det er mere elegent, men virker ikke, fordi index-type har en ulovlig værdi.
 Fra Delphi Help: "... each indexType is an ordinal type whose range does
 not exceed 2GB").
 
 Har nogen et forslag til en forbedring af mit andet forsøg?
 
 
 Jeg har ingen erfaring med brug af "property editors". Kunne man lave
 én, som ville se sådan ud i Object Inspector?
 
 NoOfColors   |          4  |
 [-] StatusColors |(TColorArray)|
 C1         |  clBlack    |
 C0         |  clRed      |
 C2         |  clOlive    |
 C3         |  clSilver   |
 C4         |  clGreen    |
 
 Eller mere generelt lave en property editor for et dynamisk array?
 
 
 Med venlig hilsen
 
 Holger Nielsen
 
 
 |