delphi DBGrid 字符串比较

GONGJUNRUI123 2017-02-24 02:14:51
大神们,我想通过双击DBGrid的某一行,通过该行的内容,使CheckBox和radiobutton进行选择或不选。
但是在用dbgrid1.Fields[x].AsString进行字符串比较的时候,发现不能用代码如下:

if dbgrid1.Fields[2].AsString='管理员' then
begin
radiobutton1.Checked;
checkbox1.Checked:=True;
checkbox2.Checked:=True;
checkbox3.Checked:=True;
checkbox4.Checked:=True
end


然后网上查了用sametext等等字符串比较的函数都不行,求大神解答。。。
...全文
183 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyhoo163 2017-02-28
  • 打赏
  • 举报
回复

procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var:string; 
begin
  edit1.Text:=dbgrid1.Fields[0].AsString;
  edit2.Text:=dbgrid1.Fields[1].AsString;
  S:=Trim(DBGrid1.Fields[2].AsString); 
  if S='管理员' then
  begin
    RadioGroup1.ItemIndex:=0;
  else begin
    if S='工程师' then RadioGroup1.ItemIndex:=1
                  else RadioGroup1.ItemIndex:=2;
  end;
end;
这样,改写代码,试试。
GONGJUNRUI123 2017-02-27
  • 打赏
  • 举报
回复
引用 3 楼 lyhoo163 的回复:
应该在DBGrid的MouseUp和KeyUp二个事件中,加入代码即可,注意条件语句要使用 if then else语句,这样条件是否均有动作。 这样,鼠标点击,或上下键移动DBGrid行时,控件checkbox和RadioGroup1都随之而变化。

procedure TMID_2_3_Frm.DBGrid1MouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if dbgrid1.Fields[3].AsString='2017-01'
  then begin
    checkbox4.Checked:=True;
    RadioGroup1.ItemIndex:=0;
  end
  else begin
    checkbox4.Checked:=False;
    RadioGroup1.ItemIndex:=1;
  end;
end;

procedure TMID_2_3_Frm.DBGrid1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if dbgrid1.Fields[3].AsString='2017-01'
  then begin
    checkbox4.Checked:=True;
    RadioGroup1.ItemIndex:=0;
  end
  else begin
    checkbox4.Checked:=False;
    RadioGroup1.ItemIndex:=1;
  end;
end;
上述代码,经测试正常。
你好,我想实现的是有三个选项的,代码如下:
procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  edit1.Text:=dbgrid1.Fields[0].AsString;
  edit2.Text:=dbgrid1.Fields[1].AsString;

  if DBGrid1.Fields[2].AsString='管理员' then
    RadioGroup1.ItemIndex:=0
  else if DBGrid1.Fields[2].AsString='工程师' then
    RadioGroup1.ItemIndex:=1
  else if DBGrid1.Fields[2].AsString='操作员' then
    RadioGroup1.ItemIndex:=2;
end;
但是还是实现不了,麻烦你能帮我解决一下么
woniugongzuoshi 2017-02-25
  • 打赏
  • 举报
回复
还是在dbgrid事件里,别操作dbgrid,操作dataset组件,例如: 把if dbgrid1.Fields[2].AsString='管理员' then 改成 if adoquery1.Fieldbyname('字段名').asstring='管理员' then
lyhoo163 2017-02-24
  • 打赏
  • 举报
回复
应该在DBGrid的MouseUp和KeyUp二个事件中,加入代码即可,注意条件语句要使用 if then else语句,这样条件是否均有动作。 这样,鼠标点击,或上下键移动DBGrid行时,控件checkbox和RadioGroup1都随之而变化。

procedure TMID_2_3_Frm.DBGrid1MouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if dbgrid1.Fields[3].AsString='2017-01'
  then begin
    checkbox4.Checked:=True;
    RadioGroup1.ItemIndex:=0;
  end
  else begin
    checkbox4.Checked:=False;
    RadioGroup1.ItemIndex:=1;
  end;
end;

procedure TMID_2_3_Frm.DBGrid1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if dbgrid1.Fields[3].AsString='2017-01'
  then begin
    checkbox4.Checked:=True;
    RadioGroup1.ItemIndex:=0;
  end
  else begin
    checkbox4.Checked:=False;
    RadioGroup1.ItemIndex:=1;
  end;
end;
上述代码,经测试正常。
lyhoo163 2017-02-24
  • 打赏
  • 举报
回复
应该在DBGrid的MouseUp和KeyUp二个事件中,加入代码即可,注意条件语句要使用 if then else语句,这样条件是否均有动作。 这样,鼠标点击,或上下键移动DBGrid行时,控件checkbox和RadioGroup1都随之而变化。 [code=delphi] procedure TMID_2_3_Frm.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if dbgrid1.Fields[3].AsString='2017-01' then begin checkbox4.Checked:=True; RadioGroup1.ItemIndex:=0; end else begin checkbox4.Checked:=False; RadioGroup1.ItemIndex:=1; end; end; procedure TMID_2_3_Frm.DBGrid1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if dbgrid1.Fields[3].AsString='2017-01' then begin checkbox4.Checked:=True; RadioGroup1.ItemIndex:=0; end else begin checkbox4.Checked:=False; RadioGroup1.ItemIndex:=1; end; end; [code] 上述代码,经测试正常。
santiaodahan 2017-02-24
  • 打赏
  • 举报
回复
可以这样比较,需要先定位到你要提取字段内容的行。可以赋值DataSet.RecNo选择需要的行。radiobutton1.Checked缺少赋值。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧