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

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

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

    Заранее пасибо
      пишу попонятней:
      Допустим новая форма:
      uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs
      Добавляем компонент TJvButton, появляются uses StdCtrls, JvButton;

      Как мне добавить к uses моего компонента (JvButton) ещё и StdCtrls, когда его на форму кину?

      2 вопрос снимается - нашёл решение.
        Цитата n0wheremany @
        Добавляем компонент TJvButton, появляются uses StdCtrls, JvButton;

        TJvButton – наследник класса TButton, который объявлен в StdCtrls. Как мне кажется, такие добавления делаются автоматически. На это вероятно влияет секция requires в пакетах, где указываются базовые пакеты, пакеты предков инсталлируемых компонентов.

        Во всяком случае не приходилось еще видеть кода, который бы вручную добавлял бы в uses модуля какие-то дополнительные модули. Наоборот, иногда такого добавления вообще не происходит. Например, модуль ActiveX автоматически не добавляется при написании обработчиков некоторых событий TWebBrowser, где используются специфоческие интерфейсы.
          В общем случае этим не стоит заниматься, единственная проблема возникает тогда, когда в событии компонента используется тип определённый в другом модуле. Тогда при генерации этого события (дважды кликнув в инспекторе) получаем ссылку на неопределённый тип. То есть необходимо вручную дописать модуль в секцию USES.

          ExpandedWrap disabled
            unit MyUnit1;
            type
              TMyType = integer;
             
            ........
             
             
            unit MyUnit2;
             
            uses MyUnit1;
             
            type
            TMyEvent = procedure (AParam: TMyType) of object;
             
            TMyComponent = class(TComponent)
                private
                  fMyEvent: TMyEvent;
                published
                  property MyEvent: TMyEvent read fMyEvent write fMyEvent;
            end;
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0254 ]   [ 16 queries used ]   [ Generated: 23.04.24, 16:01 GMT ]