掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
OleContainerのフォーカス (ID:25648)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
type TOleContainerEx = class(TOleContainer) private function ShowToolBar: HRESULT; procedure CMUIDeactivate(var Message: TMessage); message CM_UIDeactivate; constructor CreateClone(Origin: TControl); end; constructor TOleContainerEx.CreateClone(Origin: TControl); var BinStream: TStream; begin Create(Origin.Owner); BinStream := TMemoryStream.Create; try with TWriter.Create(BinStream, $800) do try Root := Origin.Owner; WriteSignature; WriteComponent(Origin); WriteListEnd; finally Free; end; with TReader.Create(BinStream, $800) do try Root := Origin.Owner; Parent := TControl(Origin).Parent; Origin.Free; Position := 0; BeginReferences; try ReadSignature; ReadComponent(Self); FixupReferences; AutoActivate := aaGetFocus; // クリックでActive finally EndReferences; end; finally Free; end; finally BinStream.Free; end; end; procedure TOleContainerEx.CMUIDeactivate(var Message: TMessage); begin exit; // ナンもせーへん end; function TOleContainerEx.ShowToolBar: HRESULT; var View: IOleDocumentView; Doc: IOleDocument; begin result := ERROR; if Self.OleObjectInterface.QueryInterface(IOleDocument, Doc) <> 0 then Exit; if Doc = nil then Exit; if Doc.CreateView(Self, nil, 0, View) <> 0 then Exit; View.UIActivate(TRUE); result := NOERROR; end; procedure TForm1.FormCreate(Sender: TObject); begin TOleContainerEx.CreateClone(OleContainer1); OleContainer1.CreateObjectFromFile(ExtractFilePath(Application.EXEName) + 'ほにゃ.xls', False); OleContainer1.Visible := True; OleContainer1.DoVerb(ovShow); OleContainer1.SetFocus; TOleContainerEx(OleContainer1).ShowToolBar; // ExcelToolbar隠れとったら表示 end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.