Delphi:TPageControlのヒントが含まれているアイテムの表示を妨げる
質問
私は以下の成分を持つ形態を持っています:TPageControl
を含む単一のTTabSheet
を含むTEdit
。
PageControlタブの上にマウスをマウスしたときに表示され、 no のヒントが表示されます。
PageControl
には、hint= "Hello"
とshowhint = true
があります。これは期待通りに機能します。
TEdit
にはshowhint = false
、parentshowhint = false
、hint
が空です。
しかし、私はまだ「こんにちは」ヒントを手に入れる。どうやってこれを止めることができますか?
興味がある場合は.dfmです。
object Form65: TForm65
Left = 0
Top = 0
Caption = 'Form65'
ClientHeight = 258
ClientWidth = 290
OldCreateOrder = False
ShowHint = True
TextHeight = 13
object PageControl1: TPageControl
Left = 0
Top = 0
Width = 290
Height = 258
Hint = 'Bar'
ActivePage = TabSheet1
Align = alClient
TabOrder = 0
object TabSheet1: TTabSheet
Caption = 'TabSheet1'
object Edit3: TEdit
Left = 72
Top = 67
Width = 121
Height = 21
ParentShowHint = False
ShowHint = False
TabOrder = 0
Text = 'tab1'
end
end
end
end
. 解決
フォームにTapplicationEventsコントロールを追加し、OnShowHintイベントを使用します。
procedure TForm1.ApplicationEvents1ShowHint(var HintStr: string;
var CanShow: Boolean; var HintInfo: THintInfo);
begin
CanShow := HintInfo.HintControl <> Edit1;
end;
.
TapplicationEventsオブジェクトを(例えば、非常に古いバージョンのDelphiを使用している場合)、(例えばFormCreate)
を使用することができます。Application.OnShowHint := ApplicationEvents1ShowHint
.
イベントハンドラを手動で設定する
更新
TTABSheetに複数のコントロールがある場合は、それらすべてに同じ問題がある可能性があります。それからあなたは
に興味があるかもしれませんprocedure TForm1.ApplicationEvents1ShowHint(var HintStr: string;
var CanShow: Boolean; var HintInfo: THintInfo);
begin
CanShow := not SameStr(HintStr, PageControl1.Hint) or (HintInfo.HintControl = TabSheet1);
end;
.
更新2
tpagecontrolにいくつかのttabsheetsがある場合は、すべてのシートがヒントを表示したいが子どものコントロールが必要な場合は、
を実行できます。 CanShow := not SameStr(HintStr, PageControl1.Hint) or
((HintInfo.HintControl is TTabSheet) and
(TTabSheet(HintInfo.HintControl).PageControl = PageControl1));
.
代わりに
所属していません StackOverflow