PDA

Ver la Versión Completa : TComboBox.Items.AddObject en Android


dison
02-06-2014, 19:59:32
Este código funciona bien en win32, con Android me da un Access Violation, alguien sabes como resolverlo?

Uso XE6


while not dataset.Eof do

begin

cbtipos.Items.AddObject( dataset.FieldByName('Name').AsString, TObject (dataset.FieldByName('ID').AsInteger ) ) ;

ds.Next;

end;

Gracias

pape19
25-08-2014, 21:40:35
Terminé en este hilo porque tenía el mismo inconveniente. Ya pasaron un par de meses de tu consulta, pero dejaré los resultados de lo que pude encontrar sobre esto por si alguien vuelve a este hilo con el mismo problema.

De todas formas estaría bueno que vos también comentes como lo resolviste.

Aparentemenete esa forma de agregar items a un combo ('Hola', TObjects(...)) no es soportada por Android, y da el acces violation como resultado.

Como solución encontré...usar LiveBindings, uniendo el combo(Prop Synch) con el Dataset respectivo. De esta forma, con hacer DataSetID.value tenemos el id del valor seleccionado en el combo.

Y la otra forma, comentada en este hilo.

http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_28343813.html

El link directo de la solución, aquí.

http://blogs.riversoftavg.com/index.php/2013/08/01/using-primitive-types-with-tstrings-in-ios/

Aunque esta manera no es soportada por el compilador de windows, si por el de android/IOs; lo cual me complicaba proseguir con el desarrollo, porque pruebo mi código con el compilador de windows todo el tiempo, llevando el apk a un dispositivo físico de forma menos frecuente.

Espero haber ayudado. Un saludo!

AgustinOrtu
13-10-2014, 07:38:44
Podes usar directivas de compilacion para solucionar tu problema de compilar "una cosa" para android/ios y "otra cosa" para win32

{$IF DEFINED(IOS) or DEFINED(ANDROID)}
// aca codigo para agregar en android/ios
{$ELSE}
// aca codigo para win32/OSx
ComboBox.Items.AddObject();
{$ENDIF}

Saludos!