1

というフォームがありfmTestます。プログラムが終了した場合、 JVCL TJvFormStorageを使用して、フォームの配置、フォームのサイズ、およびフォームの位置を INI ファイルに保存します。

ただし、実行時にWindowsコントロールをタスクバーの近くにのみヘッダー部分が見えるまで下にドラッグしようとすると、それを離してプログラムを終了すると、fmTestプログラムが開始されたときにその位置から開始されませんまた。

StoredPropsメソッドとStoredValuesメソッドを使用するように提案されましたが、TJvFormStorageそのメソッドの使用方法がよくわかりません。

TJvFormStorage がフォームの位置を正しく保存しないのはなぜですか? を使用してフォームの位置を正しく保存する方法はありますTJvFormStorageか?

前もって感謝します。

4

1 に答える 1

0

フォームを閉じたときに、実際に INI ファイルに保存されるのは何ですか?

ひょっとすると、JFS は、極端な値を無視してフォームを時々表示の外に出さないように対策を講じているのかもしれません。INI ロード シーケンスをトレースして、無視される条件を確認してください。対象を絞り込むために、発行やトレースRestorePlacement方法を試してみてください。

これで ini ファイルを引用しましたが、これは正しい行のようです: NormPos=135,734,623,1367 もう一度、前述の呼び出しを追加し、 1 行ずつRestorePlacementトレースします。INI ファイルが読み取られていないか、値が適用されていないことがわかります。

procedure InternalRestoreFormPlacementで終わる可能性が最も高いでしょうJvJVCLUtils.pas。トレースを続けて、データが INI から読み取られない、または割り当てに失敗する場所と理由を確認します。

繰り返しますが、解決できない場合でも、さらに 2 つのオプションがあります。

  1. プロパティ (メソッドではない) の使用StoredPropsは簡単です。JSF コンポーネントをダブルクリックし、フォームの Left/Top/Width/Height プロパティを保存リストに追加し、保存リストからチェックを外しform positionます。

  2. プロパティ (メソッドではない) の使用StoredValuesは簡単です。プロパティをダブルクリックし、1 つの文字列プロパティまたは 4 つの整数プロパティを追加します。コンポーネントOnRestorePlacementOnSavePlacementイベントを使用して、フォームの実際の位置との間で更新します。

PS。ユーザーがディスプレイ、ディスプレイ数、またはディスプレイ解像度を変更した場合、ウィンドウが画面の外に出ないように安全対策を講じてください。

PPS。d:\DelphiProjects\Libs\JediVCL\jvcl\examples\JvAppStorage\*.* として確認できる JvFormPlacement および JvFormStorage サンプル

PPPS。JediVCL の公式フォーラムはhttp://newsportal.delphi-jedi.org/index.phpにあります。

于 2013-03-18T10:22:25.777 に答える