起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 272|回复: 15

【结贴】如何必变下面数据的显示格式

[复制链接]
发表于 2009-10-28 16:10:38 | 显示全部楼层 |阅读模式
如下图表格文档预览生成页面的部分截图,我现在想将“拟邀请承包商名称”后边单元格中那三个以“、”分开的三个承包商,在“确认承包商”后边单元格中显示成checkbox格式,让用户输入,还有一个麻烦的问题就是,“拟邀请承包商名称”中的承包商个数是不确定的,有可能是三个,五个,请问这样的问题怎么解决呢?

qq截图未命名2.jpg

14.73 KB, 下载次数: 149

回复

使用道具 举报

发表于 2009-10-28 16:26:33 | 显示全部楼层
在表格文档中不好实现你的需求。
是否可以考虑弹出窗体的方式来录入呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-28 16:36:28 | 显示全部楼层
斑竹,如果做成弹出窗体方式怎么实现呢?因为“拟邀请承包商名称”是数据库表里的一个字符串字段,
回复 支持 反对

使用道具 举报

发表于 2009-10-28 16:45:54 | 显示全部楼层
确认承包商字段(业务信息--数据集--字段编辑器,重载此数据字段)上有一个OnButton事件,自己做一个窗体,在此事件中调用,然后 你解析出 拟邀请承包商字段有几个,可以通过动态创建出checkbox供用户选择,然后保存时就把具体的承包商名称填入 确认承包商。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-28 17:14:12 | 显示全部楼层
有没有相关创建弹出窗体并在窗体上动态创建checkbox的代码参考吗
回复 支持 反对

使用道具 举报

发表于 2009-10-28 17:32:28 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-29 13:02:12 | 显示全部楼层
我写了代码创建了两个CheckBox,然后将其放到ListBox控件里,为什么在弹出窗体上只显示一个呢?代码如下:

qq截图未命名2.jpg

108.17 KB, 下载次数: 133

回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-29 13:03:28 | 显示全部楼层
显示窗体如下:是不是我的代码里处理的有问题,请版主帮我看一下,谢谢

qq截图未命名1.jpg

33.86 KB, 下载次数: 131

回复 支持 反对

使用道具 举报

发表于 2009-10-29 13:12:22 | 显示全部楼层
你上面的代码创建出来的对象位置,应该是互相被盖住了。
既然想要这样的效果,那你直接用 CheckListBox1: TCheckListBox; 这个控件吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-29 13:43:23 | 显示全部楼层
我将7楼的ListBox 换成了CheckListBox之后,for循环只执行了两次,但为什么在窗体上显示三个checkbox呢?并且我更改的checkBox样式,只有一个起作用。代码如下:
static function TXZZZCBS.GetConformContractor(AContext: TContext): String;
var
  lForm: TXZZZCBS;
  lContractorNames : String;
  lContractorList : array of String;
  i : integer;
  tempContractorName : String;
  checkBox : TCheckBox;
  lTop : integer;
begin
  lForm := TXZZZCBS.Create(AContext);
  try
    if not lForm.DataSetBroker1.Dataset.Active then
       lForm.DataSetBroker1.Dataset.Open;
    lForm.DataSetBroker1.Dataset.Edit;
    lContractorNames := lForm.DataSetBroker1.Dataset.FieldByName('invitedCon2').AsString;
    lContractorList := lContractorNames.Split(['、']);
    lForm.CheckListBox1.Clear;
    for i := 0 to lContractorList.length - 1 do
    begin
      tempContractorName := lContractorList;
      if tempContractorName <> '' then
      begin
        checkBox := TCheckBox.Create(lForm.CheckListBox1);
        checkBox.Parent := lForm.CheckListBox1;
        checkBox.Caption := tempContractorName;
        checkBox.Name := 'checkBox'+ sysUtils.IntToStr(i+1);
        checkBox.Width := 380;
        checkBox.Font.Size := 16;
        checkBox.Left := 15;
        checkBox.Top := lTop +25;
      end;
      lForm.CheckListBox1.AddItem(tempContractorName,checkBox);
    end;
    if lForm.ShowModal = Controls.mrOK then
      Result := tempContractorName;
  finally
    lForm.Free;
  end;
end;
显示窗体如下

qq截图未命名3.jpg

27.55 KB, 下载次数: 125

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-15 04:53 , Processed in 0.061701 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表