TFmxObjectをTFormにキャストし、うまく動作する高さと幅のプロパティにアクセスするコードスニペットがあります。 AControlは標準のTControlで、ParentプロパティはTfmxObjectです。編集:私は最初にISキーワードで親が実際にTFormであることを確認しています。予期せぬ結果を返す、キャストされたオブジェクトのプロパティへのアクセス
WindowsではLPar:=TControl.Create(AControl);
LPar.Height:=(AControl.Parent As TForm).Height;
LPar.Width:=(AControl.Parent As TForm).Width;
、このコードは、すぐに私がターゲットプラットフォームを変更すると、私は期待する高さと幅の値を返し、LPar.HeightとLPar.Width(また、標準のTControl)に割り当てますが、デバイス上でUSBデバッグを使用してデバッグする場合、割り当ては実際の値ではなく、6.2645644 ... + 036(高さと幅の両方が同じ無効値を持つ)のようなものです。
TFmxObjectをTFormとしてキャストすることに問題があるのかどうかわかりません。本当にどこからトラブルシューティングを開始するのかは分かりません。私は地元のTFmxObjectにAControl.Parentを割り当て、その後、ローカル変数(同じ結果)にキャストを実行しようとしましたし、私も運と同様
TForm(AControl.Parent)
この構文を使用してキャストしようとしています。どんな助けでも大歓迎です。
親は本当にTFormですか? "is"でテストすると、どうなりますか? –
申し訳ありませんが、私はそれを残しました、私は最初に親がTフォームであるかどうかをチェックしています、そうでなければ正しく動作している他のロジックを実行します – SmeTheWiz
@DavidM: 'Parent'が本当に'TForm'、' as'演算子は例外を発生させます(Android上で壊れていない限り)。 –