Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Listenindex überschreitet das Maximum (https://www.delphipraxis.net/54072-listenindex-ueberschreitet-das-maximum.html)

Lucky83 27. Sep 2005 13:12


Listenindex überschreitet das Maximum
 
Hallo

ich habe folgene Procedure mit der ich Buttons in einer Outlookbar dynamisch erzeuge:

procedure addJvOutlookButton(page:Integer;BtnIndex:Integer;C aption:Str15;ImgIndex:Integer;tag:Integer);
begin
jvoutlookbar1.Pages[page].Buttons.Insert(BtnIndex);
jvoutlookbar1.Pages[page].Buttons[BtnIndex].ImageIndex:=imgIndex;
jvoutlookbar1.Pages[page].Buttons[BtnIndex].Caption:=caption;
jvoutlookbar1.Pages[page].Buttons[BtnIndex].tag:=Tag;
end;

Während des Programms erstell ich dann folgenden Button:
addJvOutlookButton(0,0,'Test',42,102);

später möchte ich dann die Caption des Buttons ändern:
JvOutlookBar1.ActivePage.Buttons[102].Caption:='Test2';

dabei kommt immer die Fehlermeldung: Listenindex überschreitet das Maximum (102)

Kann mir da jemand weiterhelfen?

Matze 27. Sep 2005 13:16

Re: Listenindex überschreitet das Maximum
 
Bitte setze die [delphi]-Tags um die Code-Blöcke.

Die Meldung heißt soviel, dass es den Index 102 nicht gibt. Ich weiß nicht, wo du das aufrufst (Schleife?), doch ich denke, irgendwas lässt du von 1 - 102 laufen, anstatt von 0 - 101, oder so ähnlich. Kann es aber nur vermuten.

TeronG 27. Sep 2005 13:18

Re: Listenindex überschreitet das Maximum
 
Benutz doch bitte die Delphi-Tag's ...
Der Fehler sieht mir stark nach vergessenem -1 aus .. Sprich Index fängt bei 0 nicht bei 1 an
Benutzt du ne Schleife zum erstellen ??


EDIT: ... misst .. zu lahm ^^

himitsu 27. Sep 2005 13:19

Re: Listenindex überschreitet das Maximum
 
Du erstellst den Button ja unter Pages[page] und versuchst dann über ActivePage wieder darauf zuzugreifen.
Bist du dir sicher, daß ActivePage und Pages[page] das selber ist, oder zumindestens in der ActivePage mindestens 103 Buttons rumliegen?

marabu 27. Sep 2005 13:20

Re: Listenindex überschreitet das Maximum
 
Hallo Lucky83,

dein Button hat den Index 0 und den tag value 102, du verwendest aber den tag value als index - macht das Sinn?

Grüße vom marabu

Lucky83 27. Sep 2005 13:31

Re: Listenindex überschreitet das Maximum
 
Also ich will es zwar in einer for-Schleife aufrufen (hatte -1 nicht vergessen), aber da immer der Fehler kan hab ich zum Testen jetzt einfach einen Button angelegt. Durch klicken soll sich dann die Caption ändern.
Ich hab mehrer pages, welche mehrere Buttons enthalten. Auf der Page auf der ich mich gerade befinde (also activePage) gibt es 6 Buttons und der Button mit dem Tag 102 soll geändert werden.
Ist das verständlich? War im erklären noch nie gut und bin ebenfalls noch Anfänger.

@marabu
die procedure war schon vorhanden. Soll Update an dem Programm vornehmen. Wie soll ich es denn sonst machen?

himitsu 27. Sep 2005 13:35

Re: Listenindex überschreitet das Maximum
 
Na dann ist's doch klar.

Es gibt 6 Buttons, demnach Index 0 bis 5.

Also wird es dort keinen Button mit dem Index 102 geben :?:

leddl 27. Sep 2005 13:36

Re: Listenindex überschreitet das Maximum
 
Aber der Button mit dem Tag 102 hat ja nicht auch den Index 102. Aber genau den versuchst du später mit
Delphi-Quellcode:
JvOutlookBar1.ActivePage.Buttons[102].Caption:='Test2';
aufzurufen. Der existiert aber nicht, da du ja schließlich nur 6 Buttons hast. Entweder, du merkst dir anstatt des Tags den Index, oder du schreibst dir eine Funktion, die dir den Index eines Buttons anhand seines Tags zurückgibt.

//Edit:
ZB:
Delphi-Quellcode:
function GetBtnIndexByTag(aPage, aTag : Integer) : Integer;
begin
  Result := high(jvoutlookbar1.Pages[aPage].Buttons);
  while (Result >= low(jvoutlookbar1.Pages[aPage].Buttons)) and
        (jvoutlookbar1.Pages[aPage].Buttons[Result].Tag <> aTag) do
    dec(Result);
end;

Lucky83 27. Sep 2005 13:37

Re: Listenindex überschreitet das Maximum
 
*mist*
ja danke, wenn man mal auf dem Schlauch steht...........


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz