Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para iOS/OSX
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-01-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 3
giantonti1801 Va por buen camino
Alimentacion de ListView con Datos SQL en tiempo de ejecucion

Buen dia.

Estoy desarrolando en android y ulizando un LinstView, he agragado algunas cajas adicionales para luego alimentarla en tiempo de ejecucion con informacion de tablas SQL Server. Lo hice con Bind Visully funciona perfecto pero me limita tanto en la parte grafica como tambien en algunas consultas.
Me explico mejor quiero colocarle la imagen Redonda en la lista pero no puedo hacerlo por Bind Visually sino la única forma que conozco es hacerlo en tiempo de ejecución, y aunque lo puedo hacer con el Listview estandart cuando le agrego los otros campos tengo dificulta para llegarle a estos campos y alimentarlos. Adjunto una foto que talvez pueda darle más claridad.
Los campos son:
Código Delphi [-]
txtNombre
Image2
TxtRut
txtFecha
txtAprobacion
txtComentario

Todos estos campos estan en ListView y realmente lo que quiero es alimentarlos en tiempo de ejecución y también cambiarle la imagen y colocársela redonda.

Código Delphi [-]
UniQueryDetalleVisita.Open;
     TabControl.ActiveTab :=   Tbl_DetalleVisitas;
     while not UniQueryVisitantes.Eof  do
      begin
      item2 := ListView2.Items.Add;
      streamIMG2 := TMemoryStream.Create;
        if UniQueryVisitantesFOTO.IsNull  then
        ImgPadron2.Bitmap.SaveToStream(streamIMG2)
        else
        UniQueryVisitantesFOTO.SaveToStream(streamIMG2);
        Circle2.Fill.Bitmap.Bitmap.LoadFromStream(streamIMG2);
        item2.Bitmap := Circle2.MakeScreenshot; //aqui la imagen
        Item2.Text := UniQueryVisitantesNom_vis.AsString; //aqui unos de la información de dataBase
       //......... otra onformacion
        
        UniQueryVisitantes.Next;
      end;

Última edición por giantonti1801 fecha: 29-03-2023 a las 21:43:36.
Responder Con Cita
  #2  
Antiguo 12-01-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 3
giantonti1801 Va por buen camino
ya logre hacerlo

Código Delphi [-]
TListItemImage(item.Objects.FindDrawable('Image2')).Bitmap := Circle2.MakeScreenshot;
        TListItemText(item.Objects.FindDrawable('txtNombre')).Text := UniQueryDetalleVisitaNom_Vis.AsString;
        TListItemText(item.Objects.FindDrawable('txtRut')).Text := UniQueryDetalleVisitarut__vis.AsString;
        TListItemText(item.Objects.FindDrawable('txtFecha')).Text := UniQueryDetalleVisitaHora_in_vis.AsString;
        TListItemText(item.Objects.FindDrawable('txtAprobacion')).Text := UniQueryDetalleVisitaact_vis.AsString;
        TListItemText(item.Objects.FindDrawable('txtComentarios')).Text := UniQueryDetalleVisitacometario.AsString;
        UniQueryDetalleVisita.Next;
Pero ahora tengo otra dificulta que si le doy un clic con el elemento de
Código Delphi [-]
ListView1ItemClickEx
necesito capturar el valor de este registro en especifico "txtRut" y no consigo la forma de hacerlo.
Responder Con Cita
  #3  
Antiguo 12-01-2023
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 933
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Estimado giantonti1801, puedes utilizar las propiedades del Item.Tag o Item.TagString para almacenar el identificador que requieres...

Esto deberias realizar en el momento que estas agregando los items al TListview...

Código Delphi [-]
    Item.Tag := UniQueryDetalleVisitarut__vis.AsInteger;
    Item.TagString := UniQueryDetalleVisitarut__vis.AsString;

Luego en el evento ListView1ItemClickEx, accedes a sus valores a traves de Item

Saludos cordiales
Responder Con Cita
  #4  
Antiguo 12-01-2023
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.549
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por giantonti1801 Ver Mensaje
necesito capturar el valor de este registro en especifico "txtRut" y no consigo la forma de hacerlo.
Depende de cómo hayas creado esos elementos.
En mi caso que utilizo ese sistema:
https://blog.delphiedintorni.it/2014...tlistview.html

Se puede acceder a los detalles de la siguiente forma (aunque uses otro, es posible que se pueda extrapolar) accediendo a los objetos:

En el evento OnItemclick hay lo siguiente:
Código Delphi [-]
var
  Str:String;
begin
    // recorrer los diferentes Objetos del Item
  for var I:integer := 0 to (AItem.Objects.Count-1) do 
    // Si son de tipo Texto los Añado
    if (AItem.Objects[i] is TListItemText) then
      Str := Str + TListItemText(AItem.Objects[i]).Text + SLineBreak;

  ShowMessage('Objects:' + Str);

En mi caso con un Listview así:



Si pulsas en los Items, obtienes esto:

(En el segundo)


(En el cuarto)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 12-01-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 3
giantonti1801 Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Depende de cómo hayas creado esos elementos.
En mi caso que utilizo ese sistema:
https://blog.delphiedintorni.it/2014...tlistview.html

Se puede acceder a los detalles de la siguiente forma (aunque uses otro, es posible que se pueda extrapolar) accediendo a los objetos:

En el evento OnItemclick hay lo siguiente:
Código Delphi [-]
var
  Str:String;
begin
    // recorrer los diferentes Objetos del Item
  for var I:integer := 0 to (AItem.Objects.Count-1) do 
    // Si son de tipo Texto los Añado
    if (AItem.Objects[i] is TListItemText) then
      Str := Str + TListItemText(AItem.Objects[i]).Text + SLineBreak;

  ShowMessage('Objects:' + Str);

En mi caso con un Listview así:



Si pulsas en los Items, obtienes esto:

(En el segundo)


(En el cuarto)
Mil Gracias amigo esta solución me quedo perfecta.
Responder Con Cita
  #6  
Antiguo 12-01-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 3
giantonti1801 Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Depende de cómo hayas creado esos elementos.
En mi caso que utilizo ese sistema:
https://blog.delphiedintorni.it/2014...tlistview.html

Se puede acceder a los detalles de la siguiente forma (aunque uses otro, es posible que se pueda extrapolar) accediendo a los objetos:

En el evento OnItemclick hay lo siguiente:
Código Delphi [-]
var
  Str:String;
begin
    // recorrer los diferentes Objetos del Item
  for var I:integer := 0 to (AItem.Objects.Count-1) do 
    // Si son de tipo Texto los Añado
    if (AItem.Objects[i] is TListItemText) then
      Str := Str + TListItemText(AItem.Objects[i]).Text + SLineBreak;

  ShowMessage('Objects:' + Str);

En mi caso con un Listview así:



Si pulsas en los Items, obtienes esto:

(En el segundo)


(En el cuarto)
Esta opción me Trae la información que necesito perfectamente pero al momento de aplicar un where no me esta leyendo la información sustraída por
Código Delphi [-]
Str
puedo pensar que puede haber un problema con el texto talvez necesita una conversión para ser leido, Lo insólito que no me esta arrojando ningún error pero no me muestra ninguna información;

Código Delphi [-]
procedure TForminicio.ListView1ItemClick(const Sender: TObject;
  const AItem: TListViewItem);
  var
  item: TListViewItem;
  streamIMG : TStream;
  Str:String;
  begin
   // recorrer los diferentes Objetos del Item
    for var I:integer := 0 to (AItem.Objects.Count-1) do
    // Si son de tipo Texto los Añado
    if (AItem.Objects[i] is TListItemText) then
    Str := TListItemText(AItem.Objects[i]).Text + SLineBreak;
    Label21.Text := (Str);
    //ShowMessage(Str);
    begin
      UniQueryDetalleVisita.Close;
      UniQueryDetalleVisita.SQL.Clear;
      UniQueryDetalleVisita.SQL.text := 'select V.Rut__vis, V.Num_dep_Vis, V.Nom_Vis, V.Piso__Vis, V.Acept_Vis, V.Hora_in_vis, V.act_vis, V.cometario,  I.FOTO  from visitas V'+
                                       ' Inner Join IMG I on V.N_reg = I.REGISTRO where Rut__Vis = :Rut__Vis';// and Num_dep_Vis = :Num_dep_Vis order by Hora_in_vis ';
      UniQueryDetalleVisita.ParamByName ('Rut__Vis').Asstring := Label21.Text;

Última edición por giantonti1801 fecha: 12-01-2023 a las 15:39:07.
Responder Con Cita
  #7  
Antiguo 12-01-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 3
giantonti1801 Va por buen camino
solucionado modificando
Código Delphi [-]
Str := TListItemText(AItem.Objects[i]).Text;
Responder Con Cita
  #8  
Antiguo 12-01-2023
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 933
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Estimado colega, si me permite insistir con la opción que le indique, creo se evita algunas líneas de codigo...

Código Delphi [-]
      while not UniQueryVisitantes.Eof  do
      begin
          item2 := ListView2.Items.Add;
         ...
  //Asignas el valor del Rut al TagString del Item
  //Este valor lo recuperas luego.
    
        item2.TagString:=UniQueryVisitantesRut__vis.AsString;
    
  ...
          UniQueryVisitantes.Next;
      end;

procedure TForminicio.ListView1ItemClick(const Sender: TObject;
  const AItem: TListViewItem);
var
  item: TListViewItem;
  streamIMG : TStream;
  Str:String;
  begin
      UniQueryDetalleVisita.Close;
      UniQueryDetalleVisita.SQL.Clear;
      UniQueryDetalleVisita.SQL.text := 'select V.Rut__vis, V.Num_dep_Vis, V.Nom_Vis, V.Piso__Vis, V.Acept_Vis, V.Hora_in_vis, V.act_vis, V.cometario,  I.FOTO  from visitas V'+
                                       ' Inner Join IMG I on V.N_reg = I.REGISTRO where Rut__Vis = :Rut__Vis';// and Num_dep_Vis = :Num_dep_Vis order by Hora_in_vis ';
      UniQueryDetalleVisita.ParamByName ('Rut__Vis').Asstring := AItem.TagString;
Bueno, solo es una sugerencia...
Saludos cordiales
Responder Con Cita
  #9  
Antiguo 13-01-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 3
giantonti1801 Va por buen camino
Extraer informacion de ListView

Hola Amigo gracias por su ayuda. Ahora estoy buscando la forma de extraer la información desde el ListView y con la opción que me dio Neftaly me trae la información perfecta en el evento onClickItem pero cuando le hago un swip y me sale el botón Delete no me está trayendo la información por lo que no puedo aplicar filtro.

Código Delphi [-]
Str:String;
  begin
   // recorrer los diferentes Objetos del Item
    for var I:integer := 0 to (AItem.Objects.Count-1) do
    // Si son de tipo Texto los Añado
    if (AItem.Objects[i] is TListItemText) then
    Str := TListItemText(AItem.Objects[i]).Text;
    Label21.Text := (Str);
Con esta opcion en el evento onclickItem funciona perfecto pero no me lo hace en el Swip o cuando le doy al botón delete.
Responder Con Cita
  #10  
Antiguo 13-01-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Es para iOS?
Responder Con Cita
  #11  
Antiguo 13-01-2023
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.549
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Lo más sencillo es que continues con la conversación anterior, ya que estás hablando sobre en mismo problema, en lugar de crear un hilo nuevo.
La información del hilo puede ser útil a otros usuarios.

Tampoco tengo claro a qué te refieres con "swip". Tal vez alguna imagen ayude.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #12  
Antiguo 13-01-2023
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.757
Poder: 21
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Si el ListView se llama MiListView, debes poner el código para el borrado en el evento OnDeleteItem.

Qudaría más o menos así:
Código Delphi [-]
procedure TFMCarrito.MiListViewDeleteItem(Sender: TObject; AIndex: Integer);
var
  Str:String;
begin
   // recorrer los diferentes Objetos del Item
   for var I:integer := 0 to (MiListView.Items[AIndex].Objects.Count-1) do
      // Si son de tipo Texto los Añado
      if (MiListView.Items[AIndex].Objects[i] is TListItemText) then
         Str := TListItemText(MiListView.Items[AIndex].Objects[i]).Text;

   Label21.Text := (Str);
end;
Responder Con Cita
  #13  
Antiguo 13-01-2023
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.549
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
En el evento DeleteItem puedes probar algo como esto:

Código Delphi [-]
var
  Str:String;
begin
  Str := Str + ListView1.Items[AIndex].Text;
  ShowMessage('ListView1DeleteItem -> ' + Str);
end

Otra opción es acceder a los datos de la tabla a partir de ese texto.

NOTA: Veo que [duilioisola] se me ha adelantado. Iba a añadfir que la otra opción era hacer el CAST, de forma similar a como hemos comentado en el otro hilo.
https://www.clubdelphi.com/foros/showthread.php?t=96045
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #14  
Antiguo 13-01-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 3
giantonti1801 Va por buen camino
Cita:
Empezado por duilioisola Ver Mensaje
Si el ListView se llama MiListView, debes poner el código para el borrado en el evento OnDeleteItem.

Qudaría más o menos así:
Código Delphi [-]
procedure TFMCarrito.MiListViewDeleteItem(Sender: TObject; AIndex: Integer);
var
  Str:String;
begin
   // recorrer los diferentes Objetos del Item
   for var I:integer := 0 to (MiListView.Items[AIndex].Objects.Count-1) do
      // Si son de tipo Texto los Añado
      if (MiListView.Items[AIndex].Objects[i] is TListItemText) then
         Str := TListItemText(MiListView.Items[AIndex].Objects[i]).Text;

   Label21.Text := (Str);
end;
Gracias amigos, En efecto esta opción resolvió el problema. la recomendación que le seguía a esta no la he probado y como ya está funcionando no considere prudente probar la otra opción. de igual forma agradezco a todos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Extraer de una encuesta información Aitrus Varios 2 07-11-2019 20:51:41
extraer informacion de un archivo .txt richy08 PHP 8 16-10-2010 07:17:32
Extraer informacion de un pdf ponchote Varios 2 06-04-2010 21:28:13
Extraer informacion de una web Roger007 Internet 1 15-04-2008 22:02:13
Extraer informacion de un fichero mp3 miguel_e Varios 3 25-09-2007 20:22:22


La franja horaria es GMT +2. Ahora son las 02:10:41.


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
Copyright 1996-2007 Club Delphi