Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.03.2012, 22:40
Аватар для Cheetos
Cheetos Cheetos вне форума
Прохожий
 
Регистрация: 27.09.2011
Адрес: Тульская область
Сообщения: 18
Версия Delphi: 7
Репутация: 10
Восклицание Доступ к свойствам внедренного компонента

Вопрос собственно говоря в следующем: есть компонент - потомок TPanel, включающий в себя другой компонент, например, тоже TPanel. Как из первого получить доступ к свойствам второго?
У внедренного компонента имеется свойство Caption. После размещения нового компонента на форме в инспекторе объектов (в Design-time) я вижу и могу изменить значение свойства Caption, но при компиляции (в Runtime) это значение сбрасыется на изначальное - почему?
Код ниже:
Код:
unit PanInPan;

interface

uses
  SysUtils, Classes, Controls, ExtCtrls, Graphics, QStdCtrls;

type
  TPanInPan = class(TPanel)
  private
    FTitle: TPanel;
    { Private declarations }
  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published declarations }
    property Title: TPanel read FTitle write FTitle;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('My', [TPanInPan]);
end;

// Создание компонента
constructor TPanInPan.Create(AOwner: TComponent);
begin
  inherited create(AOwner);
  width:=500;
  Height:=300;
  FTitle:=TPanel.Create(Self);
  with FTitle do
    begin
        Width:= 100;
        Align:= alRight;
        BevelOuter:= bvNone;
        TabOrder:= 0;
        Color:=clRed;
        Name:='SubTitle';
        Caption:=Name;
    end;
  FTitle.Parent:=Self;
end;

// Уничтожение компонента
destructor TPanInPan.Destroy;
begin
  FTitle.Free;
  inherited;
end;
end.
Ответить с цитированием
  #2  
Старый 17.03.2012, 23:01
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Для начала, бери за основу TCustomPanel. У большинства контролов имеется свойство Caption, зачем вводить своё, родного не достаточно?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 18.03.2012, 00:07
Аватар для Cheetos
Cheetos Cheetos вне форума
Прохожий
 
Регистрация: 27.09.2011
Адрес: Тульская область
Сообщения: 18
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Для начала, бери за основу TCustomPanel. У большинства контролов имеется свойство Caption, зачем вводить своё, родного не достаточно?
Реально внедренный компонент на основе TCustomControl, а тот, в который внедряется первый, как раз на основе TCustomPanel. Для простоты понимания привел пример на основе TPanel
Ответить с цитированием
  #4  
Старый 18.03.2012, 00:33
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Непонятно, что даёт вторая панель. Если для вывода дополнительного текста, то не удобнее ли переписать метод Paint?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 18.03.2012, 00:39
Аватар для Cheetos
Cheetos Cheetos вне форума
Прохожий
 
Регистрация: 27.09.2011
Адрес: Тульская область
Сообщения: 18
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Непонятно, что даёт вторая панель. Если для вывода дополнительного текста, то не удобнее ли переписать метод Paint?
Я же поясняю, что это просто пример, на котором легко увидеть ту проблему, которая меня интересует и не больше.
Ответить с цитированием
  #6  
Старый 18.03.2012, 01:02
Аватар для Cheetos
Cheetos Cheetos вне форума
Прохожий
 
Регистрация: 27.09.2011
Адрес: Тульская область
Сообщения: 18
Версия Delphi: 7
Репутация: 10
По умолчанию

Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:26.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025