はじめまして、akki-と申します。
エクセル出力コンポーネント使わせて頂こうと思い、本日ダウンロードし、
サンプルを作ってみたのですが、
SheetNoプロパティを使ってのシートの切替がうまくいきませんでした。
そこで、SetSheetNo関数を拝見しまして、一行コードを追記させて
頂きました。
これにより、サンプルコードも、狙い通り動作するようになりましたので、
ご報告します。
お時間のありますときに、ご確認頂ければ幸いです。
具体的には、PutPosStr関数を使い
シート1に'A',シート2に'B'を出力しようとしましたが、
下記コードを実行すると、
文字列'A','B'ともにシート1に出力されてしまう状態です。
☆サンプル
-----------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
plXLSOut1.SheetNo := 1;
plXLSOut1.Excute;
end;
procedure TForm1.plXLSOut1BeforeEnd(Sender: TObject);
begin
plXLSOut1.PutPosStr( 'A',2,1,'@');
plXLSOut1.SheetNo := 2;
plXLSOut1.PutPosStr( 'B',2,2,'@');
end;
-----------------------------------------------------------------
☆SetSheetNo関数に一行を追記 ( 『 //←☆ ここを追加 』の行 )
-----------------------------------------------------------------
procedure TplXLSOut.SetSheetNo(const Value: Integer);
var
hXlsID: Longint;
szSheetName: array [0..MAX_PATH-1] of Char;
begin
if (Value<>null) and (Value<>FSheetNo) then begin
if FFileCreate then begin
FSheetNo:=Value;
XlsSheetNo(FSheetNo); //←☆ ここを追加
end else begin
if (csDesigning in ComponentState) then exit;
try
FSheetNo:=Value;
if XlsReadBook(PChar(FFilePath),hXlsID) then begin
if XlsCrt3.XlsGetSheetName(Value,szSheetName,SizeOf(szSheetName)) then begin
FNewSheetFlag:=False;
FSheetNo:=Value;
end;
end;
finally
XlsCloseBook(True);
end;
end;
end;
end;
-----------------------------------------------------------------
|