差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

softwares:root:tgclasses [2018/02/25 15:23] – 作成 kobayashsoftwares:root:tgclasses [2018/04/15 16:23] (現在) kobayash
行 34: 行 34:
    AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 10, 10, 2, 2));    AddFrame(hframe, new TGLayoutHints(kLHintsExpandX, 10, 10, 2, 2));
 </code> のように書く。TGLabel を new するとき、 this ではなく hframe とするので注意。 </code> のように書く。TGLabel を new するとき、 this ではなく hframe とするので注意。
 +
 +==== TGFileBrowser ====
 +  * void TGFileBrowser::DoubleClicked(TGListTreeItem *item, Int_t /*btn*/) {} の注意点
 +    * TGFileBrowser の TF2 などのヒストグラム (名前を h4 とする) の TGListTreeItem をダブルクリックしたとき、以下のエラーが出る時がある。<code>
 +Error: Symbol h4 is not defined in current scope  (tmpfile):1:
 +Error: Failed to evaluate h4->Draw("colz")
 +*** Interpreter error recovered ***
 +</code> これは、TGFileBrowser::DoubleClicked の問題と言えるかもしれないが、.root.mimes を <code>
 +[root/th2]
 +pattern = TH2[CSFDI]
 +icon = h2_s.xpm h2_t.xpm
 +action = ->Draw("colz")
 +</code> と編集し、さらに現在いるディレクトリからヒストグラム h4 が見えない (すなわち、h4 が違う TFile や TDirectoryFile にいて、現在のディレクトリで gApplication->ProcessLine(act.Data()) (ただし、act.Data() = "h4->Draw(\"colz\");") を実行しても h4 を参照できない) ときに生じるエラーである。(TH2 の action を .root.mimes から gClient->GetMimeTypeList()->GetAction(obj->IsA()->GetName(), action) という関数で取得し、"->Draw()" という文字列が action 内に含まれるかを act.Contains("->Draw()") という関数で判別している。) 解決方法としては、.root.mimes を編集することを諦め、<code>
 +[root/th2]
 +pattern = TH2[CSFDI]
 +icon = h2_s.xpm h2_t.xpm
 +action = ->Draw()
 +</code> というようにデフォルトに戻すか、TGListTreeItem をクリックした際に発生する DoubleClick のシグナルをフックし、current directory (gDirectory) を変更し h4 を見えるようにする。必要であれば、TGFileBrowser.cxx を書き換えても良い。もしこれがただのバグであれば、ROOT 開発チームに要望を出す。
  
softwares/root/tgclasses.1519539801.txt.gz · 最終更新: 2018/02/25 15:23 (外部編集)
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0