AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TComboBox: Items.IndexOfObject funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

TComboBox: Items.IndexOfObject funktioniert nicht

Ein Thema von OdermattThomas · begonnen am 30. Jul 2004 · letzter Beitrag vom 30. Jul 2004
Antwort Antwort
OdermattThomas

Registriert seit: 26. Jul 2004
Ort: Cham
2 Beiträge
 
#1

TComboBox: Items.IndexOfObject funktioniert nicht

  Alt 30. Jul 2004, 08:30
ich habe eine anwendung von delphi 4 auf delphi 6 migriert und stehe bei banalen sachen wie der folgenden an. vielleicht kann mir jemand weiterhelfen.

Code:
  coList.Items.Clear;
  coList.Items.AddObject( 'Item1', Pointer(23) );
  Caption := IntToStr( coList.Items.IndexOfObject( Pointer(23) ) );
sobald coList.Items.IndexOfObject aufgerufen wird, gibt's eine SListError-Exception. bis anhin konnte ich so gewisse daten (zahlen) an einem item "anhängen" und danach suchen... das ist alles was ich will.

coList ist ein TComboBox-Control.

vielen dank für euren input.
  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#2

Re: TComboBox: Items.IndexOfObject funktioniert nicht

  Alt 30. Jul 2004, 08:38
das ist natürlich ein dirty trick, denn du hängst gar kein objekt (abgeleitet von TObject) an die liste an.

verwende entweder tag für das speichern von zahlen oder kreiere einen typ TInteger mit einem Integer-Value und einem Constructor der diesen Value entgegennimmt und setzt und hänge diese zahl dann mit TInteger.Create(12) anstelle Pointer(12) an. Dazu sollte die Items.OwnsObjects-Eigenschaft (falls es die gibt) auf True gesetzt werden.
  Mit Zitat antworten Zitat
OdermattThomas

Registriert seit: 26. Jul 2004
Ort: Cham
2 Beiträge
 
#3

Re: TComboBox: Items.IndexOfObject funktioniert nicht

  Alt 30. Jul 2004, 08:49
interessanterweise funktioniert folgender code immer noch perfekt (in delphi 6):

Code:
  s := TStringlist.Create;
  s.AddObject( 'Item1', Pointer(1) );
  s.AddObject( 'Item1', Pointer(2) );
  s.AddObject( 'Item1', Pointer(3) );
  Caption := IntToStr( s.IndexOfObject( Pointer(2) ));
  s.Free;
ich vermute irgend eine umstellung in controls.pas:
Code:
function TCustomComboBoxStrings.GetObject(Index: Integer): TObject;
begin
  Result := TObject(SendMessage(ComboBox.Handle, CB_GETITEMDATA, Index, 0));
  if Longint(Result) = CB_ERR then
    Error(SListIndexError, Index);
end;

procedure TCustomComboBoxStrings.PutObject(Index: Integer; AObject: TObject);
begin
  SendMessage(ComboBox.Handle, CB_SETITEMDATA, Index, Longint(AObject));
end;
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: TComboBox: Items.IndexOfObject funktioniert nicht

  Alt 30. Jul 2004, 18:15
Moin Thomas,

der Fehler muss woanders liegen, denn wenn ich Deinen Code vom Eingangsposting in D6 PE ausprobiere funktioniert er wie erwartet, sprich, bringt keinen Fehler.
Ich habe für so etwas zwar bislang TObject(...) statt Pointer(...) benutzt (es heisst ja schliesslich AddObject ), aber für den Test habe ich es auch mit Pointer(...) gemacht.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:19 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