問題タブ [tlabel]

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 に答える
779 参照

delphi - グラフィックを TLabel に追加する際の問題

TLabel から継承されたコンポーネントを Delphi で作成しようとしており、TLabel.Paint にいくつかのカスタム グラフィックが追加されています。グラフィックをテキストの左側に配置したいので、GetClientRect をオーバーライドしました。

このソリューションには、解決したい大きな問題があります。コントロールの「グラフィック領域」をクリックすることはできず、ラベル領域のみをクリックすることはできません。キャプションが空の文字列の場合、デザイナーでコンポーネントをクリックしても選択できません。何か案は?

0 投票する
4 に答える
12954 参照

delphi - TLabelをDelphiのハイパーリンクのように動作させるにはどうすればよいですか?

TLabelをDelphiのハイパーリンクのように動作させるにはどうすればよいですか?

注:下位互換性の問題があるため、TLinkLabelの使用には興味がありません。

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

delphi - TLabelのキャプションがクリップされている(つまり、省略記号を使用して描画されている)かどうかをプログラムで判断するにはどうすればよいですか?

TLabelwithをにEllipsisPosition設定していてepEndEllipsis、テキストが現在クリップされているかどうかを確認できるようにする必要があります。テキストを表示するために必要な面積を自分で計算し、それをラベルの実際の寸法と比較する以外に、これを行うためのより簡単でエレガントな方法を思いついた人はいますか?

実際、フェイルセーフな方法で必要な領域を計算することも、思ったほど簡単ではないようです...たとえば、TCanvas.GetTextHeight改行は考慮されていません。

TCustomLabel.DoDrawText内部的に、DrawTextWまたはフラグDrawThemeTextExとともにDT_CALCRECT使用して、省略記号を使用するかどうかを決定します。そこにはかなり多くのコードが含まれており、そのすべてが宣言されていprivateます。そのコードをすべて複製するだけでは、私の本では「エレガント」とは言えません...

何か案は?

(誰かがDelphiバージョン固有のソリューションを思いついた場合に備えて、私はDelphi 2010を使用しています)

更新1:コードを複製せずにラベルに必要なサイズ計算を実行させるためにTCustomLabel.DoDrawText(lRect, DT_CALCRECT)(単に宣言されている)直接呼び出すことができることがわかりました。protected一時的に設定EllipsisPositionするepNoneか、一時的なラベルインスタンスを完全に使用する必要があります。これは実際にはそれほど悪くはなく、もっと簡単な解決策を誰も考えられないのであれば、私はそれを使うかもしれません。

更新2:別の回答としてソリューションを追加しました。予想よりもかなり単純であることが判明したので、おそらくそれを行うためのより簡単でより良い方法はありませんが、念のため、この質問をもう少し長く開いたままにしておきます。

0 投票する
4 に答える
2176 参照

delphi - TLabelのサイズ変更イベントを作成する方法(TGraphicControl)

TLabelの子孫を作成しようとしています。これは、テキストの幅がラベルの幅を超えると、キャプション全体のヒントを表示します。EllipsisPositionプロパティをepEndEllipsisに設定しましたが、キャプションは最後に省略記号で自動的に短縮されます。それはいいです。

ただし、ヒントを設定するためにテキストが短縮されていることを通知する必要があります。私の場合、これはテキストが変更されたとき(メッセージCM_TEXTCHANGED)とコンポーネントのサイズが変更されたときにのみ発生する可能性があります。

それが私の質問です。TLabelのサイズが変更されたことをどのように通知できますか?そこにアンカーがあるので、フォームに合わせてサイズが変更されますが、別のTLabelの子孫でラップしたいと思います。

このコードは機能しますが、もっと良い方法はありませんか?WM_EXITSIZEMOVEのようなものですが、TGraphicControlで機能しますか?

どうもありがとう :)

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

delphi - デルファイのTPanelで親になっているすべてのTPanelを別のTPanelにコピーするにはどうすればよいですか?

デルファイフォームにTPanelがあります。ボタンを押して他のパネルに配置すると、このTPanelで親になっているすべてのTPanelをコピーしたいと思います。それを行う方法はありますか?ありがとう。

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

delphi - Delphi TLabel のフォントをイタリック体に変更すると、末尾が切り落とされます - なぜですか?

フォントが Arial Regular 16 に設定されたデフォルトの TLabel の簡単なデモを以下に示します。 ここに画像の説明を入力

ボタンがクリックされたときのコードは次のとおりです。

ボタンをクリックすると、最後の文字が切り捨てられます。つまり:

ここに画像の説明を入力

デフォルトでは、TLAbel.AutoSize は true なので、これで問題ないはずです。これは XE であり、Delphi 7 も同じです。これはバグですか?

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

delphi - Delphi TLabelキャプションのタブ文字の動作は定義されていますか?

タブ文字を文字列に入れてから、文字列からラベルのCaptionプロパティを割り当てると、タブ文字は何をしますか?

CR文字はリターンを引き起こします。これは、複数行のキャプションを表示するのに役立ちます。タブ文字は、ある種のタブ操作を実行しているように見えます-この動作が定義されているのか、予測可能であるのか疑問に思います。(動作はDelphiではなくWindowsによって決定されると思います)。

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

delphi - Delphi XE2 TLabel のグローサイズにより、画面の左上隅にグラフィックの問題が発生する

アプリを XE から XE2 に移植して以来、奇妙なバグに気付きました。ide でフォームを開くか、アプリを実行するだけで、画面の左上隅 (フォームの外) に白い四角いボックスが描画されます。マウスまたはウィンドウをホバーすると離れます。これを TLabel まで追跡しました。フォームにドロップして Glowsize を 0 より大きく設定するだけで問題が発生します。

再インストールして最新の XE2 update3 に更新しましたが、問題は引き続き発生します。誰が何が起こっているのか手がかりを持っていますか?

例 1

例 2

ここに画像の説明を入力

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

delphi - MinimizeName で使用する MaxLen パラメーターの取得

Vcl.FileCtrl ユニットの MinimizeName 関数を使用して TLabel に非常に長いファイル名を付けようとしていますが、関数で使用される MaxLen パラメータを取得する方法がわかりません。値をハードコーディングすると、有効な結果が表示されます。しかし、フォームはサイズ変更できるので、動的にしたい=サイズ変更イベントで変更します。

lblLicenseFile.Width // 文字列が長すぎる lblLicenseFile.Width - 10 //文字列が長すぎる Trunc(lblLicenseFile.Width / lblLicenseFile.Font.Size) //文字列が非常に短い

このピクセル数を計算する何らかの方法が必要です

MinimizeName(const Filename: TFileName; Canvas: TCanvas; MaxLen: Integer): TFileName; MaxLen は、キャンバスにファイル名を描画するために使用できる長さ (ピクセル単位) です。