/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Dynamisk array of TColor
Fra : Holger Nielsen


Dato : 09-08-08 14:02

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

 
 
Søg
Reklame
Statistik
Spørgsmål : 177416
Tips : 31962
Nyheder : 719565
Indlæg : 6407862
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste