Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TCombobox bei onchange itemindex ändern (https://www.delphipraxis.net/47894-tcombobox-bei-onchange-itemindex-aendern.html)

LoL 17. Jun 2005 13:32


TCombobox bei onchange itemindex ändern
 
hi

wenn ich bei dem OnChange Event das Item ändere das Itemindex wird, ist danach itemindex = -1.
Woran liegt das und wie kann ich das verhindern oder umgehen ohne extra den itemindex zu speichern usw...

Pitch-Bull 17. Jun 2005 13:34

Re: TCombobox bei onchange itemindex ändern
 
könntest du das eventuell ein wenig genauer ausdrücken?

LoL 17. Jun 2005 13:38

Re: TCombobox bei onchange itemindex ändern
 
Nun tut mir Leid wenn ich mich ein wenig unverständlich ausgedrückt habe also nochmal:

Ich hab eine Comobox. Dort sind mehrere Items enthalten. Im Onchange Ereignix will ich alle Items ändern(namentlich).
Komischer weise aber wird der Itemindex auf = -1 gesetzt wenn ich das Item ändere das dann Itemindex ist.

Delphi-Quellcode:
Onchange
begin
  //itemindex beispielsweise 2
  combobox.items[2] := 'ändern';
  //jetzt ist der itemindex -1
end;

ltiefland 17. Jun 2005 13:44

Re: TCombobox bei onchange itemindex ändern
 
Zitat:

Zitat von LoL
Nun tut mir Leid wenn ich mich ein wenig unverständlich ausgedrückt habe also nochmal:

Ich hab eine Comobox. Dort sind mehrere Items enthalten. Im Onchange Ereignix will ich alle Items ändern(namentlich).
Komischer weise aber wird der Itemindex auf = -1 gesetzt wenn ich das Item ändere das dann Itemindex ist.

Delphi-Quellcode:
Onchange
begin
  //itemindex beispielsweise 2
  combobox.items[2] := 'ändern';
  //jetzt ist der itemindex -1
end;

Du weißt schon, daß der ItemIndex bei 0 losgeht (bei ausge? Versuchst Du vielleicht einen nicht existierenden Eintrag zu ändern?

LoL 17. Jun 2005 13:46

Re: TCombobox bei onchange itemindex ändern
 
Nein dann würde ja eine Exception auftreten! (Index out of Bounds)
Es muss an was andererm liegt.

Pitch-Bull 17. Jun 2005 13:47

Re: TCombobox bei onchange itemindex ändern
 
was für einen index erwartest du denn? soll diese wie bei deinem beispiel "2" bleiben?
(willst du alle items gleichzeitig verändern?wenn ja neuschreiben oder umschreiben)?)

LoL 17. Jun 2005 13:50

Re: TCombobox bei onchange itemindex ändern
 
Ich erwarte das der Index natürlich gleich bleibt!
Ich überschreibe bzw ändere den Namen ja lediglich der Items und lösche sie nicht vorher und schreibe dann alle neu.

Pitch-Bull 17. Jun 2005 13:54

Re: TCombobox bei onchange itemindex ändern
 
Das dürfte dir helfen...
Delphi-Quellcode:
combobox1.items.Strings[2] := 'ändern';
:coder:

LoL 17. Jun 2005 13:57

Re: TCombobox bei onchange itemindex ändern
 
Hab ich auch schon gedacht aber das hat den gleichen Effekt.
Soweit ich weis macht das auch genau das gleiche. Da Items eine Stringliste ist.

Ihr könnt es ja selbst ausprobieren:
Delphi-Quellcode:
  combobox1.Items[combobox1.ItemIndex] := 'ändern';
//combobox1.Items.Strings[combobox1.ItemIndex] := 'ändern';
das Item wurde zwar geändert aber der Itemindex ist -1

Pitch-Bull 17. Jun 2005 14:02

Re: TCombobox bei onchange itemindex ändern
 
Dann verstehe ich nicht so ganz was du wilst... Zeig mal deinen ganzen Code...

Was willst du denn damit erreichen, das er nicht den Index -1 erhält?

Vielleicht ist deine Ausgabe ja auch falsch(falls du eine hast)... Ansonsten k.A.

LoL 17. Jun 2005 14:10

Re: TCombobox bei onchange itemindex ändern
 
Delphi-Quellcode:
cb_language : TCombobox;
...
var d_lang : TIiniFile
begin
  if cb_language.Items.Count > 0 then
  for i := 0 to 2 do
    cb_language.Items[i] := d_lang.ReadString('Main','cb_language' + IntToStr(i),'')
  else
  for i := 0 to 2 do
    cb_language.Items.Add(d_lang.ReadString('Main','cb_language' + IntToStr(i),''));
end;
Wenn noch keine Items vorhanden sind werden alle geladen.
Wenn Items vorhanden sind sollen die mit dem richtigen Namen überschrieben werden.

scp 17. Jun 2005 14:19

Re: TCombobox bei onchange itemindex ändern
 
Dann tu den Wert doch einfach zwischenspeichern:
Delphi-Quellcode:
var
  cb_language_index: integer;
begin
  cb_language_index := cb_language.itemindex;
  // Dein Code...
  cb_language.itemindex := cb_language_index;
end;

Pitch-Bull 17. Jun 2005 14:22

Re: TCombobox bei onchange itemindex ändern
 
Delphi-Quellcode:
cb_language : TCombobox;
...
var d_lang : TIiniFile
begin
  if cb_language.Items.Count > 0 then
  for i := 0 to 2 do
    cb_language.Items[i] := d_lang.ReadString('Main','cb_language' + IntToStr(i),'')
    cb_language.itemindex:=i;
  else
  for i := 0 to 2 do
    cb_language.Items.Add(d_lang.ReadString('Main','cb_language' + IntToStr(i),''));
    cb_language.itemindex:=i;
end;
????

LoL 17. Jun 2005 14:30

Re: TCombobox bei onchange itemindex ändern
 
Zitat:

Zitat von lol
Woran liegt das und wie kann ich das verhindern oder umgehen ohne extra den itemindex zu speichern usw...

Zitat:

Zitat von scp
Dann tu den Wert doch einfach zwischenspeichern:
Delphi-Quellcode:
var
  cb_language_index: integer;
begin
  cb_language_index := cb_language.itemindex;
  // Dein Code...
  cb_language.itemindex := cb_language_index;
end;

Das wollte ich ja vermeiden :)
Das ist zwar eine Lösung aber geht es auch anders?


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 Uhr.

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