首页 > 其他分享 >lazarus DBGridEh标题栏排序

lazarus DBGridEh标题栏排序

时间:2024-09-03 20:36:44浏览次数:12  
标签:end DBGridEh 标题栏 TForm1 grdRateValue lazarus SQL UniQuery1 UniConnection1

lazarus DBGridEh标题栏排序
按网上(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
  UniQuery1.Close;
  UniQuery1.SQL.Clear;
  UniQuery1.DisableControls;
  grdRateValue.DataSource:=nil;
  if column.Title.SortMarker=smDownEh then
     UniQuery1.SQL.Text:='select * from Ratevalue   order by '+ column.FieldName +' ASC'
  else
     UniQuery1.SQL.Text:='select * from Ratevalue   order by '+ column.FieldName +' DESC';

  UniQuery1.Open;
  UniQuery1.EnableControls;
  form1.Caption:= UniQuery1.RecordCount.ToString;
  grdRateValue.DataSource:=Datasource1;
end;

end.

 

标签:end,DBGridEh,标题栏,TForm1,grdRateValue,lazarus,SQL,UniQuery1,UniConnection1
From: https://www.cnblogs.com/qiufeng2014/p/18395412

相关文章

  • lazarus使用dbgrideh时遇到的问题
    问题:lazarus使用unidac+dbgrideh时,发现第一次查询可以正确显示查询的结果,当再次查询时(记录数>1条时),DBGridEH只显示1条记录,如果向下移动时还会出错。 点费率时只显示1条记录:这时向下移动会出错: 解决方法:uniquery查询前设置:dbgrideh.DataSource:=nil查询完成后重新设置Data......
  • 解决lazarus版本dbgrideh在linux粘贴重复的Bug
    dbgrideh在linux存在粘贴重复的Bug,不啰嗦,直接给解决方法:1.打开EhLib.VCL11.1xxx/Lazarus/Lib/DBAxisGridsEh.pas2.定位到functionTDBAxisGridInplaceEdit.DoPaste(varMessage:TMessage):Boolean; 添加红字部分代码,重新编译应用就可以。AAxisBar:=Grid.AxisBa......
  • lazarus编写的应用开启(windows) 暗黑模式
    在QQ群大神大悟还俗发现fpcudeluxe在windows暗黑模式使用时界面也是和windows一样,这是他提供的方法:1、拷贝fpcudeluxe的metadarkstyle文件夹的文件到project目录(下载地址https://www.123pan.com/s/6OFxjv-JFdu3?提取码:iBiZ)2、在project*.lpr的uses增加下图绿框的代码programPr......
  • PyQt5 / PySide 2 + Pywin32 自定义标题栏窗口 + 还原 Windows 原生窗口边框特效(2)
    前言:已修复上一篇文章中提到的Bug,增加状态切换动画:PyQt5/PySide2+Pywin32自定义标题栏窗口+还原Windows原生窗口边框特效-CSDN博客https://blog.csdn.net/2402_84665876/article/details/141487635?spm=1001.2014.3001.5501仍然存在的问题:打开窗口时窗口标题栏......
  • lazarus标题栏增加显示当前project的目标CPU及OS
    lazarus编写程序特别是需要交叉编译时,不清楚当前project交叉编译的目标CPU及OS,为方便使用,可以按以下方法(红字部分)修改:打开lazarus\ide\main.pp,找到procedureTMainIDE.UpdateCaption;procedureTMainIDE.UpdateCaption;functionAddToCaption(constCurrentCaption,CaptAdd......
  • PyQt5 / PySide 2 + Pywin32 自定义标题栏窗口 + 还原 Windows 原生窗口边框特效
    Bug:当窗口不处于顶层时,如果点击窗体试图将其置于顶层,窗体自带的白边框会突然显示,最长两秒。完整性:尚未添加窗口状态的过渡动画和淡入、淡出动画。其他问题:由于Qt官方在版本6去掉了QtWin,目前暂未找到PyQt6/PySide6的解决方案。准备工作:在同目录下放四张照片:m......
  • WPF 模拟UWP原生窗口样式——亚克力|云母材质、自定义标题栏样式、原生DWM动画 (附我封
    先看一下最终效果,左图为使用亚克力材质并添加组合颜色的效果;右图为MicaAlt材质的效果。两者都自定义了标题栏并且最大限度地保留了DWM提供的原生窗口效果(最大化最小化、关闭出现的动画、窗口阴影、拖拽布局器等)。接下来把各部分的实现一个个拆开来讲讲。一、使用窗口材质特......
  • lazarus 3.4+fpc trunk编译tachart控件出错
    lazarus3.4+fpctrunk编译tachart控件出错原因:最新的fpc禁止访问private引起的修改方法:1、打开lazarus\components\tachart\tadatatools.pas将functionTDataPointDistanceTool.FindRef(APoint:TPoint;AMode:TDataPointMode;ADest:TDataPointTool.TPointRef;AOtherEndS......
  • 解决lazarus 3.xx后在linux编译为Qt出错方法
    今天用lazarus3.4在银河麒麟将应用编译为Qt5出现以下错误信息:Warning:linker:/usr/bin/ld.bfd:/home/lb/fpcupdeluxe34/lazarus/lcl/units/aarch64-linux/qt5/qtint.o:infunction`QTINT$_$TQTWIDGETSET_$__$$_CREATE$$TQTWIDGETSET':Error:qtint.pp:(.text.n_qtint$_$t......
  • lazarus 编译时切换QT5/GTK2的方法
    lazarus编译时可以随时切换QT5/GTK2,方法如下:在project菜单-->options-->compileroptions-->additionsandoverrides点Set"LCLWidgetType"选择QT5或其他然后重新编译应用就可以。带menu、combobox等控件(在银河麒麟)的应用,用GTK2时有深灰的背景,QT5编译的整体会好点。注意:fastrepor......