Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Busqueda recursiva en un ListView (https://www.clubdelphi.com/foros/showthread.php?t=86115)

elrayo76 19-06-2014 16:16:18

Busqueda recursiva en un ListView
 
Necesito de su ayuda ya que no me llevo bien con las funciones recursivas. Lo que quiero es poder hacer una búsqueda recursiva dentro de un ListView.

Para el caso lo que tiene que hacer es buscar por la columna código de producto, si lo encuentra en alguna de sus filas fijarse si la cantidad es cero y si es asi buscar el siguiente con cantidad mayor a cero. De ser el único que existe debe quedarse en el que encuentra.

Ejemplo:

Producto Cantidad
1 1
2 0
3 3
4 6
1 5
2 7 <-- debe quedarse parado en este si lo que se buscó es el producto con código 2.

Saludos,
El Rayo

elrayo76 19-06-2014 17:02:28

Gente, pude hacer lo que necesitaba. Para el que le sirva acá dejo la función que he implementado.

El parámetro de la posición que saco a fuera de la función es proque luego selecciono la fila que me interesa con lo encontrado. El resultado de la función es para indicar si se encontró o no el dato buscado.

Código Delphi [-]
function BuscarEnLista(const aLista: ListView; const aColumna: Integer; const aValor: String; var aPosicion: Integer): Boolean; overload;
var
  i: Integer;
  intItem: Integer;

begin
  i := 0;
  intItem := -1;

  while (i < aLista.items.Count) do
  begin
    if (aLista.Items[i].SubItems[aColumna].Text = aValor) and (StrToInt(aLista.Items[i].SubItems[_lv_Cantidad].Text) <> 0) then
    begin
      intItem := i;
      i := aLista.Items.Count;
    end;

    Inc(i);
  end;

  aPosicion := intItem;
  Result := (intItem <> -1);
end;


Saludos,
El Rayo


La franja horaria es GMT +2. Ahora son las 21:29:49.

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