Q&A

  • DBgrid multiselect 프린트하기
안녕하세요,,델 쓴지 아니 프로그램 한지 이제 두달 좀 넘은 왕초보입니다..

뭔가 할 때마다 걸리는 군요...-_-;;



DBgrid에서 multiselect를 한다음 프린트를 하려합니다..

그런데,,프린트를 하면 DataSet이 lsat로 가버리네요..

select된 row값은 계속 가지고 있는데, dataset을 next하는 것이 안 먹히고 바로 eof로 갑니다.



예시---

with DataSet do

DataSet.first;

begin

// for row := 0 to DataSet.RecordCount - 1 do

while not DataSet.eof do

begin

if DBGrid.SelectedRows.CurrentRowSelected then

begin

try

RForm1 := TRForm1.Create(Application);

RForm1.print

finally

RForm1.Hide;

RForm1.Free;

end;

end;

DataSet.next;

end;

end;





대충 위와 같습니다...



multiselect 프린트를 찾아보기는 했지만 잘 안되더라구요.

조금 급합니다..^^

고수님들의 많이 도움 바랍니다..





1  COMMENTS
  • Profile
    초보 2001.09.15 01:21
    초보 wrote:

    > 안녕하세요,,델 쓴지 아니 프로그램 한지 이제 두달 좀 넘은 왕초보입니다..

    > 뭔가 할 때마다 걸리는 군요...-_-;;

    >

    > DBgrid에서 multiselect를 한다음 프린트를 하려합니다..

    > 그런데,,프린트를 하면 DataSet이 lsat로 가버리네요..

    > select된 row값은 계속 가지고 있는데, dataset을 next하는 것이 안 먹히고 바로 eof로 갑니다.

    >

    > 예시---

    > with DataSet do

    > DataSet.first;

    > begin

    > // for row := 0 to DataSet.RecordCount - 1 do

    > while not DataSet.eof do

    > begin

    > if DBGrid.SelectedRows.CurrentRowSelected then

    > begin

    > try

    > RForm1 := TRForm1.Create(Application);

    > RForm1.print

    > finally

    > RForm1.Hide;

    > RForm1.Free;

    > end;

    > end;

    > DataSet.next;

    > end;

    > end;

    >

    >

    > 대충 위와 같습니다...

    >

    > multiselect 프린트를 찾아보기는 했지만 잘 안되더라구요.

    > 조금 급합니다..^^

    > 고수님들의 많이 도움 바랍니다..

    >

    procedure TForm1.Print_BtnClick(Sender: TObject);

    var

    x:word;

    TempBookmark:TBookMark;

    brgin



    if sender = Print_Btn then

    begin

    try

    Screen.cursor := crHourGlass;

    DBGrid.Datasource.Dataset.DisableControls;

    with DBGrid.SelectedRows do

    if Count > 0 then

    begin

    TempBookmark:= DBGrid.Datasource.Dataset.GetBookmark;

    for x:= 0 to Count -1 do

    begin

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

    begin

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

    with S_Sql do

    begin

    Clear;

    //Update 쿼리 들어감

    end;

    // showmessage(DBGrid.Datasource.Dataset.Fields[x].AsString);

    // DBGrid.Datasource.Dataset.Fields[x].AsString -- x에 따라 grid의 값을 가져옮.

    report_print;//print procedure

    end;

    end;

    DBGrid.Datasource.Dataset.GotoBookmark(TempBookmark);

    DBGrid.Datasource.Dataset.FreeBookmark(TempBookmark);

    end;

    DBGrid.Datasource.Dataset.EnableControls;

    finally

    Screen.cursor := crDefault;

    end;

    end; //if

    end;//begin





    dateset을 이용하지 않는 방법을 찾아서 해 봤더니 되더군요...

    어떤 분이 올리신 팁으로 해결했습니다..



    감사...