奇怪使用self.adoq.next 可用 frmDDDD.adoq.next 就不可用?

jwt1982 2009-01-13 10:57:27
奇怪使用self.adoq.next 可用 frmDDDD.adoq.next 就不可用?

怎么使用窗体名反而用不了了?
...全文
85 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdmh 2009-01-13
  • 打赏
  • 举报
回复
有你这么提问的吗,自己好好想想吧
jwt1982 2009-01-13
  • 打赏
  • 举报
回复
倒,顺手写的,其实应该是frmSCJLView拉,反正没什么差别
bdmh 2009-01-13
  • 打赏
  • 举报
回复
楼主通知 你的frmDDDD窗体在哪????
jwt1982 2009-01-13
  • 打赏
  • 举报
回复
unit frmSCJLViewCode;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, frmMDIBasicCode, ExtCtrls, TB2Item, TB2Dock, TB2Toolbar, Grids,
DBGrids, DB, ADODB, StdCtrls, ComCtrls;

type
TfrmSCJLView = class(TfrmMdiBasic)
adoQ: TADOQuery;
ds: TDataSource;
dgView: TDBGrid;
TBSeparatorItem2: TTBSeparatorItem;
gpxBottom: TGroupBox;
Label1: TLabel;
Label2: TLabel;
panTop: TPanel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
dtpS: TDateTimePicker;
dtpE: TDateTimePicker;
txtDeptName: TEdit;
txtAreaName: TEdit;
txtAreaID: TEdit;
txtDeptID: TEdit;
labInfo: TLabel;
TBSeparatorItem3: TTBSeparatorItem;
txtFilter: TEdit;
Label7: TLabel;
procedure rbtnSaveClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure txtAreaNameDblClick(Sender: TObject);
procedure txtDeptNameDblClick(Sender: TObject);
procedure rbtnReFreshClick(Sender: TObject);
procedure rbtnDelClick(Sender: TObject);
procedure adoQAfterScroll(DataSet: TDataSet);
procedure txtFilterChange(Sender: TObject);
procedure rbtnAddClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure dgViewTitleClick(Column: TColumn);
procedure dgViewDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure btnFilterClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
frmSCJLView: TfrmSCJLView;

implementation

{$R *.dfm}
uses squirrelcode;

procedure TfrmSCJLView.adoQAfterScroll(DataSet: TDataSet);
begin
labinfo.Caption:=inttostr(adoq.RecNo)+'/'+inttostr(adoq.Recordset.RecordCount);
end;

procedure TfrmSCJLView.btnFilterClick(Sender: TObject);
var
strSql:string;
begin
strSql:='select * from T_JXC_SCJL where DoDate between '''+datetimetostr(dtps.Date)+''' and '''+datetimetostr(dtpe.DateTime)+''' and deptid like ''%'+txtdeptid.Text+'%'' and areaid like ''%'+txtareaid.Text+'%''';
with adoq do
begin
close;
sql.Clear;
sql.Add(strSql);
open;
end;
//权限判断
if Not SetFormRbtn(self.Name,'') then
begin
msgboxb('权限设置失败,请联系系统管理员!');
frmSCJLView.Close;
end;
end;

procedure TfrmSCJLView.dgViewDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if adoq.RecNo mod 2 = 0 then
(Sender as TDBGrid).Canvas.Brush.Color := clInfoBk //定义背景颜色
else
(Sender as TDBGrid).Canvas.Brush.Color := clWindow; //定义背景颜色
if not adoq.Fieldbyname('Commint').AsBoolean then
(Sender as TDBGrid).Canvas.Font.Color:=clRed
else (Sender as TDBGrid).Canvas.Font.Color:=clGreen;

(Sender as TDBGrid).DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;

procedure TfrmSCJLView.dgViewTitleClick(Column: TColumn);
//排序
var
SortString:String;
begin
if Column.DropDownRows=7 then
begin
SortString:= Column.FieldName+ ' ASC';
Column.DropDownRows:=6;
end
else
begin
SortString:= Column.FieldName+ ' DESC';
Column.DropDownRows:=7;
end;
TADODataSet(DGview.DataSource.DataSet).Sort:=SortString;
end;

procedure TfrmSCJLView.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
frmSCJLView:=nil;
end;

procedure TfrmSCJLView.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
// inherited;
if GMBCheckForm('frmSCJL') then
begin
msgboxb('窗体生产数据打开,不能关闭本窗体');
CanClose:=false;
end
else CanClose:=true;

end;

procedure TfrmSCJLView.FormCreate(Sender: TObject);
begin
dtps.Date:=Trunc(now)-7;
dtpe.Date:=Trunc(now);
btnFilterClick(self);
end;

procedure TfrmSCJLView.rbtnAddClick(Sender: TObject);
begin
GMBFormCreate('frmSCJL');
end;

procedure TfrmSCJLView.rbtnDelClick(Sender: TObject);
begin
if adoq.FieldByName('NBID').AsString='' then exit;
GMBOpenFormDoc('frmSCJL',adoq.FieldByName('NBID').AsString);
end;

procedure TfrmSCJLView.rbtnReFreshClick(Sender: TObject);
begin
btnFilterClick(self);
end;

procedure TfrmSCJLView.rbtnSaveClick(Sender: TObject);
begin
frmSCJLView.adoQ.Next;
end;

procedure TfrmSCJLView.txtAreaNameDblClick(Sender: TObject);
var
AreaInfo:tAreaInfo;
begin
AreaInfo.strAreaID:=txtAreaID.Text;
AreaInfo.strAreaName:=txtAreaName.text;
AreaInfo:=GetAreaInfo(AreaInfo);
txtAreaID.Text:=AreaInfo.strAreaID;
txtAreaName.text:=AreaInfo.strAreaName;

btnFilterClick(Self);
end;

procedure TfrmSCJLView.txtDeptNameDblClick(Sender: TObject);
var
DeptInfo:tDeptInfo;
begin
DeptInfo.strDeptID:=txtDeptID.Text;
DeptInfo.strDeptName:=txtDeptName.text;
DeptInfo:=GetDeptInfo(DeptInfo);
txtDeptID.Text:=DeptInfo.strDeptID;
txtDeptName.text:=DeptInfo.strDeptName;

btnFilterClick(Self);
end;

procedure TfrmSCJLView.txtFilterChange(Sender: TObject);
begin
if txtfilter.Text ='' then
begin
adoq.Filtered:=false;
end
else
begin
adoq.Filtered:=false;
adoq.Filter:='nbid like '''+txtfilter.Text+'%'' or username like ''%'+txtfilter.Text+'%'' or userID like ''%'+txtfilter.Text+'%''';
adoq.Filtered:=true;
end;
end;

end.
jwt1982 2009-01-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bdmh 的回复:]
不管怎样,强烈的建议楼主,不要这样使用,这样程序的延伸会很麻烦
[/Quote]

哦,是这样的,我要在另外一个窗体里调用,结果发现使用窗体名的模式不好用

然后回到本窗体测试,结果也是这样,这样就郁闷了,不使用窗体名,如何在另外一个窗体里调用?
bdmh 2009-01-13
  • 打赏
  • 举报
回复
最好把你的整个单元代码贴出来看看
jwt1982 2009-01-13
  • 打赏
  • 举报
回复
呵呵,窗体名显然是正确的,纳闷就是这个了,不知道为什么,使用self.adoq.next或直接使用adoq.next可用,可是窗体名.就不可用,直接内存报错误
bdmh 2009-01-13
  • 打赏
  • 举报
回复
不管怎样,强烈的建议楼主,不要这样使用,这样程序的延伸会很麻烦
bdmh 2009-01-13
  • 打赏
  • 举报
回复
你是指怎样的不行,具体说说
tjg5202 2009-01-13
  • 打赏
  • 举报
回复
如果窗体名是正确的,应该是可以用的啊
jwt1982 2009-01-13
  • 打赏
  • 举报
回复
就是本窗体呵呵
bdmh 2009-01-13
  • 打赏
  • 举报
回复
frmDDDD是哪个窗体,存在吗

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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