2016-04-27 11 views
1

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) 

この構文を使用してキャストしようとしています。どんな助けでも大歓迎です。

+0

親は本当にTFormですか? "is"でテストすると、どうなりますか? –

+0

申し訳ありませんが、私はそれを残しました、私は最初に親がTフォームであるかどうかをチェックしています、そうでなければ正しく動作している他のロジックを実行します – SmeTheWiz

+2

@DavidM: 'Parent'が本当に'TForm'、' as'演算子は例外を発生させます(Android上で壊れていない限り)。 –

答えて

0

ベルリン10.1をインストールし、環境を一からセットアップする(パッケージのインストール、ライブラリパスの更新など...) 新しいバージョンのDelphiを使用してこれが修正されたかどうか、私は私のパッケージを再インストールしていました。