1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
fpspreadsheetgrid, fpspreadsheetctrls,
fpsTypes,
fpsutils,
fpspreadsheet;
type
{ TForm1 }
TForm1 = class(TForm)
wg: TsWorksheetGrid;
wb: TsWorkbookSource;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
procedure DoCompareCells (Sender: TObject; ACell1, ACell2: PCell; ASortKey: TsSortKey; var AResult: Integer);
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
uses LazUTF8;
var
sortParams: TsSortParams;
{ TForm1 }
procedure TForm1.DoCompareCells(Sender: TObject; ACell1, ACell2: PCell; ASortKey: TsSortKey; var AResult: Integer);
var
A, B: string;
begin
A := TsWorksheet(Sender).ReadAsText(ACell1^.row, ACell1^.col);
B := TsWorksheet(Sender).ReadAsText(ACell2^.row, ACell2^.col);
AResult := UTF8CompareText(A, B);
if (ssoDescending in ASortKey.options) then AResult := -AResult;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
str1, str2, str3, str4, str5, str6 : string;
begin
str1 := 'ANeuf';
str2 := 'ACinq';
str3 := 'A Huit';
str4 := 'xA Huit';
str5 := 'xACinq';
str6 := 'xANeuf';
// chargement manuel du Worksheet
wb.Worksheet.Clear;
wb.Worksheet.WriteText(0, 0,str1); // str1 := 'A Huit';
wb.Worksheet.WriteText(1, 0, str2); // str2 := 'ACinq';
wb.Worksheet.WriteText(2, 0, str3); // str3 := 'ANeuf';
wb.Worksheet.WriteText(3, 0, str4); // str4 := 'xA Huit';
wb.Worksheet.WriteText(4, 0, str5); // str5 := 'xACinq';
wb.Worksheet.WriteText(5, 0, str6); // str6 := 'xANeuf';
wb.Worksheet.OnFullCompareCells := @DoCompareCells;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
sortParams := InitSortParams(true, 1); // Col sort, Number of sort (cols or rows)
sortParams.Keys[0].ColRowIndex := 0; // ColRowIndex Index of the sorted column or row
sortParams.Keys[0].Options := []; // TsSortOption = (ssoDescending, ssoCaseInsensitive, ssoAlphaBeforeNum)
wb.Worksheet.Sort(sortParams, 0, 0, wb.worksheet.GetLastRowIndex, wb.worksheet.GetLastColIndex);
end;
end. |
Partager