在设计时无法看到组件名称

时间:2015-10-19 09:12:26

标签: delphi custom-component

我构建了一个基于Intraweb按钮的新组件(Intraweb XIV) 并将其安装在一个新的包中,定期安装在ide。

组件工作正常,唯一的麻烦是在设计时我看不到组件名称,因为组件呈现为带有Iw徽标的小灰色矩形,没有任何名称或标题。

因此,如果我在表格上放置几个按钮,我无法区分它们。 有什么建议吗?

更多信息:

Intraweb是实现Web应用程序的框架。 您将组件放在特殊的"假的"表单,仅在设计时存在,但在运行时不存在。 在运行时,基础结构要求每个组件呈现自己生成最终的html代码。 为此,每个组件都有一个可覆盖的RenderHtml过程,该过程必须返回html代码。

您在设计时看到的内容(可能)是由另一个程序生成的 (文档相当缺乏),我想覆盖,但我不知道。

正如我所说,如果我在表格上放置一个原始的tIWButton,在设计时我会看到一个带有按钮标题的经典3d灰色按钮。 如果我放置一个NewButton,我会看到一个不同的深灰色平面按钮 上面有一点点的Iw标志。

这是我的组件的代码(省略的东西)。

我创建了该组件只是为了添加一个Image字段并在运行时呈现不同的html代码,我可以通过css进行自定义。 这应该对组件的设计时间外观没有影响。

实际上,我需要覆盖的应该是renderhtml函数:

TNewButton = class(TIWButton)

  protected
    fImage           : string;

  published
    property    Image: string  read fImage write fImage;

  public
    function    RenderHTML(AContext: TIWBaseHTMLComponentContext): TIWHTMLTag; override;
  end;



function tNewButton.RenderHTML(AContext: TIWBaseHTMLComponentContext): TIWHTMLTag;
var   Elem  : tIwTextElement;
      txt   : string;
      disab : string;
begin
  if enabled then disab := '' else disab := ' disabled="disabled" ';
  txt := '<button class="newbutton" '+disab+'>';
  if fimage <> '' then
    txt := txt + '<img src="'+ fimage +'"/>';
  txt := txt + '<span class="newbutton-text">' + Caption + '</span>';
  txt := txt + '</button>';
  Elem   := tIwTextElement.Create(nil);
  elem.text := txt;
  Result := TIWHTMLTag.CreateTag('DIV');
  Result.Contents.Add (Elem);
end;

1 个答案:

答案 0 :(得分:0)

虽然你说你的组件是基于“按钮”,但这听起来更像是类似于(例如) TOpenDialog 的非可视组件的行为。

如果是这种情况,则组件名称的显示受IDE配置设置的约束。在工具&gt;选项对话框,检查表单设计器设置。特别是“显示组件标题”复选框。

如果 OFF ,则非可视组件仅由组件调色板图标表示。

使用此选项 ON ,组件下方会显示名称组件。

注意:即使关闭此选项,您也可以在设计时使用表单的结构视图找到表单上的任何和所有组件,其中组件名称为显示在由控件的父/子关系形成的层次结构中(所有非可视组件都列为“根”组件,因为它们都具有父级的形式)。