首页 > 其他分享 >StringGrid设置单元格信息

StringGrid设置单元格信息

时间:2023-09-19 10:35:23浏览次数:22  
标签:Info Canvas Sender 单元格 StringGrid CellList 设置 FontInfo Font


BCB封装了StringGrid自绘消息OnDrawCell 我们只要重写该事件即可

事实上我们只要判断是否要自绘 但是如果StringGrid作为输入 需要设置任意一个单元格信息 那就要做些额外的工作

我们这里采用list记录每个设置了自绘的单元格

代码如下:

//首先我们需要定义结构来存储自绘信息

struct CellInfo
{
    POINT p;
    struct{
      String fontname;
      TColor c;
      int size;
      TFontStyles s;
      TColor b;
    }FontInfo;
    bool operator==(const CellInfo& Info)
    {
        if(this->p.x==Info.p.x&&
           this->p.y==Info.p.y)
        return true;
        return false;
    }
};
 
#include <list.h>//STL list声明
 
list<CellInfo> CellList;

//添加一个PopupMenu、FontDialog

//在PopupMenu菜单事件里响应FontDialog

//将自绘信息插入list

void __fastcall TForm1::N1Click(TObject *Sender)
{
    if(FontDialog1->Execute())
    {
        GellInfo Info;
        Info.p.x=StringGrid1->Col;
        Info.p.y=StringGrid1->Row;
        Info.FontInfo.fontname=FontDialog1->Font->Name;
        Info.FontInfo.size=FontDialog1->Font->Size;
        Info.FontInfo.s=FontDialog1->Font->Style;
        Info.FontInfo.c=FontDialog1->Font->Color;
        Info.FontInfo.b=clRed;
        list<CellInfo>::iterator it;
        it=find(CellList.begin(),CellList.end(),Info);
        if(it==CellList.end())
        {
           CellList.push_back(Info);
        }
        else
        {
           (*it).p=Info.p;
           (*it).FontInfo.fontname=Info.FontInfo.fontname;
           (*it).FontInfo.c=Info.FontInfo.c;
           (*it).FontInfo.size=Info.FontInfo.size;
           (*it).FontInfo.s=Info.FontInfo.s;
        }
    }
}

//在OnDrawCell事件编写自绘处理

 

CellInfo Info;
   Info.p.x=ACol;
   Info.p.y=ARow;
   list<CellInfo>::iterator it=find(CellList.begin(),CellList.end(),Info);
  if(it!=CellList.end())
   {
       dynamic_cast<TStringGrid*>(Sender)->Canvas->Font->Color=(*it).FontInfo.c;
       dynamic_cast<TStringGrid*>(Sender)->Canvas->Font->Name=(*it).FontInfo.fontname;
       dynamic_cast<TStringGrid*>(Sender)->Canvas->Font->Size=(*it).FontInfo.size;
       dynamic_cast<TStringGrid*>(Sender)->Canvas->Font->Style=(*it).FontInfo.s;
       dynamic_cast<TStringGrid*>(Sender)->Canvas->Brush->Color=(*it).FontInfo.b;
       dynamic_cast<TStringGrid*>(Sender)->Canvas->FillRect(Rect);
       dynamic_cast<TStringGrid*>(Sender)->Canvas->TextOutA(Rect.Left+2,Rect.Top+2,StringGrid1->Cells[ACol][ARow]);
   }

 

 

标签:Info,Canvas,Sender,单元格,StringGrid,CellList,设置,FontInfo,Font
From: https://blog.51cto.com/u_15487030/7522124

相关文章

  • 设置connect超时
    首先设置socket为非阻塞模式再通过select查询超时#include"stdafx.h"#include<WINSOCK2.H>#include<stdio.h>#pragmacomment(lib,"ws2_32.lib")intmain(intargc,char*argv[]){ WSADATAwsaData; if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0......
  • SQL设置SQLServer最大连接数
    设置最大连接数下面的T-SQL语句可以配置SQLServer允许的并发用户连接的最大数目。execsp_configure'showadvancedoptions',1execsp_configure'userconnections',100第一句用以表示显示sp_configure系统存储过程高级选项,使用userconnections时,要求......
  • LIGGGHTS中颗粒与壁面的参数设置
     ......
  • 【小睿的ML之路】Matplotlib子图操作(创建子图,多数据设置颜色、标签等)--美国失业率
    创建子图importmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspdunrate=pd.read_csv('UNRATE.csv')unrate['DATE']=pd.to_datetime(unrate['DATE'])#时间日期转换unrate['Month']=unrate['DATE'].dt.......
  • springboot中配置druid的依赖,与application.yml中设置druid的相关配置
    2023-09-18<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.16</version></dependency>application.ymlsprin......
  • linux 中设置粘滞位权限
     对目录进行粘滞位设置,实现用户只能删除自己的文件,而不能删除别人的文件。文件能否被删除并不取决于自身的权限,而是看其所在目录是否有写入权限。 001、[root@pc1home]#lsliujiaxin01liujiaxin02[root@pc1home]#whoami##当前用户root[root@pc......
  • idea设置项目启动的JVM运行内存大小
    idea设置项目启动的JVM运行内存大小场景在开发当中,idea默认服务启动要占用1G内存。其实每个项目本地开发和调试的时候,根本不需要1G内存,200M左右足以如果在微服务体系下,那效果更明显,相同的内存可以启动更多的服务刚好本人的电脑只有8G,公司的微服务项目启动后,电脑风扇疯狂的转动......
  • chmod递归设置文件夹和文件权限的正确用法
    如果要分别设置文件夹和文件的权限,建议先设置全部目录和文件为600或644首先cd到你要设置权限的文件夹第1种情况:只有自己能读写,其他人无权访问(隐私文件)的话,就是用600chmod-R600.chmod-Ru+X. 第2种情况:只有自己能读写,其他人只读(共享文件)的话,就是用644chmod-R644......
  • Markdown 设置字体、字号与颜色
    Markdown设置字体、字号与颜色Markdown本身不支持修改字体、字号与颜色等,还好Markdown支持HTML语言,所以我们采用HTML语法格式即可。设置字体、字号和颜色编辑字体、字号和颜色的代码如下:<fontface="黑体">我是黑体字</font><fontface="微软雅黑">我是微软雅黑<......
  • java安装 系统变量设置
    变量名:JAVA_HOME变量值:C:\ProgramFiles\Java\jdk1.8.0_111变量名:Path变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;变量名:CLASSPATH变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;       注意:这前面有一个点‘.’......