Q&A

  • DBGrid에서 multi select 한것만 프린트???
수고들 하십니다.



혹시 DBGrid에서 multi select 한 레코드들만 프린트 할 수 있을 까요??



고수님들의 조언을 부탁 드립니다.

3  COMMENTS
  • Profile
    구창민 2000.01.13 04:41
    최재원 wrote:

    > 수고들 하십니다.

    >

    > 혹시 DBGrid에서 multi select 한 레코드들만 프린트 할 수 있을 까요??

    >

    > 고수님들의 조언을 부탁 드립니다.







    아래내용을 참조하시어

    발췌, 프린트 하는 것을 구현해보세요.



    그럼, 즐거운 프로그래밍 되시길~



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    Db, DBTables, Grids, DBGrids, StdCtrls, ExtCtrls;



    type

    TForm1 = class(TForm)

    Panel1: TPanel;

    Count: TButton;

    Clear: TButton;

    DBGrid1: TDBGrid;

    DataSource1: TDataSource;

    Table1: TTable;

    Select: TButton;

    procedure CountClick(Sender: TObject);

    procedure ClearClick(Sender: TObject);

    procedure SelectClick(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;

    Bookmark1: TBookmark;

    z: Integer;

    implementation



    {$R *.DFM}



    procedure TForm1.CountClick(Sender: TObject);

    begin

    if DBgrid1.SelectedRows.Count > 0 then

    begin

    showmessage(inttostr(DBgrid1.SelectedRows.Count));

    end;

    end;



    procedure TForm1.ClearClick(Sender: TObject);

    begin

    dbgrid1.SelectedRows.Clear;

    end;



    procedure TForm1.SelectClick(Sender: TObject);

    var

    x: word;

    TempBookmark: TBookMark;

    begin

    DBGrid1.Datasource.Dataset.DisableControls;

    with DBgrid1.SelectedRows do

    if Count > 0 then

    begin

    TempBookmark:= DBGrid1.Datasource.Dataset.GetBookmark;

    for x:= 0 to Count - 1 do

    begin

    if IndexOf(Items[x]) > -1 then

    begin

    DBGrid1.Datasource.Dataset.Bookmark:= Items[x];

    showmessage(DBGrid1.Datasource.Dataset.Fields[1].AsString);

    end;

    end;

    DBGrid1.Datasource.Dataset.GotoBookmark(TempBookmark);

    DBGrid1.Datasource.Dataset.FreeBookmark(TempBookmark);

    end;

    DBGrid1.Datasource.Dataset.EnableControls;

    end;



    end.

  • Profile
    최재원 2000.01.13 22:00
    구창민 wrote:

    > 최재원 wrote:

    > > 수고들 하십니다.

    > >

    > > 혹시 DBGrid에서 multi select 한 레코드들만 프린트 할 수 있을 까요??

    > >

    > > 고수님들의 조언을 부탁 드립니다.

    >

    >

    >

    > 아래내용을 참조하시어

    > 발췌, 프린트 하는 것을 구현해보세요.

    >

    > 그럼, 즐거운 프로그래밍 되시길~

    >

    > unit Unit1;

    >

    > interface

    >

    > uses

    > Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    > Db, DBTables, Grids, DBGrids, StdCtrls, ExtCtrls;

    >

    > type

    > TForm1 = class(TForm)

    > Panel1: TPanel;

    > Count: TButton;

    > Clear: TButton;

    > DBGrid1: TDBGrid;

    > DataSource1: TDataSource;

    > Table1: TTable;

    > Select: TButton;

    > procedure CountClick(Sender: TObject);

    > procedure ClearClick(Sender: TObject);

    > procedure SelectClick(Sender: TObject);

    > private

    > { Private declarations }

    > public

    > { Public declarations }

    > end;

    >

    > var

    > Form1: TForm1;

    > Bookmark1: TBookmark;

    > z: Integer;

    > implementation

    >

    > {$R *.DFM}

    >

    > procedure TForm1.CountClick(Sender: TObject);

    > begin

    > if DBgrid1.SelectedRows.Count > 0 then

    > begin

    > showmessage(inttostr(DBgrid1.SelectedRows.Count));

    > end;

    > end;

    >

    > procedure TForm1.ClearClick(Sender: TObject);

    > begin

    > dbgrid1.SelectedRows.Clear;

    > end;

    >

    > procedure TForm1.SelectClick(Sender: TObject);

    > var

    > x: word;

    > TempBookmark: TBookMark;

    > begin

    > DBGrid1.Datasource.Dataset.DisableControls;

    > with DBgrid1.SelectedRows do

    > if Count > 0 then

    > begin

    > TempBookmark:= DBGrid1.Datasource.Dataset.GetBookmark;

    > for x:= 0 to Count - 1 do

    > begin

    > if IndexOf(Items[x]) > -1 then

    > begin

    > DBGrid1.Datasource.Dataset.Bookmark:= Items[x];

    > showmessage(DBGrid1.Datasource.Dataset.Fields[1].AsString);

    > end;

    > end;

    > DBGrid1.Datasource.Dataset.GotoBookmark(TempBookmark);

    > DBGrid1.Datasource.Dataset.FreeBookmark(TempBookmark);

    > end;

    > DBGrid1.Datasource.Dataset.EnableControls;

    > end;

    >

    > end.



    답변해 주신데 대해 정말 감사 합니다.



    컴파일 에러에서 막혔는데요(정말 왕초보지요^^)



    [Error] Fwitchreport.pas(45): Undeclared identifier: 'TBookmark'



    procedure Twitchreport.BitBtn2Click(Sender: TObject);

    var

    TempBookMark : TBookMark; <- 이 부분이 에러

    x : word;

    begin



    TABLE 이나 QUERY는 데이타 모듈에 모두 모아났구요... (그래서 그런가???)



    아무튼 컴파일 조차 할 수 가 없군요... 부디 조언을 부탁드립니다.







  • Profile
    구창민 2000.01.13 22:15
    uses 에 DB 추가하셨나 확인해보세요.

    참고로, TBookMark는 TPoint형입니다.

    그럼 즐거운 프로그래밍 되시길~