問題タブ [tform]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4580 参照

delphi - DelphiノンブロッキングShowModal

TFormを待たずに表示する方法があるのではないかと思っていました(TForm.Showのようなもの)。しかし、私が望むのは、他のすべてのフォームをブロックすることです(ShowModalのように)

例:

Form1とForm2があります。Form1にはForm2を開く必要があるボタンがありますが、Form1はブロックされていますが、ボタンをクリックすると、Form2を開いた後に表示されたコードが続行されます。

あなたが私が何を意味するか知っていることを望みます。

0 投票する
1 に答える
1498 参照

delphi - TJvFormStorage がフォームの位置を正しく保存しないのはなぜですか?

というフォームがありfmTestます。プログラムが終了した場合、 JVCL TJvFormStorageを使用して、フォームの配置、フォームのサイズ、およびフォームの位置を INI ファイルに保存します。

ただし、実行時にWindowsコントロールをタスクバーの近くにのみヘッダー部分が見えるまで下にドラッグしようとすると、それを離してプログラムを終了すると、fmTestプログラムが開始されたときにその位置から開始されませんまた。

StoredPropsメソッドとStoredValuesメソッドを使用するように提案されましたが、TJvFormStorageそのメソッドの使用方法がよくわかりません。

TJvFormStorage がフォームの位置を正しく保存しないのはなぜですか? を使用してフォームの位置を正しく保存する方法はありますTJvFormStorageか?

前もって感謝します。

0 投票する
1 に答える
1865 参照

delphi - RegisterClass X Extended TForm/EFilerError 'TForm という名前のクラスは既に存在します'

別のユニットで TForm を拡張しました...

そして、このユニット (拡張された TForm を使用) は、これらの拡張機能を適用したいフォームのすべてのユニットで宣言されています...

ただし、これらのユニットの一部には、次のコード スニペットがあります。

しかし、この方法では [EFilerError] 「TForm という名前のクラスは既に存在します」というメッセージが表示されます。

ここ数日、この競合を解決/回避する方法を探していましたが、成功しませんでした...

誰もこれを経験したことがありますか...?または、この問題の理由を明らかにすることはできますか?


問題は、このユニットを拡張形式で 2 つのプロジェクトに既に実装していることです。

ちょうど今、3 番目のプロジェクトでは、インスタンス化されずにフォーム クラスが呼び出されます...そして、拡張クラス フォームを次のように変更することはできません。

TForm = クラス(Forms.TForm)

に:

TStyleForm = クラス(Forms.TForm)

...


私が必要とするのは次のようなものです:

しかし、ユニットでは次のような宣言を行うことはできません:

今はポインタです...

0 投票する
1 に答える
166 参照

delphi - Delphi TForm クラスで「public」だけでエラーが発生する

これは、デルファイ形式に関する通常のコードです。

public キーワードを追加するだけです。

実行時エラーを取得します。

私はこれについて非常に混乱しています。

0 投票する
5 に答える
7498 参照

delphi - 読み込み中にフォームを無効にする Delphi

私のアプリケーションには、データベースにいくつかの画像をロードする機能を備えたメインフォームがあります。画像の読み込み中に、進行状況インジケーター (bsNone 境界線スタイル) を使用してフォームを表示したいと考えています。

しかし、ShowModalでフォームを表示すると、メインフォームの実行が止まってしまうので、それができません。

Show を呼び出すと、ユーザーは他のすべてのフォーム コンポーネントにアクセスできますが、写真が完全に読み込まれていない間は危険です。

ロードが完了していない間、メインフォームのすべてを無効にする方法を見つける必要があります。

どうすればそれが可能か、私にアドバイスしてください。

0 投票する
1 に答える
285 参照

opengl - VCL コンポーネントによるアニメーション (WM_PAINT)

問題は、TForm コンポーネント (ボーダー、キャプションなど) でマウス ボタンをクリックすると、OpenGL アニメーションが停止することです。マウスボタンを放すとすぐにアニメーションが始まります。

フォームのサイズ、便利なリンクの変更中にアニメーションを停止しないようにするにはどうすればよいですか?

0 投票する
2 に答える
431 参照

delphi - 完全に初期化されていないウィンドウを非表示にすることはできません

例外を引き起こすこの厄介な状況があります。私は問題を見つけましたが、解決策を実装するのは今のところ難しいです。

私たちのアプリケーションでは、ユーザーが一定時間アクティブでない場合、セキュリティ タイムアウト手順が開始され、ユーザーにパスワード入力ボックスが表示されます。

ただし、FormShow()イベント中に何らかの理由でフォームにメッセージ ボックスが表示された場合 (ここで注意する必要があります。formShowイベントの実行はまだ完全には完了していません)、ユーザーはダイアログ ボックスの [OK] ボタンをクリックしないことにしました。ある時点で、セキュリティ コードが作動し、すべてのフォームを非表示にして、パスワードを要求できるようにします。このシナリオでは、 「OnShow または OnHide で Visible を変更できません」という例外がトリガーされます。

セキュリティ コードは、すべてのフォームを使用してループし、個別に使用TScreen.FormCountして非表示にします。TForm(TScreen.Forms[ii]).Hideこのフォームはまだロード手順を完全に完了していないと思うので、手順を非表示にすると例外が発生します。

テストを行ったところ、FormShow() イベントの実行後にメッセージ ボックスを表示すると、セキュリティ コードは問題なく機能し、すべてのウィンドウが問題なく非表示になりました。

Screen.Forms[ii].Visible、Screen.Forms[ii].Active など、フォームを非表示にする前に「if チェック」を実行するために、いくつかのプロパティとウィンドウ メッセージ チェックを試しましたが、今のところうまくいきません。上記のフォームは表示されますが、アクティブであるという保証はありません。アクティブな場合、他の非アクティブなフォームを非表示にするにはどうすればよいですか。だから私の質問は、どのプロパティまたは Windows メッセージが、フォームが完全に読み込まれたこと、または少なくともFormShowフォームに存在する特定のフォームのイベントを過ぎたことを示すTScreen.Formsでしょうか?

私が求めていることへの回答が必要です。セキュリティ コードに実装する必要がある一般化されたソリューションが必要です。この巨大なアプリケーションにある 1,000 を超えるフォームを調べて、個別に解決策を見つけようとすることはできません。これらのフォームには検証/警告ロジックが存在します。

ありがとうございました