PDA

Ver la Versión Completa : Propìedad Text de ListViewButtonClick


JoysticK
11-05-2016, 16:59:38
Buenas tardes, estoy empezando con un libro de programación delphi para dispositivos móviles para ver si nos actualizamos un poco y ya he encontrado el primer problemilla....


Actualmente estoy probando delphi 10 y el libro se basa en xe5, 6 y 7, en el primer ejercicio que empiezo ya me da error de compilación, exactamente en el método OnButtonClick de un TListView, al menos hasta la versión XE7 el procedimiento es el siguiente:


procedure TTabbedForm.ListView1ButtonClick(const Sender: TObject;
const AItem: TListViewItem; const AObject: TListItemSimpleControl);
begin
ListBox1.Items.Add(AItem.Text);
end;


Con Delphi 10 uno de los parámetros, exactamente el de AItem, ha cambiado de tipo y ahora, en vez de ser TListViewItem es un TListItem, y claro ya no tiene la propiedad Text por lo que el código anterior me arroja un error de compilación, alguien sabría decirme como debo acceder ahora al texto ? gracias

TOPX
11-05-2016, 21:15:26
Buenas tardes,

En el momento no tengo a la mano Seattle para verificar, pero según In RAD Studio 10 Seattle, the properties “.Text” and “.Detail” for my ListViews are underlined as errors. How do I fix this? (http://stackoverflow.com/a/32541841/267964), se debería "castear" aquel AItem como un Appearances.TListViewItem.
-

JoysticK
12-05-2016, 09:19:47
Gracias Topx, lo estudio a ver ahora como se accede :)

turbopascual5.0
14-05-2016, 01:53:13
Hola, yo estoy empezando con android y me las estoy viendo con el listview.

Yo accedo para asignarle un valor, para leer valores tengo problemas, esto es un trozo de código en el que asigno un valor a detail y a text (he quitado partes no relevantes), y funciona.

Código Delphi [-] (http://www.clubdelphi.com/foros/#)procedure TTabbedwithNavigationForm.trabajos; var cadena1,cadena2,cadena3,cadena4,cadena5:string; LItem: TListViewItem; BEGIN LItem:=listview2.Items.Add; LItem.detail:=clientdataset2respon_t.AsString; LItem.text:=clientdataset2ref_t.AsString; end;


Creo que lo que quieres acceder es parecido a:

Código Delphi [-] (http://www.clubdelphi.com/foros/#)procedure TTabbedwithNavigationForm.ListView2ItemClick(const Sender: TObject; const AItem: TListViewItem); begin sitrab:=true; trabajoescogido:=strtoint(aitem.ButtonText);


a mi me funciona


El problema lo tengo en un listview multidetail. Primero que no tenía la propiedad itemapearance multidetail..... hasta encontrar el método de que aparezca instalando paquete que viene en los ejemplos, luego modifica la unit para añadir la propiedad text, vaya tela. Una cosa que he visto por encima pero que no he mirado a fondo es que parece que "pasa" de la asignación del tamaño de font...

En la página en portugués tenía la forma de asignar el valor, y funciona, en mi código es:

Código Delphi [-] (http://www.clubdelphi.com/foros/#)LItem.Data [tmultidetailappearancenames.Detail2] := clientdataset1familia.value+' / '+clientdataset1proveedor.value;


Aquí asigno una cadena de texto, y funciona.

Pero al reves

Código Delphi [-] (http://www.clubdelphi.com/foros/#)micadena:=AItem.Data [tmultidetailappearancenames.Detail3];


me da el error:

Código Delphi [-] (http://www.clubdelphi.com/foros/#)[DCC Error] TabbedFormwithNavigation.pas(820): E2010 Incompatible types: 'string' and 'TValue'


Estoy atascado, he tirado de san google, foros y demás y no me salgo. Y eso de que si a=b entonces b=a no funcione me rompe los esquemas

Ademas mi nivel tampoco es muy elevado.

Un saludo a todos

AgustinOrtu
14-05-2016, 04:36:33
Prueba Data[...].AsString

En Data los ListItem tienen TValue, no string. Pero para asignar "no hay problema" porque la conversión es implícita, en realidad se ejecuta un método
TValue.Make o TValue.FromString no recuerdo

Fmx es bastante distinto y complicado en algunos aspectos pero es más flexible

turbopascual5.0
15-05-2016, 16:18:30
Prueba Data[...].AsString

En Data los ListItem tienen TValue, no string. Pero para asignar "no hay problema" porque la conversión es implícita, en realidad se ejecuta un método
TValue.Make o TValue.FromString no recuerdo

Fmx es bastante distinto y complicado en algunos aspectos pero es más flexible

Muchísimas gracias Agustin, ha funcionado perfectamente.