Delphi Programming / Object Pascal
[掲載 2013年11月14日] [更新 2013年11月14日] エクセル操作フォームEx |
エクセル操作フォームEx 参考コード類
ウィンドウ枠の固定と分割 |
動作確認等 |
Windows 7 U64(SP1) + Delphi XE Pro + Excel 2010 |
ウィンドウ枠の固定と分割と,その解除の参考コードです.
ウィンドウ枠の固定は,TStringGrid では,固定列と固定行の設定に相当します.TStrinGrid では固定列と固定行のデータ表示をコードで制御する必要がありますが,エクセルは自動で制御します.
ウィンドウの分割は,各々のウィンドウが独立してスクロールすることができるようになります.
枠の固定または分割状態の時に,新たに枠の固定や分割をする場合は,一度設定を解除しないと,予期しない結果となることがあります. |
|
図1
最初のボタンをクリック
- 現在アクティブなセルの左側の列と上の行が固定列,固定行になる
|
|
図2
再度最初のボタンをクリック
|
|
図3
[ウィンドウ枠の固定] クリック
|
|
図4
[ウィンドウの分割] クリック
|
|
図5
分割位置を変更
|
リスト1
ウィンドウ枠の固定と分割操作用の参考コード |
//=============================================================================
// フォームを表示する時の処理
//=============================================================================
procedure TplExcelFormEx2.FormShow(Sender: TObject);
begin
//フォーム表示開始時に開くブック名
xlfBookFullPath := 'テストブック.xls';
//グリッドライン等を表示
xlfDisplayGridLines := True;
xlfDisplayWorkBookTabs := True;
xlfDisplayHeadings := True;
//元のフォームのOnShowを実行
inherited;
end;
//=============================================================================
// フォームを閉じる時の処理
//=============================================================================
procedure TplExcelFormEx2.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
xlfBookSaved := True;
inherited;
end;
//=============================================================================
// ウィンドウ枠の固定(トグル)
// 現在選択中のセルの左例と上の列を固定列と固定行にする
//=============================================================================
procedure TplExcelFormEx2.Button1Click(Sender: TObject);
var
pType : OleVariant;
pID : OleVariant;
pTag : OleVariant;
pVisible : OleVariant;
begin
pType := EmptyParam;
pID := 443;
pTag := EmptyParam;
pVisible := EmptyParam;
try
xlfExcelApp.CommandBars.FindControl(pType, pID, pTag, pVisible).Execute;
except
end;
end;
//=============================================================================
// ウィンドウ枠の固定
// コードでセルを指定
//=============================================================================
procedure TplExcelFormEx2.Button2Click(Sender: TObject);
begin
//セルを選択.このセルの左側の列と上の行が固定列と行になる
xlfActiveCell := 'B3';
xlfExcelApp.ActiveWindow.FreezePanes := True;
end;
//=============================================================================
// ウィンドウ枠固定の解除
//=============================================================================
procedure TplExcelFormEx2.Button3Click(Sender: TObject);
begin
xlfExcelApp.ActiveWindow.FreezePanes := False;
end;
//=============================================================================
// 指定行と列でウィンドウ分割
//=============================================================================
procedure TplExcelFormEx2.Button4Click(Sender: TObject);
begin
xlfExcelApp.ActiveWindow.SplitRow := 8;
xlfExcelApp.ActiveWindow.SplitColumn := 4;
end;
//=============================================================================
// ウィンドウ分割の解除
//=============================================================================
procedure TplExcelFormEx2.Button5Click(Sender: TObject);
begin
xlfExcelApp.ActiveWindow.SplitRow := 0;
xlfExcelApp.ActiveWindow.SplitColumn := 0;
end;
//=============================================================================
// ウィンドウ枠の固定と分割を解除
//=============================================================================
procedure TplExcelFormEx2.Button6Click(Sender: TObject);
begin
xlfExcelApp.ActiveWindow.FreezePanes := False;
xlfExcelApp.ActiveWindow.SplitRow := 0;
xlfExcelApp.ActiveWindow.SplitColumn := 0;
end;
|