一定要用这种方法啊? 如:用query—— if checkbox1.checked then query1.sql.add('select * from table where sex=男性') else if checkbox2.checked then query1.sql.add('select * from table where sex=女性') 不简单啦!
//以下是我帮朋友做的分数登记的部分代码,可参考一下,我也是菜鸟。 private { Private declarations } function classid(myid: string): string; procedure OnSetText(Sender: TField; const Text: string);//在这里声明 procedure OnAdd(DataSet: TDataSet);//在这里声明 procedure DatatoEdit; public { Public declarations } end;var studentfrm: Tstudentfrm;implementation uses dmu;{$R *.dfm}procedure Tstudentfrm.OnAdd(DataSet: TDataSet);//在这里实现 begin if (cbjiid.ItemIndex = -1) or (cbbanid.ItemIndex = -1) then begin dm.studentdata.Cancel; showmessage('请选中数据'); exit; end; end;procedure Tstudentfrm.OnSetText(Sender: TField; const Text: string);//在这里实现 begin if length(text) > 2 then begin showmessage('请输入两位或以下的数字!'); exit; end; dm.query.Close; dm.query.SQL.Clear; dm.query.SQL.Add('select count(studentid) from studentinfo where studentid=''' + trim(cbbanid.Items[cbbanid.ItemIndex]) + classid(text) + ''''); dm.query.Open; if dm.query.Fields[0].AsInteger <> 0 then begin showmessage('ID重复请重输!'); dm.query.Close; exit; end; dm.query.Close; sender.AsString := trim(cbbanid.Items[cbbanid.ItemIndex]) + classid(text); end;procedure Tstudentfrm.DatatoEdit; begin with dm.studentdata do begin txtstudentid.Text := copy(fields[0].AsString, 6, 2); txtsname.Text := fields[1].AsString; end; end;function Tstudentfrm.classid(myid: string): string; begin case length(myid) of 1: result := '0' + myid; 2: result := myid; end; end;procedure Tstudentfrm.quitExecute(Sender: TObject); begin close; end;procedure Tstudentfrm.FormClose(Sender: TObject; var Action: TCloseAction); begin dm.studentdata.Close; end;procedure Tstudentfrm.InsertExecute(Sender: TObject); begin dm.studentdata.Append; end; procedure Tstudentfrm.FormShow(Sender: TObject); begin dm.studentdata.AfterInsert := OnAdd;//注意了在这里指 dm.studentdatastudentID.OnSetText := OnSetText;//注意了在这里指 dm.studentdata.Open; end;procedure Tstudentfrm.CBjiidDropDown(Sender: TObject); begin try cbjiid.Items.Clear; dm.query.Close; dm.query.SQL.Clear; dm.query.SQL.Add('select id from classji'); dm.query.Open; dm.query.First; while not dm.query.Eof do begin cbjiid.Items.Append(dm.query.Fields[0].asstring); dm.query.Next; end; finally dm.query.Close; end; end;procedure Tstudentfrm.editExecute(Sender: TObject); begin dm.studentdata.Edit; end;procedure Tstudentfrm.cbbanidDropDown(Sender: TObject); begin try cbbanid.Items.Clear; dm.query.Close; dm.query.SQL.Clear; dm.query.SQL.Add('select id from classba where id like ''' + trim(cbjiid.Text) + '%' + ''''); dm.query.Open; dm.query.First; while not dm.query.Eof do begin cbbanid.Items.Append(dm.query.Fields[0].asstring); dm.query.Next; end; finally dm.query.Close; end; end;procedure Tstudentfrm.DBGrid1CellClick(Column: TColumn); begin DatatoEdit; end;procedure Tstudentfrm.deleteExecute(Sender: TObject); begin dm.studentdata.Delete; end;procedure Tstudentfrm.DBGrid1KeyPress(Sender: TObject; var Key: Char); begin if key = #13 then PostMessage(dbgrid1.Handle, WM_KEYDOWN, VK_TAB, 0); end;end.
如:用query——
if checkbox1.checked then
query1.sql.add('select * from table where sex=男性')
else if checkbox2.checked then
query1.sql.add('select * from table where sex=女性')
不简单啦!
private
{ Private declarations }
function classid(myid: string): string;
procedure OnSetText(Sender: TField; const Text: string);//在这里声明
procedure OnAdd(DataSet: TDataSet);//在这里声明
procedure DatatoEdit;
public
{ Public declarations }
end;var
studentfrm: Tstudentfrm;implementation
uses dmu;{$R *.dfm}procedure Tstudentfrm.OnAdd(DataSet: TDataSet);//在这里实现
begin
if (cbjiid.ItemIndex = -1) or (cbbanid.ItemIndex = -1) then
begin
dm.studentdata.Cancel;
showmessage('请选中数据');
exit;
end;
end;procedure Tstudentfrm.OnSetText(Sender: TField; const Text: string);//在这里实现
begin
if length(text) > 2 then
begin
showmessage('请输入两位或以下的数字!');
exit;
end; dm.query.Close;
dm.query.SQL.Clear;
dm.query.SQL.Add('select count(studentid) from studentinfo where studentid=''' + trim(cbbanid.Items[cbbanid.ItemIndex]) + classid(text) + '''');
dm.query.Open;
if dm.query.Fields[0].AsInteger <> 0 then begin
showmessage('ID重复请重输!');
dm.query.Close;
exit;
end;
dm.query.Close;
sender.AsString := trim(cbbanid.Items[cbbanid.ItemIndex]) + classid(text);
end;procedure Tstudentfrm.DatatoEdit;
begin
with dm.studentdata do
begin
txtstudentid.Text := copy(fields[0].AsString, 6, 2);
txtsname.Text := fields[1].AsString;
end;
end;function Tstudentfrm.classid(myid: string): string;
begin
case length(myid) of
1: result := '0' + myid;
2: result := myid;
end;
end;procedure Tstudentfrm.quitExecute(Sender: TObject);
begin
close;
end;procedure Tstudentfrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
dm.studentdata.Close;
end;procedure Tstudentfrm.InsertExecute(Sender: TObject);
begin
dm.studentdata.Append;
end;
procedure Tstudentfrm.FormShow(Sender: TObject);
begin
dm.studentdata.AfterInsert := OnAdd;//注意了在这里指
dm.studentdatastudentID.OnSetText := OnSetText;//注意了在这里指
dm.studentdata.Open;
end;procedure Tstudentfrm.CBjiidDropDown(Sender: TObject);
begin
try
cbjiid.Items.Clear;
dm.query.Close;
dm.query.SQL.Clear;
dm.query.SQL.Add('select id from classji');
dm.query.Open;
dm.query.First;
while not dm.query.Eof do begin
cbjiid.Items.Append(dm.query.Fields[0].asstring);
dm.query.Next;
end;
finally
dm.query.Close;
end;
end;procedure Tstudentfrm.editExecute(Sender: TObject);
begin
dm.studentdata.Edit;
end;procedure Tstudentfrm.cbbanidDropDown(Sender: TObject);
begin
try
cbbanid.Items.Clear;
dm.query.Close;
dm.query.SQL.Clear;
dm.query.SQL.Add('select id from classba where id like ''' + trim(cbjiid.Text) + '%' + '''');
dm.query.Open;
dm.query.First;
while not dm.query.Eof do begin
cbbanid.Items.Append(dm.query.Fields[0].asstring);
dm.query.Next;
end;
finally
dm.query.Close;
end;
end;procedure Tstudentfrm.DBGrid1CellClick(Column: TColumn);
begin
DatatoEdit;
end;procedure Tstudentfrm.deleteExecute(Sender: TObject);
begin
dm.studentdata.Delete;
end;procedure Tstudentfrm.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
PostMessage(dbgrid1.Handle, WM_KEYDOWN, VK_TAB, 0);
end;end.
关键是我想了解一下我提到的那种方法.也就是你回复的那个"函数指针"问题.我不知道如果
从一个form里面利用另外一个form或者DM里面的过程.
先给你分再说!
#include "stdafx.h"
#include<iostream.h>
void (*fd)();
void function()
{
cout<<"Hello"<<endl;
}main (){
fp=Function;
fp();
return 0;
}
只不过用delphi实现更加淋漓尽致