2015-10-19 5 views
0

Я построил новый компонент на основе кнопки Intraweb (Intraweb XIV) и установил его в новый пакет, регулярно устанавливаемый на ide.Невозможно увидеть имя компонента во время разработки

Компонент работает отлично, единственная проблема заключается в том, что во время разработки я не вижу названия компонента, так как компонент отображается как маленький серый прямоугольник с логотипом Iw без названия или заголовка.

Чтобы я мог разместить несколько кнопок на форме, я не могу различить их. Любое предложение?

Некоторые больше информации:

IntraWeb является основой для реализации веб-приложений. Вы размещаете компоненты на специальной «поддельной» форме, которая существует только во время разработки, но этого не существует во время выполнения. Во время работы инфраструктура запрашивает каждый компонент, чтобы он сам создавал конечный html-код. С этой целью каждый компонент имеет переопределяемую процедуру RenderHtml, которая должна возвращать html-код.

Что вы видите во время разработки (возможно), созданное другой процедурой (доктору это не хватает), который я бы хотел переопределить, но о котором я не знаю.

Как я уже сказал, если разместить на форме оригинальный tIWButton, во время разработки я вижу классическую трехмерную серо-кнопку с надписью на ней. Если вместо этого я разместил NewButton, я вижу другую темную серо-плоскую кнопку с маленьким логотипом Iw на нем.

Это код компонента (ничего не указано).

Я создал компонент, чтобы добавить поле изображения и визуализировать другой код html во время выполнения, который я могу настроить с помощью css. Это не должно влиять на внешний вид конструкции компонента.

Practicaly, все, что мне нужно было бы переопределить должна быть функция 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; 
+0

Используйте цветной код в режиме разработки –

+0

Основываясь на том факте, что вы указываете, что эти компоненты показаны в виде прямоугольников с только иконкой IW на них, я бы предположил, что во время разработки Delphi может рассматривать их как невизуальные компоненты. Это очень помогло бы, если бы вы могли показать свой новый код компонента, чтобы мы могли отслеживать проблему. Без кода мы могли только гадать, что не так, а что нет. – SilverWarior

ответ

0

Хотя вы говорите, ваш компонент основан на «Button», это больше походит на поведение невизуального компонента аналогично (например) TOpenDialog.

Если это так, то отображение имени компонента зависит от конфигурации конфигурации IDE. В диалоге Tools> Options установите Form Designer. В частности, «Показать элементы подписи».

Если это OFF, то невизуальные компоненты представлены только значком палитры компонентов.

С помощью этой опции ON то компонент Имя отображается под компонентом.

ПРИМЕЧАНИЕ: Даже с этой опции вы можете найти любые и все компоненты на форме, используя Structure View формы в дизайн-времени, где названия компонентов отображаются в иерархии, образованной родителем/дочерние отношения элементов управления (все невизуальные компоненты перечислены как «корневые» компоненты, поскольку все они имеют форму в качестве родителя).

Смежные вопросы