DELPHI是个烂货!!! 问题很明显,Delphi肯定不是烂货,你的程序报的都是很低级的错误,好好跟踪吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 DELPHI能和VC的代码编辑器比吗?! 你这么说delphi,你的问题没戏了。~~~~~~ 你真牛!比谁都牛,这样说delphi 小弟不才,刚做了一个网页http://ezym.yeah.net专门存我用Delphi开发的作品,请大家赏脸去看看!!我只能说kao!你才是个烂货!! to:ykuang我看了你的网页,不过,太单调了,怎么都是红色的!希望你努力把它办好!因为我们希望看到更多的DELPHI作品! 哎呀!这么多人说我,好象脸很红....^_^不过凭心而论,DELPHI在语言方面确实没有VC好.希望大家能客观地看问题,虽然DELPHI在开发数据库方面有其独特的好处,但不能说DELPHI就是最好的!!!PB也有很多好处呀!!!!!!!!!!!!!!!!!!!!!DELPHI中有许多BUG,又不是我一个人碰到过.不过我的标题上的形容,一方面是气愤;另一方面是为了吸引人气.只要能达到目的,用什么方法都行. to:ykuang我也觉得太红了,好单调!!现在又这么热。 为什么说delphi在语言方面不如vc?仅仅因为 object pascal 不支持多重继承?仅仅因为 object pascal 不支持算符重载?这些东西在oop领域还是属于争论的范畴,并没有定论谁好谁坏啊如果只是因为你习惯了c++语法,那么你的判断就不是客观的。我们没有说delphi是最好的,同样vc也不是最好的。但delphi是最贴近程序员的,是最“体贴”的开发工具。无论你的水准高低,是开发工具来适应你,而不是让程序员去适应开发工具!比较而言,vb,vc要求程序员去适应开发工具。还有,你说要客观,所以告诉你,delphi的特长并不仅仅在于数据库方面(虽然80%的delphi应用于数据库)。vc能够做到的,delphi同样可以做到。c/c++可以进行sdk开发,delphi也可以(仅仅语法不同而已)!vc有mfc类库,但delphi有更优秀的vcl库。还有,所谓的delphi的bug(有很多这样的贴子),最终都被证明,是程序员自己的问题,所以不要简单的把自己的错误推卸给IDE,出现错误,多数情况都是因为你在某个问题上不清楚。 To Nicrosoft:那你能推测出以上两种问题可能出现的原因吗? 我只负责指出你对delphi认识有缺陷,没有义务给你解决问题。不过,对于第一个问题,可以给你一点提示:可能由于某些窗体尚未被创建(或者尚未可见),而你已经有了设置焦点的代码,不一定是窗口,一般是某个组件(组件也是窗口嘛,玩vc的你应该知道的)。(嘿嘿,和delphi的提示差不多,哈哈) To:Nicrosoft拜托,如果这点都不知道的话,不如一头撞死算了.但是我的代码中没有这些部分讲了这么多也讲不清楚下面是出现问题的两部分的源代码:unit main;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ImgList, ComCtrls, ToolWin, Menus, StdCtrls, Buttons, ExtCtrls, DBCtrls, Mask, Grids, DBGrids,DBTables;type TmainForm = class(TForm) MainMenu: TMainMenu; menuFile: TMenuItem; menuSearch: TMenuItem; menuHelp: TMenuItem; menuFileExit: TMenuItem; menuSearchAE: TMenuItem; N2: TMenuItem; menuSearchProd: TMenuItem; ToolBar1: TToolBar; TBNew: TToolButton; TBModi: TToolButton; TBDel: TToolButton; ToolButton4: TToolButton; TBFirst: TToolButton; TBPrior: TToolButton; TBNext: TToolButton; TBLast: TToolButton; ImageList1: TImageList; ToolButton9: TToolButton; TBExit: TToolButton; Bevel1: TBevel; PageCtlAll: TPageControl; TabShtAE: TTabSheet; TabShtSupp: TTabSheet; TabShtVisit: TTabSheet; PanelBottom: TPanel; OKBtn: TBitBtn; CancelBtn: TBitBtn; Label1: TLabel; DBEdit1: TDBEdit; Label2: TLabel; DBEdit2: TDBEdit; Label3: TLabel; DBLookupComboBox1: TDBLookupComboBox; Bevel2: TBevel; Label4: TLabel; Label5: TLabel; Label6: TLabel; DBEdit3: TDBEdit; Label7: TLabel; DBEdit4: TDBEdit; Label8: TLabel; DBEdit5: TDBEdit; Label9: TLabel; DBEdit6: TDBEdit; Label10: TLabel; DBEdit7: TDBEdit; Label11: TLabel; DBEdit8: TDBEdit; Label12: TLabel; DBEdit9: TDBEdit; Label13: TLabel; DBEdit10: TDBEdit; Label14: TLabel; DBEdit11: TDBEdit; Label15: TLabel; DBEdit12: TDBEdit; Label16: TLabel; DBEdit13: TDBEdit; Label17: TLabel; DBEdit14: TDBEdit; Label18: TLabel; DBEdit15: TDBEdit; Label19: TLabel; DBEdit16: TDBEdit; Label20: TLabel; DBEdit17: TDBEdit; Label21: TLabel; DBEdit18: TDBEdit; Label22: TLabel; DBMemo1: TDBMemo; Label23: TLabel; DBGrid1: TDBGrid; DBMemo2: TDBMemo; DBLookupComboBox2: TDBLookupComboBox; procedure FormShow(Sender: TObject); procedure TBExitClick(Sender: TObject); procedure menuFileExitClick(Sender: TObject); procedure TabShtSuppEnter(Sender: TObject); procedure TabShtVisitEnter(Sender: TObject); procedure TabShtAEEnter(Sender: TObject); procedure TBFirstClick(Sender: TObject); procedure TBLastClick(Sender: TObject); procedure TBPriorClick(Sender: TObject); procedure TBNextClick(Sender: TObject); procedure TBNewClick(Sender: TObject); procedure OKBtnClick(Sender: TObject); procedure CancelBtnClick(Sender: TObject); procedure TBDelClick(Sender: TObject); procedure TBModiClick(Sender: TObject); procedure DBEdit3Exit(Sender: TObject); private { Private declarations } public { Public declarations } ActiveDataSet : TTable; end;var mainForm: TmainForm;implementationuses DataMod;{$R *.DFM}procedure TmainForm.FormShow(Sender: TObject);begin ActiveDataSet := DataMod.CustomerData.TblAE; DataMod.CustomerData.TblAE.Open; DataMod.CustomerData.TblSupp.Open; DataMod.CustomerData.TblVisit.Open; DBEdit1.SetFocus;end;procedure TmainForm.TBExitClick(Sender: TObject);begin close;end;procedure TmainForm.menuFileExitClick(Sender: TObject);begin close;end;procedure TmainForm.TabShtSuppEnter(Sender: TObject);begin ActiveDataSet := DataMod.CustomerData.TblSupp;end;procedure TmainForm.TabShtVisitEnter(Sender: TObject);begin ActiveDataSet := DataMod.CustomerData.TblVisit;end;procedure TmainForm.TabShtAEEnter(Sender: TObject);begin ActiveDataSet := DataMod.CustomerData.TblAE;end;procedure TmainForm.TBFirstClick(Sender: TObject);begin ActiveDataSet.First; TbFirst.Enabled := false; TbPrior.Enabled :=false; TbNext.Enabled := true; TbLast.Enabled := true;end;procedure TmainForm.TBLastClick(Sender: TObject);begin ActiveDataSet.Last; TbNext.Enabled := false; TbLast.Enabled := false; TbFirst.Enabled := true; TbPrior.Enabled := true;end;procedure TmainForm.TBPriorClick(Sender: TObject);begin if ActiveDataSet.Bof <> true then begin ActiveDataSet.Prior; TBNext.Enabled := true; TBLast.Enabled := true; end else begin TBPrior.Enabled := false; TBFirst.Enabled := false; TBNext.Enabled := true; TBLast.Enabled := true; end;end;procedure TmainForm.TBNextClick(Sender: TObject);begin if ActiveDataSet.Eof <> true then begin ActiveDataSet.Next; TBFirst.Enabled := true; TBPrior.Enabled := true; end else begin TBPrior.Enabled := true; TBFirst.Enabled := true; TBNext.Enabled := false; TBLast.Enabled := false; end;end;procedure TmainForm.TBNewClick(Sender: TObject);begin ActiveDataSet.Insert;end;procedure TmainForm.OKBtnClick(Sender: TObject);begin ActiveDataSet.Post; ActiveDataSet.Refresh;end;procedure TmainForm.CancelBtnClick(Sender: TObject);begin ActiveDataSet.Cancel;end;procedure TmainForm.TBDelClick(Sender: TObject);begin if MessageDlg('真的要删除这笔数据吗?',mtConfirmation,[mbYes,mbNo],0)= mrYes then begin ActiveDataSet.Delete; end;end;procedure TmainForm.TBModiClick(Sender: TObject);begin ActiveDataSet.Edit;end;procedure TmainForm.DBEdit3Exit(Sender: TObject);var WarnMsg:String;begin if DataMod.CustomerData.QrySuppByName.RecordCount > 0 then begin with DataMod.CustomerData.QrySuppByName do begin WarnMsg := '业务员:'; Warnmsg := WarnMsg + FieldByName('name').asString; WarnMsg := WarnMsg + #13; WarnMsg := WarnMsg + '厂商名称:'; WarnMsg := WarnMsg + FieldByName('sname').asString; WarnMsg := WarnMsg + #13; WarnMsg := WarnMsg + FieldByName('addr').asString; WarnMsg := WarnMsg + #13; WarnMsg := WarnMsg + FieldByName('tel1').asString; ShowMessage(WarnMsg); end; end;end;end.// Another Unit Source Fileunit DataMod;interfaceuses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, DBTables, DB;type TCustomerData = class(TDataModule) TblAE: TTable; TblSupp: TTable; TblProd: TTable; TblVisit: TTable; TblCatalog: TTable; DSAE: TDataSource; DSSupp: TDataSource; DSProd: TDataSource; DSVisit: TDataSource; DSCatalog: TDataSource; TblGroup: TTable; TblInvestment: TTable; DSGroup: TDataSource; DSInvestment: TDataSource; DBMast: TDatabase; TblAEAEID: TAutoIncField; TblAENAME: TStringField; TblAEGROUP: TSmallintField; TblSuppSID: TAutoIncField; TblSuppSNAME: TStringField; TblSuppAEID: TIntegerField; TblSuppESNAME: TStringField; TblSuppADDR: TStringField; TblSuppEADDR: TStringField; TblSuppFADDR: TStringField; TblSuppEFADDR: TStringField; TblSuppEXECUTIVE: TStringField; TblSuppTEL1: TStringField; TblSuppTEL2: TStringField; TblSuppTEL3: TStringField; TblSuppFAX1: TStringField; TblSuppFAX2: TStringField; TblSuppEMAIL: TStringField; TblSuppURL: TStringField; TblSuppMOBILE: TStringField; TblSuppESTABLISH: TDateTimeField; TblSuppINVESTMENT: TSmallintField; TblSuppMARKET: TMemoField; TblVisitVID: TAutoIncField; TblVisitSID: TIntegerField; TblVisitDATE: TDateTimeField; TblVisitCONDITION: TMemoField; QrySuppByName: TQuery; DSQrySuppByName: TDataSource; QrySuppByNamename: TStringField; QrySuppByNamesname: TStringField; QrySuppByNameaddr: TStringField; QrySuppByNametel1: TStringField; procedure TblAEBeforeOpen(DataSet: TDataSet); procedure TblVisitAfterOpen(DataSet: TDataSet); procedure DSAEStateChange(Sender: TObject); procedure DSSuppStateChange(Sender: TObject); procedure DSVisitStateChange(Sender: TObject); procedure TblSuppBeforePost(DataSet: TDataSet); procedure TblSuppSNAMEValidate(Sender: TField); private { Private declarations } public { Public declarations } end;var CustomerData: TCustomerData;implementationuses main;{$R *.DFM}procedure TCustomerData.TblAEBeforeOpen(DataSet: TDataSet);begin TblGroup.Open;end;procedure TCustomerData.TblVisitAfterOpen(DataSet: TDataSet);begin TblInvestment.Open;end;procedure TCustomerData.DSAEStateChange(Sender: TObject);begin if DSAE.State = dsBrowse then begin with main.mainForm do begin OKBtn.Enabled := false; CancelBtn.Enabled :=false; TBNew.Enabled := true; TBModi.Enabled := true; TBDel.Enabled := true; TBFirst.Enabled := true; TBPrior.Enabled := true; TBNext.Enabled := true; TBLast.Enabled := true; end; end; if (DSAE.State = dsEdit) or (DSAE.State = dsInsert) then begin with main.mainForm do begin OKBtn.Enabled := true; CancelBtn.Enabled := true; TBNew.Enabled :=false; TBModi.Enabled := false; TBDel.Enabled := false; TBFirst.Enabled := false; TBPrior.Enabled := false; TBNext.Enabled := false; TBLast.Enabled := false; end; end;end;procedure TCustomerData.DSSuppStateChange(Sender: TObject);begin if DSSupp.State = dsBrowse then begin with main.mainForm do begin OKBtn.Enabled := false; CancelBtn.Enabled :=false; TBNew.Enabled := true; TBModi.Enabled := true; TBDel.Enabled := true; TBFirst.Enabled := true; TBPrior.Enabled := true; TBNext.Enabled := true; TBLast.Enabled := true; end; end; if (DSSupp.State = dsEdit) or (DSSupp.State = dsInsert) then begin with main.mainForm do begin OKBtn.Enabled := true; CancelBtn.Enabled := true; TBNew.Enabled :=false; TBModi.Enabled := false; TBDel.Enabled := false; TBFirst.Enabled := false; TBPrior.Enabled := false; TBNext.Enabled := false; TBLast.Enabled := false; end; end;end;procedure TCustomerData.DSVisitStateChange(Sender: TObject);beginif DSVisit.State = dsBrowse then begin with main.mainForm do begin OKBtn.Enabled := false; CancelBtn.Enabled :=false; TBNew.Enabled := true; TBModi.Enabled := true; TBDel.Enabled := true; TBFirst.Enabled := true; TBPrior.Enabled := true; TBNext.Enabled := true; TBLast.Enabled := true; end; end; if (DSVisit.State = dsEdit) or (DSVisit.State = dsInsert) then begin with main.mainForm do begin OKBtn.Enabled := true; CancelBtn.Enabled := true; TBNew.Enabled :=false; TBModi.Enabled := false; TBDel.Enabled := false; TBFirst.Enabled := false; TBPrior.Enabled := false; TBNext.Enabled := false; TBLast.Enabled := false; end; end;end;procedure TCustomerData.TblSuppBeforePost(DataSet: TDataSet);begin{调用查询组件进行重复性监测}end;procedure TCustomerData.TblSuppSNAMEValidate(Sender: TField);begin with QrySuppByName do begin ParamByName('suppname').asString := TblSuppSNAME.Value; Open; end;end;end. Delphi是有bug,但很少,主要是程序员自己的问题。即使是有bug,程序员都能通过,派生新类重新编译源代码等多种方式解决。vc出现bug的话,你知道是什么bug吗?只有去死哈!!! VC的bug多吗,我想问你是VC编的软件出错多还是DELPHI,MFC是建立在API上的较DELPHI底层的封装,如果底层封装都出错连篇的话,那微软就干脆关门算了.而DELPHI的VCL封装更高级,出错的可能性就越大,但使用就越方便(方便懒人^_^) 你别急,他们不回答你的问题,我回答!不过你要告诉我,到底是你烂还是Delphi烂???想清楚回答我! 我Kao,在FormShow中DBEdit.SetFocus?就是这个地方出现错误!@告诉你我看了你贴出代码之后,第一件事就是用查找SetFocus,果然,就是这个地方有问题! 这是两个弱智的问题:QrySuppByName:Can not perform this operation on a closed dataset.是操作关闭的数据集,这完全是你程序的问题,问题在那里自己找吧 不要自己不行,就拿Delphin乱骂。是不是没有被K过! --- “MFC是建立在API上的较DELPHI底层的封装,如果底层封装都出错连篇的话,那微软就干脆关门算了.而DELPHI的VCL封装更高级,出错的可能性就越大,但使用就越方便(方便懒人^_^) ”那你告诉我,vcl是封装什么的?不是api吗?莫名其妙,从层次来说,vcl和mfc属于同一个层次的类库。我们知道:api层封装消息层,类库层封装api层。我不知道你所谓的vcl更高级是什么意思,如果你认为vcl不是封装api,那么你告诉我vcl建立在何处?要说使用者更方便,只是说明了vcl封装的比mfc更优秀。以我的观点来说,mfc根本没有做什么封装,仅仅封装了句柄参数而已! Delphi是有Bug,我可不敢在这骂。哪个软件敢说自己没有bug.VC没有吗?SP4是干什么的? 不过可以肯定的是,你的问题完全是你的原因。 另外,连这点问题都无法搞定,我绝对不相信你会玩VC。 MFC根本没有做什么封装,仅仅封装了句柄参数而已(HANDLE)?这是我今年来听过的最妙的言论了.依照这个理论,所有学VC的人都不用学MFC了.因为学了API就等于学会了VC,换句话说学习MFC的人都是傻瓜????? TO KINGRON:开始时在DELPHI中SETFOCUS绝对可以正常工作,虽然我马上就怀疑过.但因为一切都正常,所以就没有理它.但是今天还是试一试 , 给这段代码加了注释.竟然没有问题了!!!我K.我看我的机子是神经过敏了.!!! 我靠,你TMD才是烂货。不会用别乱吼! to:sweihua(无名) !!!!你在哪里!!!! TMD,把源代码拿出来!!光哥找了你两天了!!!代码呢!!代码在哪里!!! to virtualmfc(scale) 不要自欺欺人,单纯setfocus在FormCreate事件中是会出现错误的,除非: Self.Show; Edit1.SetFocus ; 谢谢chinaap(chinaap)、hxshanji(山鸡),提出的建议。我想以红色做为我的特色,单调是单调了些,但我不想去灌水,用些泡沫的东西去填充我的网页。http://ezym.yeah.net,欢迎大家的参观,有建议请到这里,交个朋友也到这里:[email protected] to:ykuang(ykuang):做的漂亮一点和泡沫没什么关系啊,并不是专业的东西就要搞的很严肃或者很单调TO:sweihua(无名)你TMD看到没有!!!KAO!!! 谢谢山鸡兄,下次会努力改进的!认识一下好吗?[email protected] [email protected]呵呵,做网页其实我也不在行的,不过有几个内行的兄弟。[email protected] 真有趣,现在CSDN都快变成菜市场了。在我看来,vc能做的delphi基本上都能做,只不过具体的代码不一样而已。同意Nicrosoft的观点:程序员还是应该具备严谨的态度。 大家编译一个空的程序有没有毒???有多少KB??????????????????? 怎样为DBGrid创建序号? sql 公式 高手帮忙看下哪里出错了! 在sql一表中再插入其它表内某一字段的方法 请问这么把一个带有字母和数字的字符串转化为纯数字的字符串? DBGRID的DATASOURCE属性 入门者求助一个简单问题 dbgrid 问题!我想实现用虚行(空白行)来填满整个DBGRID并可以任意编辑某一行!!!! 如何让delphi不限制string的长度 一个数据库图象的存取问题? 一个简单的问题!(可是我想不通)
专门存我用Delphi开发的作品,请大家赏脸去看看!!
我只能说kao!你才是个烂货!!
我看了你的网页,不过,太单调了,怎么都是红色的!
希望你努力把它办好!因为我们希望看到更多的DELPHI作品!
不过凭心而论,DELPHI在语言方面确实没有VC好.
希望大家能客观地看问题,虽然DELPHI在开发数据库方面有其独特的好处,
但不能说DELPHI就是最好的!!!
PB也有很多好处呀!!!!!!!!!!!!!!!!!!!!!
DELPHI中有许多BUG,又不是我一个人碰到过.
不过我的标题上的形容,一方面是气愤;另一方面是为了吸引人气.
只要能达到目的,用什么方法都行.
我也觉得太红了,好单调!!
现在又这么热。
那你能推测出以上两种问题可能出现的原因吗?
拜托,如果这点都不知道的话,不如一头撞死算了.
但是我的代码中没有这些部分讲了这么多也讲不清楚
下面是出现问题的两部分的源代码:
unit main;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ImgList, ComCtrls, ToolWin, Menus, StdCtrls, Buttons, ExtCtrls, DBCtrls,
Mask, Grids, DBGrids,DBTables;type
TmainForm = class(TForm)
MainMenu: TMainMenu;
menuFile: TMenuItem;
menuSearch: TMenuItem;
menuHelp: TMenuItem;
menuFileExit: TMenuItem;
menuSearchAE: TMenuItem;
N2: TMenuItem;
menuSearchProd: TMenuItem;
ToolBar1: TToolBar;
TBNew: TToolButton;
TBModi: TToolButton;
TBDel: TToolButton;
ToolButton4: TToolButton;
TBFirst: TToolButton;
TBPrior: TToolButton;
TBNext: TToolButton;
TBLast: TToolButton;
ImageList1: TImageList;
ToolButton9: TToolButton;
TBExit: TToolButton;
Bevel1: TBevel;
PageCtlAll: TPageControl;
TabShtAE: TTabSheet;
TabShtSupp: TTabSheet;
TabShtVisit: TTabSheet;
PanelBottom: TPanel;
OKBtn: TBitBtn;
CancelBtn: TBitBtn;
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBLookupComboBox1: TDBLookupComboBox;
Bevel2: TBevel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
DBEdit3: TDBEdit;
Label7: TLabel;
DBEdit4: TDBEdit;
Label8: TLabel;
DBEdit5: TDBEdit;
Label9: TLabel;
DBEdit6: TDBEdit;
Label10: TLabel;
DBEdit7: TDBEdit;
Label11: TLabel;
DBEdit8: TDBEdit;
Label12: TLabel;
DBEdit9: TDBEdit;
Label13: TLabel;
DBEdit10: TDBEdit;
Label14: TLabel;
DBEdit11: TDBEdit;
Label15: TLabel;
DBEdit12: TDBEdit;
Label16: TLabel;
DBEdit13: TDBEdit;
Label17: TLabel;
DBEdit14: TDBEdit;
Label18: TLabel;
DBEdit15: TDBEdit;
Label19: TLabel;
DBEdit16: TDBEdit;
Label20: TLabel;
DBEdit17: TDBEdit;
Label21: TLabel;
DBEdit18: TDBEdit;
Label22: TLabel;
DBMemo1: TDBMemo;
Label23: TLabel;
DBGrid1: TDBGrid;
DBMemo2: TDBMemo;
DBLookupComboBox2: TDBLookupComboBox;
procedure FormShow(Sender: TObject);
procedure TBExitClick(Sender: TObject);
procedure menuFileExitClick(Sender: TObject);
procedure TabShtSuppEnter(Sender: TObject);
procedure TabShtVisitEnter(Sender: TObject);
procedure TabShtAEEnter(Sender: TObject);
procedure TBFirstClick(Sender: TObject);
procedure TBLastClick(Sender: TObject);
procedure TBPriorClick(Sender: TObject);
procedure TBNextClick(Sender: TObject);
procedure TBNewClick(Sender: TObject);
procedure OKBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure TBDelClick(Sender: TObject);
procedure TBModiClick(Sender: TObject);
procedure DBEdit3Exit(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
ActiveDataSet : TTable;
end;var
mainForm: TmainForm;implementationuses DataMod;{$R *.DFM}procedure TmainForm.FormShow(Sender: TObject);
begin
ActiveDataSet := DataMod.CustomerData.TblAE;
DataMod.CustomerData.TblAE.Open;
DataMod.CustomerData.TblSupp.Open;
DataMod.CustomerData.TblVisit.Open;
DBEdit1.SetFocus;end;procedure TmainForm.TBExitClick(Sender: TObject);
begin
close;
end;procedure TmainForm.menuFileExitClick(Sender: TObject);
begin
close;
end;procedure TmainForm.TabShtSuppEnter(Sender: TObject);
begin
ActiveDataSet := DataMod.CustomerData.TblSupp;
end;procedure TmainForm.TabShtVisitEnter(Sender: TObject);
begin
ActiveDataSet := DataMod.CustomerData.TblVisit;
end;procedure TmainForm.TabShtAEEnter(Sender: TObject);
begin
ActiveDataSet := DataMod.CustomerData.TblAE;
end;procedure TmainForm.TBFirstClick(Sender: TObject);
begin
ActiveDataSet.First;
TbFirst.Enabled := false;
TbPrior.Enabled :=false;
TbNext.Enabled := true;
TbLast.Enabled := true;
end;procedure TmainForm.TBLastClick(Sender: TObject);
begin
ActiveDataSet.Last;
TbNext.Enabled := false;
TbLast.Enabled := false;
TbFirst.Enabled := true;
TbPrior.Enabled := true;
end;procedure TmainForm.TBPriorClick(Sender: TObject);
begin
if ActiveDataSet.Bof <> true then
begin
ActiveDataSet.Prior;
TBNext.Enabled := true;
TBLast.Enabled := true;
end
else
begin
TBPrior.Enabled := false;
TBFirst.Enabled := false;
TBNext.Enabled := true;
TBLast.Enabled := true;
end;
end;procedure TmainForm.TBNextClick(Sender: TObject);
begin
if ActiveDataSet.Eof <> true then
begin
ActiveDataSet.Next;
TBFirst.Enabled := true;
TBPrior.Enabled := true;
end
else
begin
TBPrior.Enabled := true;
TBFirst.Enabled := true;
TBNext.Enabled := false;
TBLast.Enabled := false;
end;
end;procedure TmainForm.TBNewClick(Sender: TObject);
begin
ActiveDataSet.Insert;
end;procedure TmainForm.OKBtnClick(Sender: TObject);
begin
ActiveDataSet.Post;
ActiveDataSet.Refresh;
end;procedure TmainForm.CancelBtnClick(Sender: TObject);
begin
ActiveDataSet.Cancel;
end;procedure TmainForm.TBDelClick(Sender: TObject);
begin
if MessageDlg('真的要删除这笔数据吗?',mtConfirmation,[mbYes,mbNo],0)= mrYes then
begin
ActiveDataSet.Delete;
end;end;procedure TmainForm.TBModiClick(Sender: TObject);
begin
ActiveDataSet.Edit;
end;
procedure TmainForm.DBEdit3Exit(Sender: TObject);
var
WarnMsg:String;
begin
if DataMod.CustomerData.QrySuppByName.RecordCount > 0 then
begin
with DataMod.CustomerData.QrySuppByName do
begin
WarnMsg := '业务员:';
Warnmsg := WarnMsg + FieldByName('name').asString;
WarnMsg := WarnMsg + #13;
WarnMsg := WarnMsg + '厂商名称:';
WarnMsg := WarnMsg + FieldByName('sname').asString;
WarnMsg := WarnMsg + #13;
WarnMsg := WarnMsg + FieldByName('addr').asString;
WarnMsg := WarnMsg + #13;
WarnMsg := WarnMsg + FieldByName('tel1').asString;
ShowMessage(WarnMsg);
end;
end;
end;end.
// Another Unit Source File
unit DataMod;interfaceuses
SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms,
Dialogs, DBTables, DB;type
TCustomerData = class(TDataModule)
TblAE: TTable;
TblSupp: TTable;
TblProd: TTable;
TblVisit: TTable;
TblCatalog: TTable;
DSAE: TDataSource;
DSSupp: TDataSource;
DSProd: TDataSource;
DSVisit: TDataSource;
DSCatalog: TDataSource;
TblGroup: TTable;
TblInvestment: TTable;
DSGroup: TDataSource;
DSInvestment: TDataSource;
DBMast: TDatabase;
TblAEAEID: TAutoIncField;
TblAENAME: TStringField;
TblAEGROUP: TSmallintField;
TblSuppSID: TAutoIncField;
TblSuppSNAME: TStringField;
TblSuppAEID: TIntegerField;
TblSuppESNAME: TStringField;
TblSuppADDR: TStringField;
TblSuppEADDR: TStringField;
TblSuppFADDR: TStringField;
TblSuppEFADDR: TStringField;
TblSuppEXECUTIVE: TStringField;
TblSuppTEL1: TStringField;
TblSuppTEL2: TStringField;
TblSuppTEL3: TStringField;
TblSuppFAX1: TStringField;
TblSuppFAX2: TStringField;
TblSuppEMAIL: TStringField;
TblSuppURL: TStringField;
TblSuppMOBILE: TStringField;
TblSuppESTABLISH: TDateTimeField;
TblSuppINVESTMENT: TSmallintField;
TblSuppMARKET: TMemoField;
TblVisitVID: TAutoIncField;
TblVisitSID: TIntegerField;
TblVisitDATE: TDateTimeField;
TblVisitCONDITION: TMemoField;
QrySuppByName: TQuery;
DSQrySuppByName: TDataSource;
QrySuppByNamename: TStringField;
QrySuppByNamesname: TStringField;
QrySuppByNameaddr: TStringField;
QrySuppByNametel1: TStringField;
procedure TblAEBeforeOpen(DataSet: TDataSet); procedure TblVisitAfterOpen(DataSet: TDataSet);
procedure DSAEStateChange(Sender: TObject);
procedure DSSuppStateChange(Sender: TObject);
procedure DSVisitStateChange(Sender: TObject);
procedure TblSuppBeforePost(DataSet: TDataSet);
procedure TblSuppSNAMEValidate(Sender: TField);
private
{ Private declarations }
public
{ Public declarations }
end;var
CustomerData: TCustomerData;implementationuses main;{$R *.DFM}procedure TCustomerData.TblAEBeforeOpen(DataSet: TDataSet);
begin
TblGroup.Open;
end;procedure TCustomerData.TblVisitAfterOpen(DataSet: TDataSet);
begin
TblInvestment.Open;
end;
procedure TCustomerData.DSAEStateChange(Sender: TObject);
begin
if DSAE.State = dsBrowse then
begin
with main.mainForm do
begin
OKBtn.Enabled := false;
CancelBtn.Enabled :=false;
TBNew.Enabled := true;
TBModi.Enabled := true;
TBDel.Enabled := true;
TBFirst.Enabled := true;
TBPrior.Enabled := true;
TBNext.Enabled := true;
TBLast.Enabled := true;
end;
end;
if (DSAE.State = dsEdit) or (DSAE.State = dsInsert) then
begin
with main.mainForm do
begin
OKBtn.Enabled := true;
CancelBtn.Enabled := true;
TBNew.Enabled :=false;
TBModi.Enabled := false;
TBDel.Enabled := false;
TBFirst.Enabled := false;
TBPrior.Enabled := false;
TBNext.Enabled := false;
TBLast.Enabled := false;
end;
end;end;procedure TCustomerData.DSSuppStateChange(Sender: TObject);
begin
if DSSupp.State = dsBrowse then
begin
with main.mainForm do
begin
OKBtn.Enabled := false;
CancelBtn.Enabled :=false;
TBNew.Enabled := true;
TBModi.Enabled := true;
TBDel.Enabled := true;
TBFirst.Enabled := true;
TBPrior.Enabled := true;
TBNext.Enabled := true;
TBLast.Enabled := true;
end;
end;
if (DSSupp.State = dsEdit) or (DSSupp.State = dsInsert) then
begin
with main.mainForm do
begin
OKBtn.Enabled := true;
CancelBtn.Enabled := true;
TBNew.Enabled :=false;
TBModi.Enabled := false;
TBDel.Enabled := false;
TBFirst.Enabled := false;
TBPrior.Enabled := false;
TBNext.Enabled := false;
TBLast.Enabled := false;
end;
end;end;procedure TCustomerData.DSVisitStateChange(Sender: TObject);
begin
if DSVisit.State = dsBrowse then
begin
with main.mainForm do
begin
OKBtn.Enabled := false;
CancelBtn.Enabled :=false;
TBNew.Enabled := true;
TBModi.Enabled := true;
TBDel.Enabled := true;
TBFirst.Enabled := true;
TBPrior.Enabled := true;
TBNext.Enabled := true;
TBLast.Enabled := true;
end;
end;
if (DSVisit.State = dsEdit) or (DSVisit.State = dsInsert) then
begin
with main.mainForm do
begin
OKBtn.Enabled := true;
CancelBtn.Enabled := true;
TBNew.Enabled :=false;
TBModi.Enabled := false;
TBDel.Enabled := false;
TBFirst.Enabled := false;
TBPrior.Enabled := false;
TBNext.Enabled := false;
TBLast.Enabled := false;
end;
end;end;procedure TCustomerData.TblSuppBeforePost(DataSet: TDataSet);
begin
{调用查询组件进行重复性监测}
end;procedure TCustomerData.TblSuppSNAMEValidate(Sender: TField);
begin
with QrySuppByName do
begin
ParamByName('suppname').asString := TblSuppSNAME.Value;
Open;
end;end;end.
而DELPHI的VCL封装更高级,出错的可能性就越大,但使用就越方便(方便懒人^_^)
不过你要告诉我,到底是你烂还是Delphi烂???
想清楚回答我!
告诉你我看了你贴出代码之后,第一件事就是用查找SetFocus,果然,就是这个地方有问题!
QrySuppByName:Can not perform this operation on a closed dataset.
是操作关闭的数据集,这完全是你程序的问题,问题在那里自己找吧
而DELPHI的VCL封装更高级,出错的可能性就越大,但使用就越方便(方便懒人^_^) ”
那你告诉我,vcl是封装什么的?不是api吗?莫名其妙,从层次来说,vcl和mfc属于同一个层次的类库。我们知道:api层封装消息层,类库层封装api层。我不知道你所谓的vcl更高级是什么意思,如果你认为vcl不是封装api,那么你告诉我vcl建立在何处?要说使用者更方便,只是说明了vcl封装的比mfc更优秀。以我的观点来说,mfc根本没有做什么封装,仅仅封装了句柄参数而已!
不过可以肯定的是,你的问题完全是你的原因。
另外,连这点问题都无法搞定,我绝对不相信你会玩VC。
这是我今年来听过的最妙的言论了.
依照这个理论,所有学VC的人都不用学MFC了.
因为学了API就等于学会了VC,换句话说学习MFC的人都是傻瓜?????
开始时在DELPHI中SETFOCUS绝对可以正常工作,虽然我马上就怀疑过.
但因为一切都正常,所以就没有理它.
但是今天还是试一试 , 给这段代码加了注释.
竟然没有问题了!!!我K.
我看我的机子是神经过敏了.!!!
你TMD才是烂货。不会用别乱吼!
你在哪里!!!!
光哥找了你两天了!!!
代码呢!!代码在哪里!!!
不要自欺欺人,单纯setfocus在FormCreate事件中是会出现错误的,除非:
Self.Show;
Edit1.SetFocus ;
单调是单调了些,但我不想去灌水,用些泡沫的东西去填充我的网页。http://ezym.yeah.net,欢迎大家的参观,有建议请到这里,交个朋友也到这里:[email protected]
做的漂亮一点和泡沫没什么关系啊,并不是专业的东西就要搞的很严肃或者很单调
TO:sweihua(无名)
你TMD看到没有!!!
KAO!!!
呵呵,做网页其实我也不在行的,不过有几个内行的兄弟。
[email protected]
在我看来,vc能做的delphi基本上都能做,只不过具体的代码不一样而已。
同意Nicrosoft的观点:程序员还是应该具备严谨的态度。