lazarus DBGridEh标题栏排序
按网上(delphi)的方法发现无效,经测试,以下代码可以正常排序:
按网上(delphi)的方法发现无效,经测试,以下代码可以正常排序:
unit Unit1; {$mode ObjFPC}{$H+} interface uses Classes, SysUtils, DB, Forms, Controls, Graphics, Dialogs, StdCtrls, Uni, DBGridsEh, DBCtrlsEh, LConvEncoding, DBGridEhImpExp, lclintf, DBGrids, ToolCtrlsEh; type { TForm1 } TForm1 = class(TForm) DataSource1: TDataSource; grdRateValue: TDBGridEh; UniConnection1: TUniConnection; UniQuery1: TUniQuery; procedure FormCreate(Sender: TObject); procedure grdRateValueTitleBtnClick(Sender: TObject; ACol: Integer; Column: TColumnEh); private public end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.FormCreate(Sender: TObject); var i,j:integer; begin if UniConnection1.Connected then UniConnection1.Connected:=False; UniConnection1.ProviderName:='SQLite'; with UniConnection1 do begin Database:=ExtractFilePath(Application.ExeName)+'db'; SpecificOptions.Values['ClientLibrary']:=UTF8ToCP936(ExtractFilePath(Application.ExeName))+'sqlite3_x64.dll'; SpecificOptions.Values['useunicode']:='True'; Connected:=True; end; if UniQuery1.Active then UniQuery1.Close; UniQuery1.SQL.Clear; UniQuery1.SQL.Add('select * from Ratevalue order by rate DESC'); UniQuery1.Open; grdRateValue.OptionsEh:= [dghAutoSortMarking, dghMultiSortMarking]; i:=grdRateValue.Columns.Count; for j:=0 to i-1 do grdRateValue.Columns[j].Title.TitleButton := True; grdRateValue.OnTitleBtnClick := @grdRateValueTitleBtnClick; end; procedure TForm1.grdRateValueTitleBtnClick(Sender: TObject; ACol: Integer; Column: TColumnEh); begin
if (column.Title.SortMarker=smDownEh) or (column.Title.SortMarker=smNoneEh) then //注意:smDownEh要在uses添加ToolCtrlsEh UniQuery1.IndexFieldNames:=column.FieldName +' ASC' else UniQuery1.IndexFieldNames:=column.FieldName +' DESC'; end; end.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~