質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Delphi

DelphiはPascalを拡張してオブジェクト指向を導入したWindows, OS X,iOS,Androidのネイティブアプリケーションを開発するための言語です。旧称はObject Pascal。開発用IDE「Delphi」にあわせ現在の名前に改称されました。

Q&A

0回答

3148閲覧

AniIndicatorのアニメーションが動かない

Yasuhiro_S

総合スコア6

Delphi

DelphiはPascalを拡張してオブジェクト指向を導入したWindows, OS X,iOS,Androidのネイティブアプリケーションを開発するための言語です。旧称はObject Pascal。開発用IDE「Delphi」にあわせ現在の名前に改称されました。

0グッド

0クリップ

投稿2017/02/21 00:32

###実現したいこと
Delphi Berlin のFiremonkeyにてスケジュール管理アプリを作っています。
DB接続にて処理に時間がかかるので、画面がフリーズしていないこと(処理中であること)をユーザに伝えたい為、AniIndicatorを使って画面上に円のインジケータを表示させたいです。

###発生している問題

DB接続処理中にて、AniIndicatorは表示されますが、円のインジケータが止まって回転しません。Android,iPhone両方とも同じ事象が発生しています。

###該当のソースコード

//スケジュール取得処理 procedure TForm1.Button2Click(Sender: TObject); var loc_sql_query : String; loc_i : Integer; loc_j : Integer; begin AniIndicator1.Visible := True; AniIndicator1.Enabled := True; Application.ProcessMessages; loc_sql_query := SELECT * ... //割愛 //DB接続 ClientModuleUnit1.ClientModule1.ServerMethods1Client.Set_sql_query_temp(loc_sql_query); ClientModuleUnit1.ClientModule1.cds_QueryTemp.Close; ClientModuleUnit1.ClientModule1.cds_QueryTemp.Open; ClientModuleUnit1.ClientModule1.cds_QueryTemp.First; //StringGridの描画設定 loc_j := 0; StringGrid1.RowCount := ClientModuleUnit1.ClientModule1.cds_QueryTemp.RecordCount; while not ClientModuleUnit1.ClientModule1.cds_QueryTemp.Eof do begin loc_i := 0; while loc_i < 2 do begin if loc_i = 0 then begin //開催日時 StringGrid1.Cells[loc_i,loc_j] :=ClientModuleUnit1.ClientModule1.cds_QueryTemp.FieldByName('START_DATE_TIME').AsString; end else begin //サービス名 StringGrid1.Cells[loc_i,loc_j] :=ClientModuleUnit1.ClientModule1.cds_QueryTemp.FieldByName('SERVICE_NAME').AsString; end; INC(loc_i); end; INC(loc_j); ClientModuleUnit1.ClientModule1.cds_QueryTemp.Next; end; AniIndicator1.Visible := False; AniIndicator1.Enabled := False; Application.ProcessMessages; end;

※以下、画面のViewです。
イメージ説明

###試したこと

TThread.CreateAnonymousThread を使い、別スレッドにて処理を行ってもみましたが実現できませんでした。

TThread.CreateAnonymousThread( procedure() begin try TThread.Synchronize(TThread.CurrentThread,procedure begin AniIndicator1.Visible := True; AniIndicator1.Enabled := True; Application.ProcessMessages; //上記と同じく、DB接続とStringGridへの描画 AniIndicator1.Visible := False; AniIndicator1.Enabled := False; Application.ProcessMessages; end); finally end; end).Start; end;

###補足情報
<開発環境>
Delphi 10.1 Berlin update2 (Win-64bit)
DataSnapサーバを用いてDB接続を実施
DataBase:FireBird
<検証端末>
Android (4.4.2)
iPhone (iOS 10.2)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問