掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
システムメニューの左マウス押下での処理メッセージの流れを監視するには (ID:29395)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>>Sleep(50) は入れないと 動作がおかしくなります >>エキスプローラで ダブルクリックするとプロパティが表示されるようになります 了解です。 ところで、こちらでも、最小化ボタン左マウス押下でも、引き続き遠隔操作可能にできました。 KHE00221さんのソースを検討したところ、これといった決め手を見つけることもできませんでしたが、ただ、最小化ボタン左マウス押下中も、 procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread); の部分が有効で処理ができているのだということは分かりました。私の環境ではTIdPeerThreadについては良くわからないのですが、スレッドなのだろうということで、こちらのスレッドを見直してみました。 考えた結果、最小化ボタンを押して処理が止まっているフォーム内での処理をスレッドで利用したりしていると、いくらスレッドを使ったとしても、その先へ進めないのではと思い至りました。 で、そういう改善を加えた結果、最小化ボタン左マウス押下でも、引き続き遠隔操作可能にできました。 この考え方で、前掲の時刻表示アプリケーションでも、最小化ボタンの左マウス押下した場合に、Label1の時刻表示は停止しますが、Label2の時刻表示は変化し続けるようになりました。 コードにすると簡単なことで、Unit2で procedure TMyThread.UpdateCaption; begin Form1.Label2.Caption:= FormatDateTime('hh:mm:ss',now); //ここを加える Form1.Update; end; procedure TMyThread.Execute; begin while True do begin Application.ProcessMessages; //Synchronizeをやめる //Synchronize(UpdateCaption); UpdateCaption; end; end; とします。Synchronizeをやめる弊害には注意しないといけないと思いますが、これによって、思い通りの機能を実現することができました。 ご親切にお付き合いくださって本当に有難うございました。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.