Форум: "Основная";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];
ВнизОшибка при создании компанента Найти похожие ветки
← →
Pattern (2003-05-29 23:38) [0]Сделал составной компанент. На TCustomPanel находится TLabel. Добавляю новое свойство PicName, чтобы заполненное название в свойствах на PicName передалось на Caption этой TLabel.
private
FPicName: TCaption;
...
published
property PicName: TCaption
read FPicName
>>> write SetPictureName; //ругается на эту строку
procedure SetPictureName(Value: TCaption);
...
procedure TFxPicView.SetPictureName(Value: TCaption);
begin
MyLabel.Caption := PicName;
end;
При компиляции выдаёт ошибку
Field or method identifier expected
Подскажите, что здесь не так?
← →
Юрий Зотов (2003-05-30 01:02) [1]Процедура SetPictureName объявлена ПОСЛЕ того, как использована. Значит, в момент использования она неизвестна.
Переместите выше. Обычно в private.
← →
Pattern (2003-05-31 06:48) [2]100 в гору... Прогнал... Хотя до этого у меня почему то не получилось. Спасибо за помощь. d;)
← →
Anatoly Podgoretsky (2003-05-31 07:11) [3]И не просто выше, а в секцию private
И кроме того явно бессмысленая процедура или неверная. Предполагалось установка FPicName или оно лишнее совсем, Value совсем не используется.
procedure TFxPicView.SetPictureName(Value: TCaption);
begin
FPicName := Value;
MyLabel.Caption := Value;
end;
← →
Pattern (2003-05-31 15:45) [4]Это я просто проводил эксперимент... Всё заработало. На самом деле всё намного проще решается:
private
...
function GetPictureName_: TCaption;
procedure SetPictureName_(Value: TCaption);
...
published
...
property PictureName: TCaption read GetPictureName_ write SetPictureName_;
...
function TFxPicView.GetPictureName_: TCaption;
begin
Result := FxLabel.Caption;
end;
procedure TFxPicView.SetPictureName_(Value: TCaption);
begin
FxLabel.Caption := Value;
end;
А вот встречный вопрос. Как сделать, чтобы TCustomPanel не отображало Caption? Если его не указывать в publisher, то это свойство просто отсутствует, но тем не менее оно на самой панели прописывается.
← →
jack128 (2003-05-31 15:56) [5]Caption := ""; ???
← →
Pattern (2003-05-31 16:08) [6]2jack128 >>
Это понятно. Если так написать, то во время создания компонента она исчезает, а во время проектирования оно всё равно находится по середине компаненты.
← →
Юрий Зотов (2003-05-31 19:25) [7]Caption := "" в конструкторе .
← →
Pattern (2003-06-01 17:13) [8]2Юрий_Зотов >>
Ну это естественно что в конструкторе. Он у меня так и прописан:
constructor TFxPicView.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FxLabel := TLabel.Create(Self);
FxLabel.Parent := Self;
FxImage := TImage.Create(Self);
FxImage.Parent := Self;
Caption := "";
А как-нить можно избавиться от свойств Width и Height?
← →
Юрий Зотов (2003-06-01 20:24) [9]1. И что, Caption у панели не исчезает?
2. Избавиться - нельзя, убрать из Object Inspector - можно (зарегистрировав NIL вместо редактор свойства).
← →
Pattern (2003-06-02 13:25) [10]1. Во время проектирования не исчезает, а вот когда запускается на форме, тогда исчезает.
2. А вот этого не понял. Как зарегистрировать NIL вместо редактора свойств? Вместо property написать NIL что ли?????
d%(
← →
Skier (2003-06-02 13:39) [11]>Pattern © (02.06.03 13:25)
RegisterPropertyEditor(TypeInfo(TYourType), TYourComponent, "YourPropertyName", nil);
← →
Юрий Зотов (2003-06-02 13:40) [12]1. В конструкторе напишите:
ControlStyle := ControlStyle - [csSetCaption];
2. В RegisterPropertyEditor указать nil вместо класса редактора.
← →
Pattern (2003-06-02 13:52) [13]Всё понял! Огромное спасибо всем отозвавшимся мастерам своего дела!!!
← →
Pattern (2003-06-02 17:10) [14]Ну вот так всегда. Разобраться разобрался, а сделать никак не могу. В книге Марко Кэнту написано, что он использует для этого RegisterPropertyInCategory, предварительно занеся в uses модуль DsgnIntf. Я когда пытаюсь этот модуль вогнать в uses, он мне пишет, что такого модуля не находит... Может для Delphi7 друой модуль используется?
← →
Skier (2003-06-02 17:25) [15]пропиши к нему путь (Environment Options|Library|Library Path)
молудь DsgnIntf.pas должен лежать в ...\Source\ToolsAPI\
← →
Skier (2003-06-02 17:43) [16]>Pattern © (02.06.03 17:10)
"Замираю в глубоком пардоне" :) в D7 он называется DesignIntf.pas
← →
Pattern (2003-06-02 18:23) [17]2 Юрий Зотов, Anatoly Podgoretsky, jack128, Skier ->>
ВСЕМ ОГРОМНОЕ СПАСИБО ЗА ВАШЕ ПОТРАЧЕННОЕ ВРЕМЯ!!!!!!!!!
Всё прекарсно заработало!!!!!!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c