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?
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?
« Ultimo post da tito_livio ilOggi alle 11:29:45 am »
Mentre popoli la stringgrid, nella colonna zero invece di scrivere 1,2,3,4,... scrivi, 0001,0002,0003,...0010,... L'ordinamento come stringhe funzionerà anche come ordinamento numerico. La cella della stringgrid è di tipo stringa. Ciao
« Ultimo post da alexarmato66 ilOggi alle 11:00:57 am »
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?
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;
Questo blog non rappresenta una testata giornalistica poiché viene
aggiornato senza alcuna periodicità. Non può pertanto considerarsi un
prodotto editoriale ai sensi della legge n. 62/2001.
Questo sito utilizza cookie, anche di terze parti, per offriti servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina, cliccando su un link o proseguendo la navigazione in altra maniera, acconsenti all’uso dei cookie.