Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемма в компоненте 
V
    Опции темы
Ak47black
  Дата 20.9.2006, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Здравствуйте у меня следушая проблемма.
Когда я пытаюсь создать компоненты в процедуре Create и заполнить их параметры собсвенными свойствами компонента, то они оказываются пустые  smile
Вот примерно что я делю. 
Код

constructor TUnitedLabel.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FPicture := TPicture.Create;
  Self.ControlStyle:= Self.ControlStyle + [csAcceptsControls];
  FLabelT:= TFlashLabel.Create(Self);
  FImage:= TImage.Create(Self);
  FLabelT.Parent:= Self;
  FImage.Parent:= Self;
  FImage.Left:= 12;
  FImage.Top:= 0;
  FImage.Width:= 16;
  FImage.Height:= 16;
  FLabelT.Left:= 35;
  FLabelT.Top:= 8;
  FLabelT.Caption:= FText;
  FImage.Picture:= FPicture;
  Self.ControlStyle:= Self.ControlStyle - [csAcceptsControls];
  Showmessage(FText); //тут выдаеться сообшение строки FText которая должна содержать текст но она пустая  :(
end;

В чем тут дело.
PM MAIL   Вверх
Romikgy
Дата 20.9.2006, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(Ak47black @  20.9.2006,  20:19 Найти цитируемый пост)
FText

А откуда возьмется в этой переменой строка?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Ak47black
Дата 20.9.2006, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Цитата(Romikgy @ 20.9.2006,  21:46)
Цитата(Ak47black @  20.9.2006,  20:19 Найти цитируемый пост)
FText

А откуда возьмется в этой переменой строка?

Код

type
  TUnitedLabel = class(TCustomControl)
  private
    procedure SetPicture(Value: TPicture);
  protected
    FPicture: TPicture;
    FImage: TImage;
    FLabelT: TFlashLabel;
    FText: String;
    procedure Click; override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure AfterConstruction; override;
  published
    property Picture: TPicture read FPicture write SetPicture;
    property Text: string read FText write FText;
  end;

PM MAIL   Вверх
Romikgy
Дата 20.9.2006, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



дык при конструтровании /создании все переменые имхо нулевые, а потом ты их заполняешь!
Код

constructor TUnitedLabel.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

FText:='Vasya pupkin';

  FPicture := TPicture.Create;
  Self.ControlStyle:= Self.ControlStyle + [csAcceptsControls];
  FLabelT:= TFlashLabel.Create(Self);
  FImage:= TImage.Create(Self);
  FLabelT.Parent:= Self;
  FImage.Parent:= Self;
  FImage.Left:= 12;
  FImage.Top:= 0;
  FImage.Width:= 16;
  FImage.Height:= 16;
  FLabelT.Left:= 35;
  FLabelT.Top:= 8;
  FLabelT.Caption:= FText;
  FImage.Picture:= FPicture;
  Self.ControlStyle:= Self.ControlStyle - [csAcceptsControls];
  Showmessage(FText); //тут выдаеться сообшение строки FText которая должна содержать текст но она пустая  :(
end;



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Ak47black
Дата 20.9.2006, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



А при какой или после какой процедуры они запалняються ?
Ранее установленые в редакторе delphi.
PM MAIL   Вверх
Snowy
Дата 20.9.2006, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Ak47black @  20.9.2006,  21:19 Найти цитируемый пост)
тут выдаеться сообшение строки FText которая должна содержать текст но она пустая
Ну так, а где в коде ты присваиваешь ей значение?
PM MAIL   Вверх
Romikgy
Дата 20.9.2006, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



А как ты создаешь компонент? кидаешь на форму?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 20.9.2006, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Ak47black @  20.9.2006,  21:56 Найти цитируемый пост)
Ранее установленые в редакторе delphi.
А при чём тут FText?
Где он установлен?
То, что установлено в редакторе работает только на published свойства.
Причем эти данные подгружаются после создания компонента.
то есть в конструкторе назначаются дефолтовые свойства.
А назначенные в design-time назначаются уже после отработки конструктора.
PM MAIL   Вверх
Ak47black
Дата 20.9.2006, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



А какая процедура идет после конструктора ?
Что-бы можно было присвойть к созданому компаненту.
Или как по другому делать ?
Цитата

А как ты создаешь компонент? кидаешь на форму? 

Да.

Это сообщение отредактировал(а) Ak47black - 20.9.2006, 22:06
PM MAIL   Вверх
Romikgy
Дата 20.9.2006, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(Ak47black @  20.9.2006,  21:01 Найти цитируемый пост)
А какая процедура идет после конструктора ?
Что-бы можно было присвойть к созданому компаненту.

навернок onPaint надо обрабатывать


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Ak47black
Дата 20.9.2006, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



onPaint заработало.
Появилась следушая проблемма при 
Код

  FLabelT.Caption:= FText;
  FImage.Picture:= FPicture; //с этой строкой начинает вистуть 

Я предполаю что это происходит потому-что начинает OnPaint повторяеться и зависает в итоге.
Что мне тут делать?

Добавлено @ 22:32 
Решил при помоши 
Код

  Canvas.Draw(0,0,FPicture.Graphic);

Спасиба всем кто участовал.

Это сообщение отредактировал(а) Ak47black - 20.9.2006, 22:23
PM MAIL   Вверх
Romikgy
Дата 20.9.2006, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(Ak47black @  20.9.2006,  21:18 Найти цитируемый пост)
 FImage.Picture:= FPicture; 

поставь условие если одно и тоже то не выполняй присваивание, но вроде есть что то типа UpdateBegin &Updateend


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 20.9.2006, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



В конструкторе создай все компоненты и назначь дефолтовые свойства.
Всё остальное за тебя подгрузят.
Если есть зависимости - используй инкапсуляцию.
Поставь функцию на установку проперти - она вызовется при загрузке.

Добавлено @ 22:47 
Вешать на онпаинт - некрасиво.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1009 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.