2017-08-14 8 views
0

DelphiのMediaLibraryに問題があります。MediaLibrary Delphiタイプキャストエラー

私は私のメインフォームに以下のコードを作る:私は自分の携帯電話でこれを実行すると

unit uPrincipal; 

interface 

uses 
    System.SysUtils, System.Types, System.UITypes, System.Classes, 
    System.Variants,FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, 
    FMX.Dialogs, 
    FMX.Controls.Presentation, FMX.MultiView, FMX.Objects, FMX.Layouts, 
    FMX.StdCtrls, System.Actions, FMX.ActnList, FMX.StdActns, 
    FMX.MediaLibrary.Actions, FMX.MediaLibrary, FMX.Platform, System.Messaging; 

type 
    TfmPrincipal = class(TForm) 
    Layout1: TLayout; 
    mvMenu: TMultiView; 
    rctMenuPrincipal: TRectangle; 
    rctMenuTop: TRectangle; 
    rctMenuBody: TRectangle; 
    rctOpHome: TRectangle; 
    rctBodyPrincipal: TRectangle; 
    tbPrincipal: TToolBar; 
    StyleBook1: TStyleBook; 
    sbMenu: TSpeedButton; 
    sbPhoto: TSpeedButton; 
    ActionList1: TActionList; 
    TakePhotoFromLibraryAction1: TTakePhotoFromLibraryAction; 
    Image1: TImage; 
    TakePhotoFromCameraAction1: TTakePhotoFromCameraAction; 
    procedure TakePhotoFromLibraryAction1DidFinishTaking(Image: TBitmap); 
    private 
    { Private declarations } 
    public 
    { Public declarations } 
    end; 

var 
    fmPrincipal: TfmPrincipal; 

implementation 

{$R *.fmx} 
{$R *.LgXhdpiPh.fmx ANDROID} 
{$R *.NmXhdpiPh.fmx ANDROID} 
{$R *.iPhone.fmx IOS} 

uses uLogin, uTeste; 

procedure TfmPrincipal.TakePhotoFromLibraryAction1DidFinishTaking(
    Image: TBitmap); 
begin 
    Image1.Bitmap.Assign(Image); 
end; 

end. 

、私はSpeedButtonをクリックすると、私は、「無効なクラス型キャスト」エラーメッセージが表示されます。

TActionListTakePhotoFromLibraryAction1を追加し、SpeedButton用にActionと設定しました。

なぜこのエラーが発生するのかわかりません。

答えて

2

あなたのバージョンのDelphiではバグです。

回避策の1つはTSpeedButtonの代わりにTButtonを使用することです。

別の回避策は、それをTargetパラメータとして異なる制御を渡し、SpeedButtonからAction割り当てを削除して、アクションのExecuteTarget()メソッドを呼び出すために、ボタンのOnClickイベントを使用することです。