Da du da eh noch ein Abs hast, sind die Asserts falsch und überflüssig
Positive Indizies werden nicht unterstützt.
cu Ha-Jö
Ja und das ist mein Problem daher muss ich trotz deiner guten Arbeit die Classe verwerfen.
Zum besseren Verständnis.
Hier werden die Bitmap Ressourcen addiert die für das Window später verwendet werden.
Die Values gehen von -5 > 0
Delphi-Quellcode:
procedure AddChildControls();
begin
gs := TNegativeArray.Create(6); // -5 to 0
gS[0].Bitmap := SKAERO_CreateBitmapFromFile(FolderResource + 'UseBack.png', width, height);
gS[0].w := width;
gS[0].h := height;
gS[0].x := 0;
gS[0].y := MAX(YMIN_SIZE - gS[0].h, 0);
gS[0].opacity := 255;
gS[ID_LEFT].x := 0;
gS[ID_LEFT].y := YMIN_SIZE - 25;
gS[ID_LEFT].opacity := 128;
gS[ID_LEFT].Bitmap := SKAERO_CreateBitmapFromFile(FolderResource + 'Left.png', width, height);
gS[ID_LEFT].w := width;
gS[ID_LEFT].h := height;
gS[ID_RIGHT].x := gS[0].w - gS[ID_LEFT].w;
gS[ID_RIGHT].y := YMIN_SIZE - 25;
gS[ID_RIGHT].opacity := 128;
gS[ID_RIGHT].Bitmap := SKAERO_CreateBitmapFromFile(FolderResource + 'Right.png', width, height);
gS[ID_RIGHT].w := width;
gS[ID_RIGHT].h := height;
gS[ID_FLARE].x := 0;
gS[ID_FLARE].y := 16;
gS[ID_FLARE].opacity := 200;
gS[ID_FLARE].Bitmap := SKAERO_CreateBitmapFromFile(FolderResource + 'Flare.png', width, height);
gS[ID_FLARE].w := width;
gS[ID_FLARE].h := height;
gS[ID_BLUEFLARE].Bitmap := SKAERO_CreateBitmapFromFile(FolderResource + 'BlueFlare.png', width, height);
gS[ID_BLUEFLARE].w := width;
gS[ID_BLUEFLARE].h := height;
gS[ID_BLUEFLARE].x := 0;
gS[ID_BLUEFLARE].y := YMIN_SIZE - (gS[ID_BLUEFLARE].h + 3);
gS[ID_BLUEFLARE].opacity := 255;
gS[ID_FOCUS].Bitmap := SKAERO_CreateBitmapFromFile(FolderResource + 'Focus.png', width, height);
gS[ID_FOCUS].w := width;
gS[ID_FOCUS].h := height;
gS[ID_FOCUS].x := 0;
gS[ID_FOCUS].y := YMIN_SIZE - (gS[ID_FOCUS].h + 4);
gS[ID_FOCUS].opacity := 128;
end;
Das Problem mit dieser Classe ist das ich
NUR Negative Values addieren kann.
Bsp.
Icons werden addiert.
Delphi-Quellcode:
if CreateBarIcon(sIconSearch, nFound) then
begin
inc(nCount);
//Setlength(gS, nCount); funktioniert nicht mher wegen der neuen Classe
gS[nCount].y := nHeight;
gS[nCount].SCALE := SCALE_DEFAULT;
gS[nCount].opacity := 255;
sUseThumb := sTempPath + 'OTTB ' + IntToStr(nFound) + '.png';
gS[nCount].Bitmap := CreateDockIcon(sUseThumb, gS[nCount].w, gS[nCount].h);
DeleteFile(sUseThumb);
if DoLnk then
gS[nCount].ShellTo := Lowercase(sTarget);
Hier wird das Array normalerweise redimensioniert.
Wenn gS positive werte bekommt sind sie am ende doch Negativ bedingt durch die Classe.
Das Array gS muss eine Kombination von Negativen und Positiven werten sein.
Da das aber nicht geht werde ich wohl oder übel wieder alles umbauen müssen.
gruss