名前 題名 ▼ Mr.XRAYさん > > (1) サンプルプログラム集の[016]のコード類を参考に > > を参考に非常に「姑息」な方法を試してみました. > [印刷プレビュー]ボタンの上にTPanelをかぶせてしまう方法です. > ただし,他のウィンドウを前面にして,また戻ると表示されていまいます. > > //============================================================================= > // 継承フォームの[印刷]ボタン > // エクセルの[印刷]ダイアログを表示する > //============================================================================= > procedure TplExcelFormEx2.btnPrintClick(Sender: TObject); > var > pType : OleVariant; > pID : OleVariant; > pTag : OleVariant; > pVisible : OleVariant; > begin > MyPanel := TPanel.Create(Self); > try > pType := EmptyParam; > pID := 4; > pTag := EmptyParam; > pVisible := EmptyParam; > > try > xlfExcelApp.CommandBars.FindControl(pType,pID,pTag,pVisible).Execute; > except > end; > finally > FreeAndNil(MyPanel); > end; > end; > > //============================================================================= > // このフォームのWndProcメソッド > // エクセルの[印刷]ダイアログを表示したら,表示前に作成したMyPanel(TPanel)を > // [印刷プレビュー]ボタンの上に配置して使用不可にする姑息な方法 > //============================================================================= > procedure TplExcelFormEx2.WndProc(var Message: TMessage); > > //--------------------------------------------------------------------------- > // ウィンドウハンドルからウィンドウのタイトルを取得 > //--------------------------------------------------------------------------- > function GetWindowTextStr(hWindow: HWND): String; > var > Buffer : Array[0..MAX_PATH-1] of char; > begin > Result := ''; > if (GetWindowText(hWindow, Buffer, MAX_PATH)<>0) then begin > Result := Buffer; > end; > end; > > //----------------------------------------------------------------------------- > var > DialogWnd : HWND; > ARect : TRect; > APos : TPoint; > begin > inherited; > > if Message.Msg = WM_ACTIVATE then begin > DialogWnd := Message.LParam; > if GetWindowTextStr(DialogWnd) <> '印刷' then exit; > > GetWindowRect(DialogWnd, ARect); > APos.x := ARect.Left; > APos.y := ARect.Bottom; > > MyPanel.Width := 150; > MyPanel.Height := 30; > MyPanel.BevelOuter := bvNone; > MyPanel.ParentWindow := DialogWnd; > > APos := MyPanel.ScreenToClient(APos); > > MyPanel.Left := APos.X; > MyPanel.ToP := APos.Y - MyPanel.Height; > end; > end; > > プロジェクトのダウンロード > http://mrxray.on.coocan.jp/Delphi/zipothers/DD_ExcelPrintDialog_NonPreviewButton.zip GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link