Q&A

  • quickreport에서 previewmodal할때 excel을 열구 싶어요..
안녕하세요~~



엑셀을 열려구 합니다..

다음과 같은 방법으로..



use절에 ComObj, OleServer 포함시켰구요~~



procedure excel;

var

lh_handle : THandle;

ExcelAppl : variant;



begin

//EXCEL의 CLASSNAME : XLMAIN

//현재 EXCEL이 실행되어있는지 check

lh_handle := FindWindow( 'XLMAIN', nil );



if lh_handle <> 0 then

ExcelAppl := GetActiveOLEObject('Excel.Application')

else

begin

try

ExcelAppl := CreateOLEObject ( 'Excel.Application') ;

except

Application.MessageBox ( '엑셀을 열 수 없습니다' + chr(13) +

'엑셀이 설치되어있는지 확인하십시요' , '알림' , MB_OK ) ;

end;

end;



//Workbook Add

ExcelAppl.Workbooks.add;



//Excel을 보이게함

ExcelAppl.Visible := True ;

SetForegroundWindow( lh_handle );

end;



근데요~~

저는 procedure excel을 quickreport에다 두고 하려고합니다..

quickreport를 열때는

QuickReport1 := TQuickReport1.Create(self);

QuickReport1.Prepare;

QuickReport1.PreviewModal;

QuickReport1.Free;

식으로 엽니다..



근데~~

그냥

QuickReport1.Preview;

로 할때는 자~알 되는거 같은데..

QuickReport1.PreviewModal;

로 하면 '~EOleSysError with message 'CoInitialize를 호출하지 않았습니다.'~'한 메세지가 나옵니다..

PreviewModal로는 불가능한 작업인지요~~?



참고로 procedure excel을 부르는 곳은

procedure TQuickReport1.QuickRepBeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean);

or

procedure TQuickReport1.QuickRepStartPage(Sender: TCustomQuickRep);

입니다..

근데.. 한가지 더 궁금한것은 이 두 procedure가 QuickReport1.Prepare; 할때도 QuickReport1.PreviewModal; 할때도 실행된다는 것입니다..



음.. 너무 궁금합니다..

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

그럼 즐거운 시간들 되세요~~



0  COMMENTS