Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Listbox <-> Listenindex überschreitet das maximum (https://www.delphipraxis.net/24407-listbox-listenindex-ueberschreitet-das-maximum.html)

Daradon 20. Jun 2004 17:38


Listbox <-> Listenindex überschreitet das maximum
 
Hi :)

mein erster post... gleich zum thema
Ich habe ein OnClick in meiner Listbox .. nun wenn items eingetragen sind aber man klickt ins "leere" dann bekomm ich logischerweise diese meldung, gibt es eine möglichkeit diese zu unterdrücken da sie mehr als nervig für den endanwender ist.

Daradon

alcaeus 20. Jun 2004 17:40

Re: Listbox <-> Listenindex überschreitet das maximum
 
Ja, mit itemindex kannst du überprüfen, ob ein element überhaupt ausgewählt ist. Ist ItemIndex -1, ist keines ausgewählt, ansonsten ist es der Index des Elements (beginnend mit 0)

Greetz
alcaeus

Jens Schumann 20. Jun 2004 17:41

Re: Listbox <-> Listenindex überschreitet das maximum
 
Du kannst bevor Du auf die Listbox zugreifst testen ob TListBox.ItemIndex verschieden -1 ist.

Daradon 20. Jun 2004 17:46

Re: Listbox <-> Listenindex überschreitet das maximum
 
vielleicht klingt die frage zu newbie haft das man sie sich nicht genau durchließt... es geht darum .. ich habe 3 einträge drinnen, und dann klickt man nicht auf einen eintrag sondern ins leere .. und schon hat man die fehlermeldung.

Jens Schumann 20. Jun 2004 17:49

Re: Listbox <-> Listenindex überschreitet das maximum
 
Zitat:

Zitat von Daradon
vielleicht klingt die frage zu newbie haft

Stimmt.

Wenn ich bei einer ListBox ins leere klicke hat Itemindex den Wert -1.
Deshalb schreibe ich auch:
Code:
If Listbox.ItemIndex<>-1 then
  ShowMessage(ListBox.Items[Listbox.ItemIndex])
Damit wäre der Fehler verschwunden.

Ohne Source kann ich nix weiter dazu schreiben.

Nicodius 20. Jun 2004 17:51

Re: Listbox <-> Listenindex überschreitet das maximum
 
itemindex -1 bedeutet wenn KEIN EINTRAG(= '') da steht und man draufklickt ;)

hoffe das hilft

Sharky 20. Jun 2004 17:53

Re: Listbox <-> Listenindex überschreitet das maximum
 
Zitat:

Zitat von Daradon
.... und dann klickt man nicht auf einen eintrag sondern ins leere .. und schon hat man die fehlermeldung.

Hmmm... bei mir kommt da keine Fehlermeldung! Was genau hast Du denn in deinem .OnClick stehen?

Ach ja, bevor ich es vergesse:

"Herzlich Willkommen in der Delphi-PRAXIS".

Daradon 20. Jun 2004 17:54

Re: Listbox <-> Listenindex überschreitet das maximum
 
Delphi-Quellcode:
procedure TForm1.ListBox1Click(Sender: TObject);
var
  help : Integer;
  list,prefix : TStringList;
begin
list := TStringList.Create;
prefix := TStringList.create;

//ShowMessage(IntToStr(ValueListEditor1.RowCount));

if help = 0 then
begin
ValueListEditor1.InsertRow('Titel:','',true);
ValueListEditor1.InsertRow('Speicher1:','',true);
ValueListEditor1.InsertRow('Speicher2:','',true);
ValueListEditor1.InsertRow('Speicher3:','',true);
ValueListEditor1.InsertRow('Text:','',true);
ValueListEditor1.InsertRow('Url:','',true);
ValueListEditor1.InsertRow('Username:','',true);
ValueListEditor1.InsertRow('Passwort:','',true);
help := 1
end
  else
    begin
      List := GetContentByRange(listbox1.Items[Listbox1.itemindex]);
      ValueListEditor1.Values['Titel:']:=GetPureStr(List[0]);
      ValueListEditor1.Values['Speicher1:']:=GetPureStr(List[1]);
      ValueListEditor1.Values['Speicher2:']:=GetPureStr(List[2]);
      ValueListEditor1.Values['Speicher3:']:=GetPureStr(List[3]);
      ValueListEditor1.Values['Text:']:=GetPureStr(List[4]);
      ValueListEditor1.Values['Url:']:=GetPureStr(List[5]);
      ValueListEditor1.Values['Username:']:=GetPureStr(List[6]);
      ValueListEditor1.Values['Passwort:']:=GetPureStr(List[7]);
      end;
end;
also .. die listbox is eine übersichtsliste von einträgen die sha1 verschlüsselt in einer datei liegen, klickt man nun auf einen eintrag , holt sich die box die daten aus der datei und übergibt sie in einen valuelisteditor. Nun .. wenn ich jetzt z.b 4 einträge drinnen habe .. und auf den leeren teil der liste klicke kommt natürlich sofort der fehler (was mir auch absolut klar ist warum). Nun ist es aber nervig wenn das dem benutzer dauernt passiert, deswegen suche ich nach einer möglichkeit das nur einträge angeklickt werden können und nicht die ganze komponente anklickbar ist.

Hoffe ihr versteht mich jetzt :)


p.s:
Zitat:

"Herzlich Willkommen in der Delphi-PRAXIS".
danke :)

Jens Schumann 20. Jun 2004 17:58

Re: Listbox <-> Listenindex überschreitet das maximum
 
Hallo
Delphi-Quellcode:
procedure TForm1.ListBox1Click(Sender: TObject);
var
  help : Integer;
  list,prefix : TStringList;
begin
If ListBox1.ItemIndex=-1 then Exit; // Schreib das mal dazu

list := TStringList.Create;
prefix := TStringList.create;

//ShowMessage(IntToStr(ValueListEditor1.RowCount));

if help = 0 then
begin
ValueListEditor1.InsertRow('Titel:','',true);
ValueListEditor1.InsertRow('Speicher1:','',true);
ValueListEditor1.InsertRow('Speicher2:','',true);
ValueListEditor1.InsertRow('Speicher3:','',true);
ValueListEditor1.InsertRow('Text:','',true);
ValueListEditor1.InsertRow('Url:','',true);
ValueListEditor1.InsertRow('Username:','',true);
ValueListEditor1.InsertRow('Passwort:','',true);
help := 1 
end
  else
    begin
      List := GetContentByRange(listbox1.Items[Listbox1.itemindex]);
      ValueListEditor1.Values['Titel:']:=GetPureStr(List[0]);
      ValueListEditor1.Values['Speicher1:']:=GetPureStr(List[1]);
      ValueListEditor1.Values['Speicher2:']:=GetPureStr(List[2]);
      ValueListEditor1.Values['Speicher3:']:=GetPureStr(List[3]);
      ValueListEditor1.Values['Text:']:=GetPureStr(List[4]);
      ValueListEditor1.Values['Url:']:=GetPureStr(List[5]);
      ValueListEditor1.Values['Username:']:=GetPureStr(List[6]);
      ValueListEditor1.Values['Passwort:']:=GetPureStr(List[7]);
      end;
end;
Achtung: Du musst am Ende des Event-Handlers list und prefix noch freigeben !!!

Sharky 20. Jun 2004 17:59

Re: Listbox <-> Listenindex überschreitet das maximum
 
Zitat:

Zitat von Daradon
....und auf den leeren teil der liste klicke kommt natürlich sofort der fehler ....

Hai Daradon,

bei mir (Delphi 7) wird das OnClick-Ereigniss nicht ausgelöst wenn ich auf den "leeren Teil" eine ListBox klicke. Nur wenn ich auch wirklich einen Eintrag auswähle!


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 Uhr.
Seite 1 von 2  1 2      

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