我用delphi5.0 BDE+paradox方式开发了一个小软件,其中有一个table的逻辑字段,想在dbgird中用对号或其他方式改变其值,请问怎么办,(1

  • 主题发起人 主题发起人 libaoliang
  • 开始时间 开始时间
L

libaoliang

Unregistered / Unconfirmed
GUEST, unregistred user!
我用delphi5.0 BDE+paradox方式开发了一个小软件,其中有一个table的逻辑字段,想在dbgird中用对号或其他方式改变其值,请问怎么办,(100分)<br />我用delphi5.0 BDE+paradox方式开发了一个小软件,其中有一个table的逻辑
字段,想在dbgird中用对号或其他方式改变其值,请问怎么办,
是否需要增加控件,用字段的picklist 不理想,还是出现false 和true,
我想直接点击的对号的有无来表示,
请给点意见,
我是新手,
 
在TField.OnGetText中写点代码,把true/false转换成对号或其他显示符号,然后在
单击事件中修改字段的值并提交。
 
youngsun:
写什么代码?明确点好吗?
 
dngrig.ondrawcolumncell

if ADOQuery1.FieldByName('sex').AsBoolean = true then DBGrid1.Canvas.TextRect(rect,rect.left+2,rect.top+2,'男')
else DBGrid1.Canvas.TextRect(rect,rect.left+2,rect.top+2,'女');
 
实际上我想用对号的有无来表示逻辑字段的真假
这该怎么写代码?
 
假设你那个逻辑字段叫select(我用的ADO,BDE也一样)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, Grids, DBGrids, ADODB;

type
TForm1 = class(TForm)
ADOTable1: TADOTable;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure SetDisplayText(Sender: TField; var Text: String; DisplayText: Boolean);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
adotable1.Open;
end;

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
if column.FieldName = 'select' then
begin
adotable1.Edit;
adotable1.FieldByName('select').AsBoolean :=
not adotable1.FieldByName('select').AsBoolean;
adotable1.Post;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
adotable1.Fields[1].OnGetText := SetDisplayText;
end;

procedure TForm1.SetDisplayText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
if Sender.FieldName = 'select' then
if Sender.AsBoolean then
Text := '√'
else
Text := '×';
DisplayText := True;
end;

end.
 
InforPower 上的twwDBGrid好象直接就可以,我有用过
 
Demander:
inforpower到哪里找,
组件页面上没有啊,
twwdbgird 在哪里?不是delphi5.0 的标准控件吧!
 
:YoungSun
你的办法我试过,
有错误,
麻烦你检查一下好吗?
帮忙帮到底吧!
 
建议用DBGRIDEH!
 
易名烦:
dbgirdeh 是第三方组件,不好安装使用!
如好使用,
请简单介绍一下安装问题!

 
我在本地是测试通过了的,delphi6+ado+win2000+sql server 2000
不知道你那儿出现什么错误?
 
我用的是 delphi5.0+bde+paradox
 
那应该是没有问题的,只不过我用的是ADO,你用的是BDE,基本上程序不用任何修改,你只要把
table连续到你的paradox数据表,把"Select"字段改为你的逻辑字段即可.
 
YoungSun:
我再试试,
多谢了!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部