11
Generale / Re:ColumnClickSorts con le Stringgrid
« Ultimo post da bonmario il Maggio 20, 2024, 12:57:33 pm »In un progetto ho popolato una stringgrid (Stringgrid6) con dei valori numerici .
La colonna zero è numerata da 1 ad n con interi (1,2,3,4,….).Nelle proprietà della stringgrid6 ho posto ColumnClickSorts = true. Quando faccio un sort sulla colonna zero il programma vede la numerazione delle righe definita da numeri interi(1,2,3,4…) come delle stringhe e non riesce ad ordinare le righe in modo crescente o decrescente.Devo intervenire in qualche Evento della stringgrid6?
Ho provato così ma non funziona:Codice: [Seleziona]procedure TForm1.StringGrid6CompareCells(Sender: TObject; ACol, ARow, BCol, BRow: Integer; var Result: Integer);
var
Val1, Val2: Integer;
begin
// Controlla se la colonna è quella che contiene i numeri interi
if ACol = 0 then
begin
// Converte le stringhe in numeri interi
Val1 := StrToInt(StringGrid6.Cells[ACol, ARow]);
Val2 := StrToInt(StringGrid6.Cells[BCol, BRow]);
// Confronta i valori interi
if Val1 < Val2 then
Result := -1
else if Val1 > Val2 then
Result := 1
else
Result := 0;
end
else
begin
// Per le altre colonne utilizza il confronto standard
Result := CompareText(StringGrid6.Cells[ACol, ARow], StringGrid6.Cells[BCol, BRow]);
end;
end;
La colonna zero coincide con la colonna fissa.
Uso il metodo che stai usando tu da anni e funziona ... faccio qualcosa di simile anche con le date e gli orari.
Io però gestisco anche l'eventuale "ordinamento inverso" se clicchi 2 volte di fila sulla testata della stessa colonna.
Hai provato a fare un debug e vedere se passa di lì, e se effettivamente fa quello che ti aspetti?
Ciao, Mario
Ciao, Mario