Ver Mensaje Individual
  #6  
Antiguo 01-08-2004
xeroq xeroq is offline
Registrado
 
Registrado: jul 2004
Posts: 8
Reputación: 0
xeroq Va por buen camino
Wink

Mira,es muy fácil lo de la selección y el ordenamiento.
La selección: RowSelect a True. En cuanto al ordenamiento te digo la manera en que yo lo hago y que siempre me han dicho que es la más rápida.

Primero escribes una función de ordenamiento:

Código:
function CustomProc(Item1,Item2:TListItem;Data:Integer):Integer;stdcall;
en la implementación:
Código:
function CustomProc(Item1,Item2:TListItem;Data:Integer):Integer;stdcall
begin 
 Result:=0;
 case Data of
  0:Result:=CompareText(Item1.Caption,Item2.Caption);
  1:Result:=StrToInt(Item1.SubItems[0])-StrToInt(Item2.SubItems[0]);
 end;
 if not Form1.FOrders[Data] then 
  Result:=Result*-1
end;
Te habrás fijado en FOrders,ese debe ser un arreglo de boolean (es una manera), indexado en 0(cero) y con el tamaño acorde al numero de columnas del TListView en el ejemplo es con 2 columnas,y suponiendo que la primera contiene Strings y la segunda numeros enteros.

Luego en el OnColumnClick del TListView:

Código:
procedure TfmMain.lvListaColumnClick(Sender: TObject; Column: TListColumn);
begin
  FOrders[Column.Index]:=not FOrders[Column.Index];
  (Sender as TListView).CustomSort(@CustomProc,Column.Index);
end;
En cuanto a las flechitas para arriba y para abajo,imagino que se puedan dibujar en los OnCustomDraw y familia,pero no te lo puedo asegurar ya que no lo he hecho nunca.Espero te sirva
Responder Con Cita