Manejo de un combox

Hola que tal.. Quisiera preguntarte lo sig. Mira:
Tengo un comboBox con estos parámetros:
CBCtas.Items.AddObject(Clave +' '+Descripcion,TObject(Clave));
La variable clave es de una tabla y es de tipo String. Pregunto: ¿Cómo puedo obtener el valor de "Clave" dentro del comboBox si es string?
Cuando es char, lo hago así:
TomarClave:=Char((CBCtas.Items.Objects[CbCtas.ItemIndex]);
pero cuando es un string.. Como?
Gracias compa.

1 Respuesta

Respuesta
1
El problema es que las strings de Delphi tienen un mecanismo del garbage collector específico que causa el problema que describes.
Una solución es definir una envoltura pequeña del objeto para una string...
type TStrObject = class(TObject) private FStr: String; public constructor Create(const AStr: String); property Str: String read FStr write FStr; end; constructor TStrObject.Create(const AStr: String); begin inherited Create; FStr := AStr; end;
Puedes usarlo para añadir un string a la property de esta forma...
var
SObj: TStrObject;
begin
SObj := TStrObject.Create('Registry string goes here');
ListBox1.Items.AddObject('Item string goes here', SObj);
end;
Si quieres menos código:
ListBox1.Items.AddObject('Item string goes here',
TStrObject.Create('Registry string goes here'));
Para obtener el string:
S := TStrObject(ListBox1.Items.Objects[0]).Str;
Tú eres el encargado de liberar los objetos que crees de la forma:
for I := 0 to ListBox1.Items.Count - 1 do
begin
TStrObject(ListBox1.Items.Objects).Free;
ListBox1.Items.Objects := nil;
end;
Gracias por la respuesta Anti!... intentare echar andar hoy mismo.
Ok a ver si tienes suerte!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas