ToolBarの位置を保存するには?


でんでんこ  2006-04-19 00:00:47  No: 21105

DelphiのIDEのメニューのように、CoolBarの上に複数のToolBarを
置いたフォームを作成します。

ToolBarはドラッグして自由に移動できますので、この位置をini
ファイルに保存し、次回起動時に先ほど移動した位置に戻したいと
考えていますが、普通にToolBarのTop,Left,Widthなどを保存した
だけでは上手く復元できないようです。

ToolBarの位置の保存・復元はどのようにすればよいのでしょうか?


でんでん  2006-04-19 02:57:05  No: 21106

先の質問の仕方が分かりにくいかもしれなかったので、
もう少し具体的に書かせていただきます。

例えば、CoolBarの上に下記のようにToolBarが配置してある状態
(以下、Aの状態と呼びます)で、

[ToolBar1][ToolBar2][ToolBar3]
[ToolBar4][ToolBar5          ]

各ToolBarをマウスでドラッグして下記のように移動・リサイズ
させたとします。(この状態をBの状態と呼びます)

[ToolBar3    ][ToolBar4      ]
[ToolBar5][ToolBar2][ToolBar1]

この状態の各ToolBarのTop , Left, Width などの数値をINIファイルに
保存します。
一旦アプリケーションを終了させ、次回起動時(FormCreate時)に
先ほど保存したINIファイルのデータを基に、Aの状態からBの状態に
移動・リサイズさせた状態で表示したいと思っています。

DelphiやExcelではうまくこれが実現できているようなので、実現方法は
あるはずなのですが、各ToolBarの座標情報を保存しただけではうまく
復元できませんでした。
CoolBarやBandの値も考えてみたのですが、それらしい値は見つからず、
途方にくれています。

もしどなたかアイディアだけでもお貸しいただけると助かります。


f  2006-04-22 01:00:50  No: 21107

私はいつもControlBarなので、勘ですが・・・。

CoolBarのWidthとHeightは復元しているのでしょうか。

そうでないなら、CoolBarのAutoSizeをFalseにしてから
CoolBarのWidthとCoolBar.Heightを設定して
その後に、ToolBarのLeft,Top,Width,Heightを設定してみるとか。

必要があれば、最後に CoolBarのAutoSizeをTrueに戻す。
いかがでしょう。


Hachigo  2006-05-03 00:55:22  No: 21108

もう遅いかも知れませんが、こんな感じでどうでしょう?

・読込時
    for ii:=0 to CoolBar.Bands.Count-1 do begin
      iNo := IniFile.ReadInteger(Section, 'CoolBarID' + IntToStr(ii), ii);
      CoolBar.Bands.FindItemID(iNo).Index := ii;
      CoolBar.Bands[ii].Break := IniFile.ReadBool(Section, 'CoolBarBreak' + IntToStr(ii), True);
      CoolBar.Bands[ii].Width := IniFile.ReadInteger(Section, 'CoolBarWidth' + IntToStr(ii), 765);
    end;

・書き込み時
    for ii:=0 to CoolBar.Bands.Count-1 do begin
      IniFile.WriteInteger(Section, 'CoolBarID'+ IntToStr(ii), CoolBar.Bands[ii].ID);
      IniFile.WriteBool(Section, 'CoolBarBreak'+ IntToStr(ii), CoolBar.Bands[ii].Break);
      IniFile.WriteInteger(Section, 'CoolBarWidth'+ IntToStr(ii), CoolBar.Bands[ii].Width);
    end;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加