Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   Propìedad Text de ListViewButtonClick (https://www.clubdelphi.com/foros/showthread.php?t=90285)

JoysticK 11-05-2016 16:59:38

Propìedad Text de ListViewButtonClick
 
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:

Código:

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?, 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 [-]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 [-]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 [-]LItem.Data [tmultidetailappearancenames.Detail2] := clientdataset1familia.value+' / '+clientdataset1proveedor.value;


Aquí asigno una cadena de texto, y funciona.

Pero al reves

Código Delphi [-]micadena:=AItem.Data [tmultidetailappearancenames.Detail3];


me da el error:

Código Delphi [-][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

Cita:

Empezado por AgustinOrtu (Mensaje 505218)
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.


La franja horaria es GMT +2. Ahora son las 08:28:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi