問題タブ [vcl-styles]

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 投票する
2 に答える
908 参照

delphi - VCL スタイルによる TOpenDialog と TOpenPictureDialog のスキニング

TOpenDialog と TOpenPictureDialog を VCL スタイルでスキンすることはできますか?

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

delphi - Delphi で VCL コンポーネントを 1 つだけスタイリングする

コンポーネントのカスタム スタイルを無効にできることはわかっていますが、1 つのコンポーネント クラスだけのスタイルを有効にするにはどうすればよいでしょうか? たとえば、フォーム全体とそのすべてのコンポーネントをスキンなしのままにして、TButton のみをスキンします。この画像のように。

ここに画像の説明を入力

0 投票する
0 に答える
425 参照

delphi - 角が丸い VCL スタイル

一部の VCL スタイル (Delphi XE2) は角が丸くなっています。たとえば、Metro Blue (丸められていない) などの 1 つのスタイルを rounded に変更するにはどうすればよいですか?

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

delphi - VCL スタイルはどこから来たのですか?

私のプログラミング チームでは、全員が Delphi XE2 Professional を使用しています。さまざまなコンピューターでさまざまな数の VCL スタイルが利用できることがわかりました。

VCL スタイルはどこから来たのですか? ある Delphi インストールから別のインストールにスタイルを移動する場合、注意が必要ですか?

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

delphi - 実行時にDelphiスタイルを変更しても、ファイルをフォームにドロップすることはできません

Windowsからファイルをドロップできるようにする次の手順があります。ドロップは問題なく機能しますが、実行時に(TStyleManager.TrySetStyle(styleName))を使用してスタイルを変更すると、フォームはドロップを受け入れなくなります。ここで正確に何が問題になっていますか?

..。

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

delphi - Delphi TSplitter flickering issue

I am using Delphi with VCL styles enabled and I would like to change the color of the TSplitter for my form. I override TSplitter.Paint in an interposer class to paint a darker color than the default VCL styles cBtnFace color, but there is significant flickering on the form when resized. Is there a way to remove this flickering?

I've tried these things to try and reduce the flickering, but none have worked:

  1. Disabling VCL styles (TSplitter.StyleElements := []).

  2. Changing the VCL Styles Bitmap Style Designer's object element for "Splitter," but modifying this object element doesn't change the splitter's appearance.

  3. Trying to process the WM_ERASEBKGND message on TControl objects, but I was unable to get the procedure to be called in my interposer class.

    /li>

Any other ideas for getting rid of the flickering on a TSplitter? There's no DoubleBuffer property for TSplitter or anything like that from what I can tell.

UPDATE

Unfortunately, I can't share the codebase, but I can tell you that this is the way the application UI is setup when the TSplitter flickers:

There is also a toolbar and a main menu at the top of the form, but the rest of the UI components are set to alClient (or OnResized to fill the space).

I assumed that since the BackgroundPanel is behind the LeftPanel, TSplitter, and RightPanel (i.e, Control -> Send to Back), the DoubleBuffered = True and ParentBackground = False on the BackgroundPanel would help reduce/remove the flicker from any components on an immediate UI layer in front of it (i.e, the TSplitter). But, this doesn't seem to be the case.

Perhaps I'll try placing a TPanel as a parent of LeftPanel, TSplitter, and RightPanel and set its DoubleBuffered = True and ParentBackground = False. I'll have to try that later and get back. So, it would look like this:

Lastly, I should note that double buffering the TForm substantially slows down the UI when resizing (a black trail on the right of the window), not when doing other UI things when the app is not resizing.

UPDATE 2

Unfortunately, while my approach above (creating a background parent TPanel) fixed the flickering on the TSplitter, it also caused other weird UI issues, perhaps some of which @David Heffernan alluded to in the comments. For now, I've just left the flickering issue, since the splitter is only 1px wide and only flickers on width + height resizing.

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

delphi - Delphi XE2、ウィンドウ ハンドルを再作成する vcl スタイル

実行時に新しいスタイルを適用した後、私のアプリケーションの MainForm は新しいウィンドウ ハンドルを作成します。これを停止するか、ハンドルを再割り当てする方法はありますか?

'システムエラー。コード: 1400。無効なウィンドウ ハンドル'

新しいハンドルを強制的に割り当てるプロセスを操作する方法はありますか?

私はこれを次のようにして解決しました:

私のメイン フォームは、決して表示されない目に見えない「ヘルパー」フォームを作成しましたが、それにはビジュアル コンポーネントが含まれています。これらのビジュアル コンポーネントを再描画しようとしたときにハンドル エラーがスローされたため、代わりに関連するコンポーネントをオブジェクトに置き換えました (注はこのコードを最初に書いたわけではありません)。

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

delphi - 実行時にスタイルを検出して変更するにはどうすればよいですか?

Delphi XE3 以下にアプリケーション用のスタイルがあるのは素晴らしいことです。しかし、必要な数のスタイルをマークして、デフォルトとして使用するスタイルを選択できることに気付きました。

これは、スタイルを自由に変更できることを意味しますが、コードでそれを行うにはどうすればよいでしょうか? また、ソフトウェアで使用するスタイルをユーザーに選択させるにはどうすればよいでしょうか?