2016-04-19 3 views
1

私は最も高度なプログラマーではありませんが、Lazarusを使って作業するのが大好きです。Lazarus Pascal:ウィジェットセットをデバッグする方法(マルチラインキャプション/ヒントの問題)

残念ながら、問題が発生したり、バグ(this onebugreportなど)がありました。私は自分自身をデバッグして可能な修正を提供することで貢献できるかどうかを確認したいと思います"

質問:私はウィジェットセットまたはオブジェクトインスペクタをどのようにデバッグしますか?

短い理由: WindowsまたはLinuxで複数行のキャプションまたはヒントを入力すると、正常に動作します。 MacOS X(Carbon)の下では、オブジェクトインスペクタやウィジェットセットによって改行文字が削除され、これを修正しようとする場所がありません。

私は自分自身を理解することができました。 問題をObject InspectorまたはCarbonウィジェットセットに絞り込んだ。手動でフォーム(lfm)を編集し、コードの実行時に実行し、複数行のキャプションやヒントをWindowsやLinux上でうまく動作させます。 オブジェクトインスペクタで使用されているCarbonウィジェットセットが間違っていると思われます。

私に手を差し伸べるための助けがあれば、非常に感謝しています。

この質問が適切でない、または具体的でない場合はお詫び申し上げます。私はこの問題のデバッグに役立つ情報を探しています。

答えて

1

IDEオブジェクトインスペクタは、実際にはTTIPropertyGridの高度なバージョンです。 あなたがパッケージ上で動作し、簡単なプロジェクトでそれをテストすることができ、それをデバッグする場合:

enter image description here

次にプロジェクトフォーム上のインスペクタをテストするために、単純なハンドラを追加します。

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    TIPropertyGrid1.TIObject := self; 
end; 

パッケージRunTimeTypeInfoControlsのソースを変更すると、サンプルプロジェクトで変更がIDEではなく実行時に表示されます(パッケージは自動的に再コンパイルされます)。

それはバグがプロパティエディタ自体(多分TStringsPropertyEditor)から来ている場合は、PropEdits単位で作業する必要がありますということもありそうです。

対応するエディタクラスのコピーで変更をテストし、テストプロジェクトの初期化セクションに登録してデフォルト(おそらく)を置き換えることができます。、バージョン。

+0

恐ろしい - これは、デバッグを大幅に簡単にしました!ありがとう抽象タイプ!残念ながら、改行文字が削除されている理由はわかりませんでしたが、 "RefreshValueEdit"(lazarus/components/ideintf/ObjectInspector.pp)の呼び出しに絞っています。残念ながら、そこには私が見たり、デバッグすることができる「奇妙な」ものはありません。 – Hanzaplastique

+0

あなたの答えは非常に役に立ちましたので、私はそれを私の質問の答えとしてマークします... Lazarusフォーラムでは、このトピックに関連するスレッドが見つかります(http://forum.lazarus.freepascal.org/index .php/topic、32335.0.html)。 – Hanzaplastique