请各位高手多多指教啊

解决方案 »

  1.   


    在这里回复同样加分,总计120分http://expert.csdn.net/Expert/topic/2038/2038668.xml?temp=.9269831http://expert.csdn.net/Expert/topic/2038/2038174.xml?temp=.8178369
      

  2.   

    dbgrid只不过起个显示的作用,数据还在DataSet理啊,
    你应该引用DataSet吧
      

  3.   

    做一个DATAMODEL FORM 然后uses比较好一些!!
      

  4.   

    为什么要调用别的窗体的DBGRID
    不过可以这样var DBGrid2 : TDBGrid;
    begin
     DBGrid2 := TDBGrid.Create(self);
     DBGrid2 := Form1.DBGrid1;
     DBGrid2.Parent := self;
    end;
    就Ok了
      

  5.   

    to  xiaoyuer0851(红旗下的蛋):谢谢你的关照!
     我做的是打印,用frprintgrid打印dbgrid,因为要打印多个窗体的dbgrid,所以需要动态设置frprintgrid的dbgrid,也就是说,不论哪一个dbgrid要打印,只需调用我的两个打印单元就行了,但是怎样才能将要打印的dbgrid传过去呢,也许还有别的思路,帮忙值点一下吧,明天就要交工了,谢谢!
      

  6.   

    定义一个PUBLIC的DATESET,每次使用都把数据给它,打印窗体只是检测DATESET是否为空,使用就可以了
      

  7.   

    源码贴出来了,大家帮忙看看
    //该单元用来实现打印字段的选择及打印时间、报表标题的设置
    unit Unit_print_sel;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, CheckLst, ComCtrls, Grids, DBGrids, FR_PTabl;type
      TForm_print_sel = class(TForm)
        Label1: TLabel;
        Label2: TLabel;
        Edit1: TEdit;
        CheckListBox1: TCheckListBox;
        Label3: TLabel;
        edit2: TEdit;
        DateTimePicker: TDateTimePicker;
        Button2: TButton;
        Button3: TButton;
        Button1: TButton;    procedure FormCreate(Sender: TObject);
        procedure DateTimePickerCloseUp(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Edit1KeyPress(Sender: TObject; var Key: Char);
      private
        
        { Private declarations }
      public
        dbgrid_print:tdbgrid;
        { Public declarations }
      end;var
      Form_print_sel: TForm_print_sel;
    implementation//uses中的内容需要添加所有需要打印的单元
    //需要声明所有dbgrid所在的单元文件
    uses
      unit_client, unit_print_change;    //unit_client是要打印的dbgrid所在的单元
    {$R *.dfm}  procedure TForm_print_sel.FormCreate(Sender: TObject);
    var
      i:integer;
    begin//时间设定
     form_print_sel.DateTimePicker.DateTime:=now;
     form_print_sel.edit2.Text:= datetostr(form_print_sel.DateTimePicker.date);
    for i:=0 to form__client.dbgrid1.Columns.Count-1 do      
                                  ////form__client.dbgrid1需要动态改变////
        
    begin//在 CheckListBox1中添加 item           ////form__client.dbgrid1需要动态改变////
         form_print_sel.CheckListBox1.Items.Add(form__client.dbgrid1.Columns[i].Title.Caption);
         form_print_sel.CheckListBox1.Checked[i]:=false;
        end;end;//设置打印时间
    procedure TForm_print_sel.DateTimePickerCloseUp(Sender: TObject);
    begin
      form_print_sel.edit2.Text:=datetostr(form_print_sel.DateTimePicker.date);
    end;
    //确定按钮的实现
    procedure TForm_print_sel.Button1Click(Sender: TObject);
    begin
      form_print_change.ShowModal;
    end;
    //全选按钮的实现
    procedure TForm_print_sel.Button2Click(Sender: TObject);
    var
      i:integer;
    begin
      for i:=0 to form_print_sel.CheckListBox1.Items.Count-1  do
      begin
        form_print_sel.CheckListBox1.Checked[i]:=true;
      end;
    end;//关闭按钮的实现
    procedure TForm_print_sel.Button3Click(Sender: TObject);
    var
      i:integer;
    begin//恢复CheckListBox1的初始状态
      for i:=0 to form_print_sel.CheckListBox1.Items.Count-1  do
      begin
         form_print_sel.CheckListBox1.Checked[i]:=false;
      end;
      form_print_sel.Edit1.Text:='';//关闭窗体
      form_print_sel.Close;
    end;
    //回车当tab
    procedure TForm_print_sel.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      begin
      if key=#13 then
      begin
        key:=#0;
        perform(WM_NEXTDLGCTL,0,0);
      end;
    end;
    end;end.
      

  8.   

    用uses 语句,把那几个DBGrid所在的窗体对应的单元文件uses 进去就可以。而且在Object Pascal中两个单元可以相互uses
      

  9.   

    我做的是打印,用frprintgrid打印dbgrid,因为要打印多个窗体的dbgrid,所以需要动态设置frprintgrid的dbgrid,也就是说,不论哪一个dbgrid要打印,只需调用我的两个打印单元就行了,但是怎样才能将要打印的dbgrid传过去呢,也许还有别的思路,帮忙值点一下吧,明天就要交工了,谢谢!