お世話になります。
Delphi2005 UP3 + SqlServer2005 にて開発を行っています。
クライアントからSQL文を発行してサーバーモジュールにて処理を
おこないデータを取得しているのですが、その間の時間が長いと
クライアントアプリ側のフォーム上のテキストボックスやボタンが
白抜け状態になってしまいます。
回避は出来るのでしょうか?
皆さんのお力をお借りしたくお願いします。
初心者の私がどうしても表示させたいと思うならば、
TTimerを使ってOnTimerで Self.Refresh; を行うかと思います。
中級者の方であれば直ぐに思いついちゃうと思いますが、一応念のため。
cocomoさん、こんにちは。
TTimerでは残念ながら解決できなかったため、こちらに質問させて
頂きました。
こういった現象がWindowsXP のゴーストウィンドウ機能ってことで
しょうか?
ちなみに、アプリケーションの互換モードをWindows2000にすれば
解決できるのはわかっているのですが、今回XP風の画面にするため
に(こればかりではないですが)Delphi5から2005に修正している
次第です。
バッジョさんこんにちは
解決策でなく報告ですが
Delph7 Ent + BDE + Interbase7.1 + WinXP(XPスタイル) Interbase で高負荷をかけた場合
TTimer,TThread どちらもRefresh反応してくれないですね。
TThreadをもうちょっと改良すればいけそうな気がしますがわかりません。
Delphi2005,2007は持っていますが、環境ができていない為、お役に立てなくてすみません。
単に長時間ウィンドウメッセージに応答しないため、
「応答無し」状態になってるのではないでしょうか。
そうであればスレッドを立てるか、Application.ProcessMessages
を使うのが普通だと思います。
TThread、Application.ProcessMessages どちらも難しそうですね。
検索したら
http://d.hatena.ne.jp/Kazzz/200503
[.NET]WindowsXPによるゴーストウインドウを抑制する
というのがありましたがどうでしょう?C言語ですが。
多分もう検索済みだと思いますが。
cocomoさん、お世話になります。
”[.NET]WindowsXPによるゴーストウインドウを抑制する”ですが
うまく制御できませんでした。.NETではなくVCLアプリなのでその
関係なのかなと思っています。(ちなみに海外のDELPHIサイトに
pascalでの記述がありました)
かみづさん、お世話になります。
サーバーアプリにSQLやストアドなどを実行させて、結果を待つ間の
ことなのでApplication.ProcessMessagesでは無理でした。
Delphi2005だったので.NET開発かなと思ってました。
ちょっと難しい問題かもしれないので
http://www.users.gr.jp/content/ml.aspx
でDelphiのMLに参加し、質問してみてはどうでしょう?
こことDelphiMLのマルチポスト気味になってしまいますが。
過去ログを参照したいだけなのであれば
http://www2.big.or.jp/~osamu/Delphi/
が参考になります。
cocomoさん、ありがとうございます。
一応こちらでは解決とさせて頂き、MLに参加させて頂いて
再度質問させて頂こうと思います。
ツイート | ![]() |