首页 > 其他分享 >delphi cxgrid 画鼠标经过的轨迹或者说是鼠标经过下高亮行

delphi cxgrid 画鼠标经过的轨迹或者说是鼠标经过下高亮行

时间:2024-05-20 09:21:48浏览次数:15  
标签:begin TcxGridDBColumn end 鼠标 下高亮 delphi FHotTrackedRecord procedure Sender

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, dxSkinsCore, dxSkinsDefaultPainters, dxSkinscxPCPainter,
  cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
  cxEdit, DB, cxDBData, DBTables, cxGridLevel, cxGridCustomTableView,
  cxGridTableView, cxGridDBTableView, cxClasses, cxControls,
  cxGridCustomView, cxGrid, cxLookAndFeels, cxLookAndFeelPainters,
  dxSkinWhiteprint;

type
  TForm1 = class(TForm)
    cxGrid1: TcxGrid;
    cxGrid1DBTableView1: TcxGridDBTableView;
    cxGrid1DBTableView1CustNo: TcxGridDBColumn;
    cxGrid1DBTableView1Company: TcxGridDBColumn;
    cxGrid1DBTableView1Addr1: TcxGridDBColumn;
    cxGrid1DBTableView1Addr2: TcxGridDBColumn;
    cxGrid1DBTableView1City: TcxGridDBColumn;
    cxGrid1DBTableView1State: TcxGridDBColumn;
    cxGrid1DBTableView1Zip: TcxGridDBColumn;
    cxGrid1DBTableView1Country: TcxGridDBColumn;
    cxGrid1DBTableView1Phone: TcxGridDBColumn;
    cxGrid1DBTableView1FAX: TcxGridDBColumn;
    cxGrid1DBTableView1TaxRate: TcxGridDBColumn;
    cxGrid1DBTableView1Contact: TcxGridDBColumn;
    cxGrid1DBTableView1LastInvoiceDate: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    Table1: TTable;
    DataSource1: TDataSource;
    cxStyleRepository1: TcxStyleRepository;
    cxHotTrackStyle: TcxStyle;
    procedure FormCreate(Sender: TObject);
    procedure cxGrid1DBTableView1MouseLeave(Sender: TObject);
    procedure cxGrid1DBTableView1MouseMove(Sender: TObject;
      Shift: TShiftState; X, Y: Integer);
    procedure cxGrid1DBTableView1CustomDrawCell(
      Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
      AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
  private
    { Private declarations }
    FHotTrackedRecord: TcxCustomGridRecord;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  FHotTrackedRecord := nil;
end;

procedure TForm1.cxGrid1DBTableView1MouseLeave(Sender: TObject);
var
 ReInvalidate:Boolean;
begin
 if Assigned(FOrgOnMouseLeave) then
  FOrgOnMouseLeave(Sender);

 ReInvalidate := FHotTrackedRecord <> nil;
 FHotTrackedRecord := nil;
 if ReInvalidate then
  TcxGridSite(Sender).GridView.Invalidate(); //这里其实也可以不所有都刷新
end;

procedure TForm1.cxGrid1DBTableView1MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var
  AHitTest: TcxCustomGridHitTest;
  LastFHotTrackedRecord: TcxCustomGridRecord;
begin
 if Assigned(FOrgOnMouseMove) then
  FOrgOnMouseMove(Sender, Shift, X, Y);
 if FHotTrackedRecord <> nil then
 begin
  LastFHotTrackedRecord := FHotTrackedRecord;
  FHotTrackedRecord := nil;
  LastFHotTrackedRecord.ViewInfo.Invalidate; //只刷新一个就好了,不用所有都刷新会闪烁
 end;

 AHitTest := TcxGridSite(Sender).ViewInfo.GetHitTest(X, Y);
 if AHitTest is TcxGridRecordHitTest then
 begin
  FHotTrackedRecord := TcxGridRecordHitTest(AHitTest).GridRecord;
  FHotTrackedRecord.ViewInfo.Invalidate;      //只刷新一个就好了,不用所有都刷新会闪烁
//  TcxGridSite(Sender).GridView.Invalidate();
 end;
end;

procedure TForm1.cxGrid1DBTableView1CustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
  if (FHotTrackedRecord <> nil) and (AViewInfo.GridRecord = FHotTrackedRecord) then
  begin
    ACanvas.Brush.Color := cxHotTrackStyle.Color;
    ACanvas.Font.Color := cxHotTrackStyle.TextColor;
  end;
end;

end.

 

标签:begin,TcxGridDBColumn,end,鼠标,下高亮,delphi,FHotTrackedRecord,procedure,Sender
From: https://www.cnblogs.com/BTag/p/18201183

相关文章

  • win11系统 鼠标开机后是好的,但是过一会后响应慢变卡顿怎么回事
    刚开机好的,过一会变卡顿1打开控制面板——电源选项选择【平衡】点击【更改计划设置】2 更改USB设置为【已禁用】即可  3顺便把硬盘也改了,免得掉盘 ......
  • delphi cxgrid自定义画焦点框,把自带的虚线框去掉
    参考资料将FocusRect从虚线更改为实线或更改FocusRect的颜色|DevExpress支持如何在TableView网格中的整个选定/聚焦行周围绘制边框?|DevExpress支持 procedureTcxGridTableView.DoCustomDrawCell(ACanvas:TcxCanvas;AViewInfo:TcxGridTableDataCellViewInfo;v......
  • delphi cxgrid 自定义画焦点框
    procedureTMyTable.MyBandedTableViewCustomDrawCell(Sender:TcxCustomGridTableView;ACanvas:TcxCanvas;AViewInfo:TcxGridTableDataCellViewInfo;varADone:Boolean);varbounds:TRect;beginifAViewInfo.Focusedthenbeginbounds:=A......
  • 博客园美化:CSS更改鼠标样式
    话不多说,先上效果图:实现这个效果真的好简单,哎,还搞了好久............
  • delphi安卓动态权限申请
    delphi安卓动态权限申请安卓8及以上版本,除了原来的静态权限申请以外,还需要动态权限申请。delphi10.3开始支持安卓动态权限申请。delphi11开始官方改变了安卓动态权限申请的参数类型,导致原来编写的代码,编码报错。下面的代码,可以很好地解决权限问题。兼顾了delphi10.3和delphi11......
  • 【Delphi 开箱即用 1】简单实现拖拽文件到窗口
    当今,大多数个人小程序都普遍具备拖拽功能,因为拖拽操作极其便捷。毕竟,相比于传统的浏览文件夹方式打开目标文件,拖拽操作简直是一种解放。在这里,我们无需依赖任何第三方控件,单纯通过代码实现拖拽功能。目录1.最终效果图2.部分核心代码3.完整Demo源码下载1.最终效果图2.部分......
  • 网页布局------鼠标点击标签切换内容
    网页结构<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title&......
  • delphi 文件的操作:重命名、复制、移动、删除 文件(转)
    delphi文件的操作重命名、复制、移动、删除文件RenameFile('Oldname','Newname');CopyFile(PChar('Oldname'),PChar('Newname'),False);MoveFile(PChar('Oldname'),PChar('Newname'));DeleteFile(文件名);Delphi判断文件......
  • e语言 鼠标移动发送消息 (大漠版)
    大漠安装注册教程:https://www.bilibili.com/video/BV1mj411Z7PB/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=5fed6e8a7e3ad9f10860bf7a4540ba71......
  • Delphi DX10.2安装TeeChartPro2022找不到指定文件
    1、显示报错TeeChartProCompilationstarted:2024-05-1517:12:48Win32v25Enterprise(Delphi10.2andC++Builder10.2Update3)(C++)ERRORTee925Thisversionoftheproductdoesnotsupportcommandlinecompiling.TeeUI925Thisversionoftheproductdoe......