我在对控件写代码的时候,每一个事件就写一次代码,发现是有很多重复的代码,例如对个组合框通过ADOQUERY获取数据后添加,
procedure Torder_mx.ComboBox3DropDown(Sender: TObject);
begin
d1.Close ;
d1.SQL.Clear ;
d1.sql.Add('select m_color from matral_lib where m_barcode = :p1 and m_qty >0');
d1.Parameters.ParamByName('p1').Value := edit6.Text ;
d1.Open;
if d1.Recordset.RecordCount >0 then
begin
d1.First ;
while not d1.Eof do
begin
combobox3.Items.Add(d1.FieldValues['m_color'] );
d1.Next;
end;
end;
end;在其他ComboBox也是写相同的代码,就是SQL语句和参数不同,其他都是一样的,而且都是用一个ADOQUERY来操作数据,因此
d1.Close ;
d1.SQL.Clear ;
d1.sql.Add('');
d1.Parameters.ParamByName('p1').Value := ;
d1.Open;
这里是用得最多,怎样忧化一下代码呢?写个过程或者函数,还是类呢,请各位大侠发表一下意见,让小菜增长一下见识
procedure Torder_mx.ComboBox3DropDown(Sender: TObject);
begin
d1.Close ;
d1.SQL.Clear ;
d1.sql.Add('select m_color from matral_lib where m_barcode = :p1 and m_qty >0');
d1.Parameters.ParamByName('p1').Value := edit6.Text ;
d1.Open;
if d1.Recordset.RecordCount >0 then
begin
d1.First ;
while not d1.Eof do
begin
combobox3.Items.Add(d1.FieldValues['m_color'] );
d1.Next;
end;
end;
end;在其他ComboBox也是写相同的代码,就是SQL语句和参数不同,其他都是一样的,而且都是用一个ADOQUERY来操作数据,因此
d1.Close ;
d1.SQL.Clear ;
d1.sql.Add('');
d1.Parameters.ParamByName('p1').Value := ;
d1.Open;
这里是用得最多,怎样忧化一下代码呢?写个过程或者函数,还是类呢,请各位大侠发表一下意见,让小菜增长一下见识
//ADOQuery也可以直接做为参数传入
procedure Torder_mx.AddColorToComboBox(Sender: TObject;PValue:string);
begin
d1.Close ;
d1.SQL.Clear ;
d1.sql.Add('select m_color from matral_lib where m_barcode = :p1 and m_qty >0');
d1.Parameters.ParamByName('p1').Value := PValue;
d1.Open;
if d1.Recordset.RecordCount >0 then
begin
d1.First ;
while not d1.Eof do
begin
TComboBox(Sender).Items.Add(d1.FieldValues['m_color'] );
d1.Next;
end;
end;
end;{自定义消息处理方法,把所有ComboBox的方法指针指向这个方法,在事件管理器里面选就可以了}
procedure Torder_mx.AllComboBoxDropDown(Sender: TObject);
begin
AddColorToComboBox(Sender,Edit1.Text);
end;
就是写个过程来然后把参数传递吧,procedure Torder_mx.AddColorToComboBox这个就是自定义的过程吗
with d1
begin
Close ;
SQL.Clear ;
sql.Add('');
Parameters.ParamByName('p1').Value := ;
Open;
end;