Q&A

  • ActiveX에서 일반폼(퀵레포트)사용할 수 없나요?
안녕하세요. 어려운 난관에 봉착하여 이렇게 구원의 손길을 간절히 기다려봅니다.



다름이 아니옵고 ActiveX를 사용하여 mainform(ActiveForm)에서



printform을 불러 인쇄하려 하는데 자꾸 access violation이 발생합니다.



일반 Application으로는 에러 안 나거든요.



ActiveX로는 quickreport를 사용할 수 없는 건가요?



mainform의 스트링그리드의 RowCount갯수만큼의 장수를 출력해야 거든요.



폼은 quickreport를 사용하였구요.



소스는 이하와 같습니다.



고수님들 살펴보시고 도와주세요.



-----------------------------------------< main >---



unit mainunit; //mainform의 unit

....

implementation



uses ComObj, ComServ, PrintUnit;

.........



procedure TMainForm.PrintBtnClick(Sender: TObject);

var

PrintForm : TPrintForm;

begin

PrintForm := TPrintForm.Create(self); // print폼을 생성

PrintForm.QRep1.Preview; // preview보여주기

PrintForm.Free;

end;



-----------------------------------------------------< sub >-----



unit PrintUnit; //print할려는 폼의 unit

.....

var

PrintForm : TPrintForm;

i : integer;



implementation



uses mainunit;

........



procedure TPrintForm.DetailBand1BeforePrint(Sender: TQRCustomBand;

var PrintBand: Boolean);

begin

QRLabel3.Caption := MainForm.SG1.Cells[2, i]; // mainform에 있는 StringGrid의

QRLabel4.Caption := MainForm.SG1.Cells[9, i]; // 내용을 각각 label에 넣기

inc(i);

end;



procedure TPrintForm.QRep1BeforePrint(Sender: TCustomQuickRep;

var PrintReport: Boolean);

begin

i := 1;

end;



procedure TPrintForm.QRep1NeedData(Sender: TObject; var MoreData: Boolean);

begin

MoreData := i < MainForm.SG1.RowCount;

end;



0  COMMENTS