bigroute 来取分吧(50分)

  • 主题发起人 主题发起人 nmfx1122
  • 开始时间 开始时间
N

nmfx1122

Unregistered / Unconfirmed
GUEST, unregistred user!
来自:bigroute, 时间:2002-9-25 19:17:00, ID:1345867
数据库里一个字段为权限,30个这符,1代表可用0,代表不可用。
窗口创建的时候
var
menu :array[0..29] of tmenuitem ;
begin
menu[0] :=n1;
。。。。。。。。。
end;
然后
var s :String;
x :integer;
begin
s :=Table1.FieldByName('权限').AsString;
for x:=1 to 20 do
menu[x-1].Enabled :=s[x]=1;     //s[x]=1返回的是Boolean形
end;
---------------------------------
修改保存权限的时候可以做30个CheckBox.
var s :Array [1..30];
x :integer;
begin
for x:= 1 to 30 do
begin
s[x] :=0;
if CheckBox[x].Checked then s[x] :=1;
end;
Table1.FieldByName('权限').AsString :=String(s);
end;

下面这个例题好像不能运行,没有申明数组
有没有源程序。我正在学你这段代码,花了好几天的功夫都没有结果。
能帮帮我吗?
nmfx1122@163.net
msn:nmfx1122@hotmail.com


 
大家帮我看一下这个问是怎么回事?
 
老兄你一点都不会吗?
修改保存权限的时候可以做30个CheckBox.
var s :Array [1..30] of char;
x :integer;
begin
for x:= 1 to 30 do
begin
s[x] :=0;
if CheckBox[x].Checked then s[x] :=1;
end;
Table1.Edit;
Table1.FieldByName('权限').AsString :=String(s);
Table1.Post;
end;
 
以下是我的代码;
//
申明部分
public

{ Public declarations }
end;

var
fx_Rightset: Tfx_Rightset;
fxCheckbox:Array[0..10] of Tcheckbox;
fs:array [0..10] of char;
x:integer;
s:string;
ss:string;
implementation
uses frmSerDM;

{$R *.dfm}

procedure Tfx_Rightset.FormCreate(Sender: TObject);

begin
tblUser.ReadOnly:=false;
tbluser.IndexFieldNames:='fcUser_id';
tblUser.Open;


dbedit1.Enabled:=false;
dbedit2.Enabled:=false;
dbedit3.Enabled:=false;
dbedit4.Enabled:=false;
dbcheckbox1.Enabled:=false;
dbcheckbox2.Enabled:=false;
btncancel.Enabled:=false;
btnsave.Enabled:=false;

//定义数组
fxcheckbox[0]:=checkbox1;
fxcheckbox[1]:=checkbox2;
fxcheckbox[2]:=checkbox3;
fxcheckbox[3]:=checkbox4;
fxcheckbox[4]:=checkbox5;
fxcheckbox[5]:=checkbox6;
fxcheckbox[6]:=checkbox7;
fxcheckbox[7]:=checkbox8;
fxcheckbox[8]:=checkbox9;
fxcheckbox[9]:=checkbox10;
fxcheckbox[10]:=checkbox11;

s:=tbluser.Fields[7].AsString;
for x:=0 to 10 do
fxcheckbox[x].Checked:=s[x]='1';
end;

//代码部分
procedure Tfx_Rightset.btnSaveRightClick(Sender: TObject);
begin

for x:=1 to 10 do
begin
fs[x]:='0';
if fxCheckbox[x].checked then
fs[x]:='1';
end;
//tbluser.ClearFields;
tbluser.Edit;
tbluser.FieldByName('fcright').AsString:=string(fs);
tbluser.Post;
messageDlg('您的权限修改已成功',mtinformation,[mbOk],0);

end;
我用的是access2000 + ado +delphi6.0
其中fcright 是数据库fxsystem中fx_user表中的一个字段
fxring 是一个文本形字段。
你写的申明我以前也试过可是还不行,是不是access 2000不能这么做?
还是我的代码有问题.
经运行上述代码产生的错误提示。

project server.exe raised exception class Eolexception with message '字段 'fx_user.fcring'不能是零长度的字符串.'process stopped .use step or run to continue.
 
to:bigroute,
多谢bigroute 问题我已找到,是由于我在数组设置有问题。才会出现上述问题。
现已解决。
分现加给你.
 
刚没有加到分现在加分
 
后退
顶部