如何将一个GRID中选定的数据发回到另外一个GRID中?(100分)

  • 主题发起人 主题发起人 WJZLGS
  • 开始时间 开始时间
W

WJZLGS

Unregistered / Unconfirmed
GUEST, unregistred user!
我有这样一个问题:
在一个GRID1上放一个DbComobox1,然后在这个Dbcombox1的下拉值中选取数据,但是下拉值的最后一个值为中文字'查找'。在选取这个中文值'查找'后,马上出现一个GRID2,在这个Grid2中显示出所有可选择的客户,选定一个客户后,将这个客户直接发回到GRID1 相应的Dbcombox1上。
 
“注意换行,后面的都看不到了”

 
Dbcombox1的数据是中文字'查找'时,

if Table1.Active<>True then
Table1.Active:=True;
frmgetdata.init;
frmgetdata.mydatasource:=dm.DS_Table1;
if Frmgetdata.show then
begin
E_DptNo.Text:=Frmgetdata.getvalue('dptno');
EdptNo.Text:=Frmgetdata.getvalue('dptno');
end;

下面是另一unit 代码
unit GetData;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, DBCtrls, ExtCtrls, Grids, DBGrids, Db, DBTables;

type
TFrmGetData = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
DBNavigator1: TDBNavigator;
CmdOk: TButton;
CmdCancel: TButton;
DBGrid1: TDBGrid;
procedure FormActivate(Sender: TObject);
procedure CmdOkClick(Sender: TObject);
procedure CmdCancelClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
DS:TDatasource;
public
property mydatasource:TDatasource read Ds write ds;
function show:boolean;
function getvalue(fname: string):variant;
procedure init;
end;

var
FrmGetData: TFrmGetData;
okornot:boolean;

implementation

{$R *.DFM}

procedure TFrmGetData.FormActivate(Sender: TObject);
begin
dbgrid1.DataSource:=mydatasource;
dbnavigator1.DataSource:=mydatasource;
end;

procedure TFrmGetData.CmdOkClick(Sender: TObject);
begin
okornot:=true;
close;
end;

procedure TFrmGetData.CmdCancelClick(Sender: TObject);
begin
okornot:=false;
close;
end;
function Tfrmgetdata.show:boolean;
begin
showmodal;
result:=okornot;
end;
function Tfrmgetdata.getvalue(fname: string):variant;
var i:integer;
begin
with mydatasource.DataSet do
begin
for i := 0 to fieldcount - 1 do
if uppercase(fields.fieldname)=
uppercase(fname)
then
result:=fields.value;
end;
end;
procedure Tfrmgetdata.init;
begin
application.CreateForm(Tfrmgetdata, frmgetdata);
end;
procedure TFrmGetData.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;

你的问题参考上面应能解决。
 
wumeng:
能否详细一点,有的我都看不懂,特别是'Dbcombox1的数据是中文字'查找'时'下面的那一段代码.thanks!
 
if ComboBox1.text='查找' then
begin
if Table1.Active<>True then Table1.Active:=True;
frmgetdata.init;
frmgetdata.mydatasource:=dm.DS_Table1; if Frmgetdata.show then
begin
E_DptNo.Text:=Frmgetdata.getvalue('dptno');
EdptNo.Text:=Frmgetdata.getvalue('dptno');
end;
end;
//Table1-->显示出所有可选择的客户的Table。
//E_DptNo.Text-->将这个客户直接发回到GRID1 相应的Dbcombox1上
 
wumeng:
照老兄的话去做,还是不行,老出错。能不再全面一点,分全送给您了!
 
附加功能 将问题提前
 
WJZLGS:请自己提前问题或结束帖子!
 
接受答案了.
 
后退
顶部