首页 > 其他分享 >StringGrid单元格绑定ComboBox、DateTimePicker或窗口传值

StringGrid单元格绑定ComboBox、DateTimePicker或窗口传值

时间:2024-08-20 18:28:06浏览次数:11  
标签:do begin end ACol ARow ComboBox 单元格 StringGrid Sender

一、初始化控件状态

复制代码
procedure TForm7.FormCreate(Sender: TObject);
begin
  with StringGrid1 do
  begin
    ColWidths[0] := 15;
    Cells[1, 0] := 'Combobox';
    ColWidths[1] := 100;
    Cells[2, 0] := 'DateTimePicker';
    ColWidths[2] := 100;
    Cells[3, 0] := 'Form';
    ColWidths[3] := 100;
  end;
  ComboBox1.visible := False;
  DateTimePicker1.Visible := False;
end;
复制代码

二、选择单元格显示控件

复制代码
procedure TForm7.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
var
  R: TRect;
  org: TPoint;
begin
  if Form8 = nil then
    Application.CreateForm(TForm8, Form8);
  with Sender as TStringGrid do
  begin
    //第一列
    if ACol = 1 then
    begin
      Perform(WM_CANCELMODE, 0, 0);
      R := CellRect(ACol, ARow);
      org := Self.ScreenToClient(ClientToScreen(R.topleft));
      with ComboBox1 do
      begin
        SetBounds(org.X, org.Y, R.right - R.left, Height);
        itemindex := Items.IndexOf(Cells[ACol, ARow]);
        Show;
        BringToFront;
        SetFocus;
        DroppedDown := True;
      end;
    end;
    if ACol = 2 then
    begin
      Perform(WM_CANCELMODE, 0, 0);
      R := CellRect(ACol, ARow);
      org := Self.ScreenToClient(ClientToScreen(R.topleft));
      with DateTimePicker1 do
      begin
        SetBounds(org.X, org.Y, R.right - R.left, Height);
        if Cells[ACol, ARow] <> '' then
          Date := StrToDate(Cells[ACol, ARow]);
        Show;
        BringToFront;
        SetFocus;
      end;
    end;
    if ACol = 3 then
    begin
      Perform(WM_CANCELMODE, 0, 0);
      Form8.Caption := VarToStr(ARow) + '-' + VarToStr(ACol);
      Form8.ShowModal;
      with StringGrid1 do
        StringGrid1.cells[ACol, ARow] := Form8.Caption;
    end;
  end;
end;
复制代码

三、DateTimePicker1失去焦点

复制代码
procedure TForm7.DateTimePicker1Exit(Sender: TObject);
begin
  with Sender as TDateTimePicker do
  begin
    Hide;
    with StringGrid1 do
      cells[Col, Row] := DateToStr(DateTimePicker1.Date);
  end;
end;
复制代码

四、ComboBox1失去焦点

复制代码
procedure TForm7.ComboBox1Exit(Sender: TObject);
begin
  with Sender as TComboBox do
  begin
    Hide;
    if itemindex >= 0 then
    begin
      with StringGrid1 do
        cells[Col, Row] := items[itemindex];
    end;
  end;
end;
复制代码

效果展示

Demo下载

本文来自博客园,作者:liessay,转载请注明原文链接:https://www.cnblogs.com/liessay/p/16228372.html

标签:do,begin,end,ACol,ARow,ComboBox,单元格,StringGrid,Sender
From: https://www.cnblogs.com/ynmsnc/p/18370032

相关文章

  • Excel/WPS 取消合并单元格,并填充
     WPS实现 Excel实现https://baijiahao.baidu.com/s?id=1799704002472022803&wfr=spider&for=pc然后我们就需要在公式编辑里面,输入公式=C2按CTRL+回车,就可以填充所有的结果不是 CTRL+回车是,向下填充 ......
  • GridViewComboBoxColumn设置DataTypeConverter
    GridView中的GridViewComboBoxColumn列,如果需要使用TypeConverter将非字符串类型的数据源转换为字符串进行展示,可按如下几步进行:例如,数据源为如下枚举类型:publicenumMyColor{Red,Yellow,Green}展示的时候,需要转换为汉字,先定义如下类型,作为GridViewComboBo......
  • Java poi3.17 如何区分获取日期类型的单元格的值
     1、网上看了好多方案,似乎都没有效果。2、解决方法:如果是日期类型的单元格,index是等于3的。但是我偶尔到的情况,不是等于日期类型,也会等于3,这时获取Datedate=cell.getDateCellValue();值会报错,解决方法,就是用try/catch包起来,继续使用dataForMatter.formatCellValue(cel......
  • freemarker实现动态行单元格合并
    原文链接:https://www.cnblogs.com/10158wsj/p/11211471.htmlhttps://blog.csdn.net/weixin_43667830/article/details/106936546项目需求:项目中有个需求,需要将一些数据库中的数据根据需求导出,生成一个word,研究了一些技术,其中包括POI、freemaker,对比了一下实现过程及技术难度没......
  • Excel 根据单元格值设置行颜色
     开始》条件格式》管理规则》新建格式规则》使用公式确定要设置格式的单元格只为满足以下条件的单元格设置格式:=SEARCH("进行中",$E5)>0;(注释:此处筛选的是包含进行中的数据)格式:选择满足条件的单元格设置什么格式 应用于:选择此行需要改颜色格式的单元格  对某个单元格......
  • excel 中如何将指定的空白单元格填充为指定的内容
     001、测试表格  002、选中,按F5 a、选定位条件 b、 c、直接输入一个测试文本 d、ctrl+enter 。 ......
  • 在 VSCode 上,使用 #%% 单元格时,shift-enter 不再执行交互窗口中的单元格并移至下一个
    在VSCode上,当使用#%%单元格时,shift-enter不再执行交互窗口中的单元格并移至下一个单元格。它曾经工作了很多年,但现在在某些代码行上按Shift键输入会在标题为“PythonREPL”的新窗口中引发错误。我仍然可以使用Control-Enter来执行交互窗口中的单元格,但这不会将光标移动......
  • 前端如何设置表格边框样式和单元格间距?
    前端如何设置表格边框样式和单元格间距?引言表格的基本概念基本结构示例一:基本表格样式CSS说明示例二:交替行颜色CSS说明示例三:固定表头CSS说明示例四:设置单元格间距HTMLCSS说明示例五:响应式表格CSSHTML说明实际工作中的使用技巧技巧一:优化单元格内的内容CSS技巧二:使......
  • 如何使用 Pandas 解析函数处理 Excel 中的合并单元格?
    我有一个包含合并的列和行的Excel文件,我想读取该Excel文件并解析它以将其转换为DataFrame。这只是所发生情况的一个小示例,因为我拥有的真实数据非常多很大,有很多桌子。这就是Excel文件的样子:当我尝试时xl=pd.read_excel('file')我得到了这个:......
  • QComboBox列表设计
    我想自定义QComboBox列表背景。当我悬停时,我需要一个圆角框。我已附上当前图片和我需要的内容。这是我的样式表代码QComboBox{border:1pxsolidblack;background-color:white;font-size:15pt;padding:1px18px1px3px;}QComboBox:......