![]() |
TcxCombobox in TcxGrid Zugriff bei Items.AddObject
Hallo! Ich habe mal folgende Frage: Ich nutze bei den DevExpress-Komponenten im cxGrid eine Combobox. Ich brauche wie in Html eine Combobox, in der ich neben dem Anzeige String (Texteigenschaft) einen Stringwert zum Speichern habe. Dazu habe ich folgende Zeile benutzt:
TcxComboBoxProperties(cxGridDBTableView1ComboBox.P roperties).Items.AddObject(String1,TObject(String2 )); Versuche ich nun so auf diesen Wert zuzugreifen: String(TcxComboBoxProperties(cxGridDBTableView1Com boBox.Properties).Items.Objects[i]) erhalte während der Laufzeit eine Zugriffsverletzung in Adresse soundo ntll.dll oder so oder es wird einfach nur Schrott abgespeichert. Wie macht man das richtig, bzw. was mache ich falsch? Würde mich über eine Antwort sehr freuen, vielen Dank! |
Re: TcxCombobox in TcxGrid Zugriff bei Items.AddObject
Hi,
ntdll.dll richtig? Wenn ja, dann könnte es das Problem sein: ![]() |
Re: TcxCombobox in TcxGrid Zugriff bei Items.AddObject
Hm. Danke für die Antwort. Daran liegts glaube ich nicht, jedenfalls nicht ausschließlich. Jetzt habe ich auch als Fehlermeldung Zugriffsverletzung in Adresse so und so in der compilierten Projektdatei. Irgendwas mache ich falsch. Ich kenne mich noch zu wenig mit dem Umgang mit Objekten aus. Ich weiß nicht, ob ich einfach einen String in ein Objekt und anschließend wieder in einen String zurückverwandeln kann, bzw. ob man das selbe mit einem Integerwert machen kann, bzw. ich weiß nicht wie.
|
Re: TcxCombobox in TcxGrid Zugriff bei Items.AddObject
Hi,
sorry ist mein Fehler. Ich hab das mit der Zugriffsverletzung übersehen. :oops: Ich würde es so lösen:
Delphi-Quellcode:
Das hat den Vorteil, dass du es bei Bedarf schnell anpassen kannst (vielleicht musst du ja noch irgendwas anderes mitgeben).
TmyItem = class(TObject)
private FString2: String; public property String2: String read FString2 write FString2; end; // dann beim abspeichern myItem := TmyItem.Create; myItem.String2 := String2; TcxComboBoxProperties(cxGridDBTableView1ComboBox.Properties).Items.AddObject(String1, myItem); // Auslesen myItem := TMyItem(TcxComboBoxProperties(cxGridDBTableView1ComboBox.Properties).Items.Objects[i]); Was du noch machen solltest, sind die Bezeichner anpassen (String2 ist nicht sehr aussagefreundlich) |
Re: TcxCombobox in TcxGrid Zugriff bei Items.AddObject
Klasse! Vielen Dank für die Antwort. Genau das ist die Lösung. Muß noch ein bißchen darüber nachdenken, aber es funktioniert.
|
Re: TcxCombobox in TcxGrid Zugriff bei Items.AddObject
Achso eine Frage habe ich noch:
Kann ich mehrmals myItem := TmyItem.Create; hintereinander benutzen? Bzw. was passiert genau, wird jedesmal ein neues Objekt angelegt oder das alte zerstört und neu angelegt, wenn ich beides hintereinander mehrfach verwende. Bzw. wann kann ich myItem.Free und myItem.Destroy sagen? |
Re: TcxCombobox in TcxGrid Zugriff bei Items.AddObject
Hi,
ja kannst du. Zitat:
Delphi-Quellcode:
// Beispiel anhand der Combobox:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); var I: Integer; begin for I := 0 to Combobox1.Items.Count - 1 do begin Combobox1.Items.Objects[I].Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 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