На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Обязательно выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Этот раздел предназначен для вопросов, посвященных разработке компонентов, а также для тестирования собственных бесплатных компонентов с открытым исходным кодом.

Здесь запрещается:
1. Размещать ссылки на какие-либо коммерческие компоненты, реализующие требуемую функциональность.
2. Обсуждать и тестировать коммерческие компоненты или компоненты с закрытым кодом.
3. Давать ссылки на сайты с исходным кодом компонентов. Все тестируемые исходные коды должы быть размещены на сайте ИСХОДНИКИ.RU.
Модераторы: Rouse_, DimaBr
  
> Ошибка при отключении первого компонента от второго. , Ошибка при отключении первого компонента от второго.
    Добрый вечер!

    Создаю два компонента, второй должен увидеть первый компонент и читать его свойства.
    Схема кода второго компонета:

    ExpandedWrap disabled
      unit MyComponent2;
       
      interface
       
      uses Windows, Messages, SysUtils, Variants, Classes, Unit2;
       
      type
        TMyComponent2 = class(TComponent)
        private
          fIndex : Integer;
          fSearch : TMyComponent;
          function GetIndex : Integer;
        protected
          //...............
        public
          constructor Create(AOwner: TComponent);override;
          destructor Destroy;override;
        published
          property SearchClass : TMyComponent read fSearch write fSearch;
          property IndexElement : Integer read GetIndex write fIndex;
        end;
       
        procedure Register;
       
      implementation
       
      { TMyComponent }
       
      constructor TMyComponent2.Create(AOwner: TComponent);
      begin
        fSearch := TMyComponent.Create(Self);
        inherited;
      end;
       
      destructor TMyComponent2.Destroy;
      begin
        fSearch.Free;
        inherited;
      end;
       
      function TMyComponent2.GetIndex : Integer;
      begin
        Result := fSearch.IndexList;
      end;
       
      procedure Register;
      begin
        RegisterComponents('test', [TMyComponent2]);
      end;


    В дизайнтайм есть поле у второго компонета со свойством SearchClass типа раскрывающегося списка. Когда кладу на форму нового проекта оба компонента, то у компонента TMyComponent2 в выпадающем списке свойства SearchClass регистрируется первый компонент и его можно выбрать после чего прекрасно читаются все его свойства. Но, проблема в том, что если очистить поле свойства SearchClass второго компонента в дизайнтайм вылетает ошибка, при которой виснет даже сама Делфи 2010. Подскажите как избежать этой ошибки? Я понимаю, что нужно проверить есть связьвторого компонента с первым и очистить все читаемые от первого компонента параметры с его доступных свойств, но как это сделать?

    Спасибо всем за помощь.
      1) я второй раз вижу у тебя бесмысленную конструкцию насчет
      Цитата SkAndriy @
      property IndexElement : Integer read GetIndex write fIndex;

      зачем write fIndex если fIndex все равно не юзается.

      вот за подобных вещей и падает
      ExpandedWrap disabled
        Result := fSearch.IndexList;
      Сначала нужно проверить компонент на существование а потом получать значение от IndexList
        Нет проблема не в этом. Как раз свойство прекрасно читает в IndexElement из первого компонента. Проблема в том, что если я сотру (удалю, очищу) в дизайн тайм поле свойства SearchClass и переведу фокус например на другое поле то вылетает ошибка и делфи виснет. что делать? какую и где поставить проверку. спасибо
          Вы были правы не хватало элементарной проверки. Спасибо за помощь.
            это типа: Моя газовая плита хорошо работает но как только я перекрою газ и посмотрю в окно то она гаснет.
              Еще раз спасибо.
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0207 ]   [ 16 queries used ]   [ Generated: 10.12.24, 23:45 GMT ]