delphi中,我想写一个多if判断函数,但是好像里面不能够把控件的值赋给变量或参数,那么...
delphi中,我想写一个多if判断函数,要用到控件的值,但是好像函数体里面不能够直接把控件的值赋给参数,那么我应该怎么处理?是不是设置参数,从参数里把控件的值传进去呢?...
delphi中,我想写一个多if判断函数,要用到控件的值,但是好像函数体里面不能够直接把控件的值赋给参数,那么我应该怎么处理?是不是设置参数,从参数里把控件的值传进去呢?
我晕,原来还要加控件当前窗体的名字name属性,例如:form1.groupbox.text 展开
我晕,原来还要加控件当前窗体的名字name属性,例如:form1.groupbox.text 展开
4个回答
展开全部
这段SQL是什么?触发器吗?结构看上去好诡异啊
虽然通过你的解释我大概明白是怎么回事了 ,但是这段SQL。。。说实在话 我真不懂,可以麻烦你把部分代码放上来不?
用两个DBGRID简单的实现了你的要求
procedure TForm1.Button1Click(Sender: TObject);
Var SumResult:double;//计算总的金额
Temp:double;//获取当前记录的金额
TempID:Integer;//获取当前记录ID
TempDate:TDate;//获取当前记录日期
i:Integer;
begin
AdoQuery1.Open;
AdoQuery1.First;
AdoQuery2.Close;
AdoQuery2.SQL.Clear;
AdoQuery2.SQL.Add('Delete * from collectResult');
AdoQuery2.ExecSQL;
AdoQuery2.SQL.Clear;
AdoQuery2.SQL.Add('Select * from collectResult');
AdoQuery2.Open;
AdoQuery2.First;
with AdoQuery2 do
begin
SumResult:=0;
DbGrid1.DataSource.DataSet.First;
TempID:= DbGrid1.Fields[0].Value;
for i:= 0 to AdoQuery1.RecordCount -1 do
begin
TempDate:=DbGrid1.Fields[2].AsDateTime;
Temp:=DbGrid1.Fields[1].AsFloat;
if TempDate < StrToDate('2007-1-1') then
begin
SumResult:=Temp+SumResult;
end
else
begin
SumResult:=Temp*0.6+SumResult;
end;
if TempID = DbGrid1.Fields[0].Value then
begin
Edit;
FieldByName('SumResult').Value := SumResult;
FieldByName('Id').Value:= TempID;
end
else
begin
SumResult:= Temp;
TempID:=DbGrid1.Fields[0].Value;
Insert;
FieldByName('SumResult').Value := SumResult;
FieldByName('Id').Value:= TempID;
end;
Post;
DbGrid1.DataSource.DataSet.Next;
end;
end;
end;
呵呵 才学 程序写的很难看 而且也不知道你要做的是什么 只是做了个你要的操作
虽然通过你的解释我大概明白是怎么回事了 ,但是这段SQL。。。说实在话 我真不懂,可以麻烦你把部分代码放上来不?
用两个DBGRID简单的实现了你的要求
procedure TForm1.Button1Click(Sender: TObject);
Var SumResult:double;//计算总的金额
Temp:double;//获取当前记录的金额
TempID:Integer;//获取当前记录ID
TempDate:TDate;//获取当前记录日期
i:Integer;
begin
AdoQuery1.Open;
AdoQuery1.First;
AdoQuery2.Close;
AdoQuery2.SQL.Clear;
AdoQuery2.SQL.Add('Delete * from collectResult');
AdoQuery2.ExecSQL;
AdoQuery2.SQL.Clear;
AdoQuery2.SQL.Add('Select * from collectResult');
AdoQuery2.Open;
AdoQuery2.First;
with AdoQuery2 do
begin
SumResult:=0;
DbGrid1.DataSource.DataSet.First;
TempID:= DbGrid1.Fields[0].Value;
for i:= 0 to AdoQuery1.RecordCount -1 do
begin
TempDate:=DbGrid1.Fields[2].AsDateTime;
Temp:=DbGrid1.Fields[1].AsFloat;
if TempDate < StrToDate('2007-1-1') then
begin
SumResult:=Temp+SumResult;
end
else
begin
SumResult:=Temp*0.6+SumResult;
end;
if TempID = DbGrid1.Fields[0].Value then
begin
Edit;
FieldByName('SumResult').Value := SumResult;
FieldByName('Id').Value:= TempID;
end
else
begin
SumResult:= Temp;
TempID:=DbGrid1.Fields[0].Value;
Insert;
FieldByName('SumResult').Value := SumResult;
FieldByName('Id').Value:= TempID;
end;
Post;
DbGrid1.DataSource.DataSet.Next;
end;
end;
end;
呵呵 才学 程序写的很难看 而且也不知道你要做的是什么 只是做了个你要的操作
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把控件对象传递给函数就可以了;
如果不是写dll或服务没有限制的;
如果写dll或服务用activex需要初始化;
如果不是写dll或服务没有限制的;
如果写dll或服务用activex需要初始化;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数如果是自定义的请增加函数所在单元的窗体名字
fm_MAIN.CONTROLNAME.属性;
fm_MAIN.CONTROLNAME.属性;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最好别这么用。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询