首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >德尔菲:防止TPageControl提示显示包含的项目

德尔菲:防止TPageControl提示显示包含的项目
EN

Stack Overflow用户
提问于 2010-07-09 15:56:44
回答 1查看 865关注 0票数 1

我有一个包含以下组件的表单:包含单个TPageControlTTabSheet,包含TEdit的表单。

我希望在页面控制选项卡上鼠标显示提示"Hello“,而在TEdit上鼠标时不显示提示。

PageControl有一个hint= "Hello"showhint = true。这如预期的那样起作用。

TEditshowhint = falseparentshowhint = falsehint是空的。

但是,当我在TEdit上移动鼠标时,我仍然会得到一个"Hello“提示。我怎么才能阻止这一切?

这是.dfm,如果你感兴趣的话。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-09 16:15:47

向窗体中添加一个TApplicationEvents控件,并使用OnShowHint事件:

代码语言:javascript
复制
procedure TForm1.ApplicationEvents1ShowHint(var HintStr: string;
  var CanShow: Boolean; var HintInfo: THintInfo);
begin
  CanShow := HintInfo.HintControl <> Edit1;
end;

如果您没有TApplicationEvents对象(例如,如果您使用的是非常老版本的Delphi),那么您可以使用(例如,在FormCreate中)。

代码语言:javascript
复制
Application.OnShowHint := ApplicationEvents1ShowHint

若要手动设置事件处理程序,请执行以下操作。

更新

如果TTabSheet中有多个控件,那么它们可能都有相同的问题。那你可能会对

代码语言:javascript
复制
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

如果在TTabSheets中有几个TPageControl,并且希望所有工作表都显示提示,但不显示子控件,那么您可以这样做。

代码语言:javascript
复制
  CanShow := not SameStr(HintStr, PageControl1.Hint) or
    ((HintInfo.HintControl is TTabSheet) and
      (TTabSheet(HintInfo.HintControl).PageControl = PageControl1));

而不是。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3214359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档