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

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

Здесь запрещается:
1. Размещать ссылки на какие-либо коммерческие компоненты, реализующие требуемую функциональность.
2. Обсуждать и тестировать коммерческие компоненты или компоненты с закрытым кодом.
3. Давать ссылки на сайты с исходным кодом компонентов. Все тестируемые исходные коды должы быть размещены на сайте ИСХОДНИКИ.RU.
Модераторы: Rouse_, DimaBr
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> TComponentEditor , TDesignWindow
    Доброго времени суток.
    мне необходим редактор компоненты на подобии TDataSet;
    Добросовестно передрав пример из DSDesigner (X:\Program Files\Borland\Delphi7\Source\Property Editors\DSDesign.pas) =)
    И наткнулся на след. проблемы:
    1. при двойном щелчке по компоненту кажд раз создаётся новое окно
    2. не знаю на каком этапе загрузить филды
    если можно в примерах плз.

    Добавлено
    c пунктом 2 разобрался.
      Цитата subdigger @
      при двойном щелчке по компоненту кажд раз создаётся новое окно

      Нужно чтобы активизировалось уже созданное? Смотри в сторону счетчика ссылок. К примеру я обычно делаю вот так:

      ExpandedWrap disabled
          TGSAccessList = class
          private
            ...
            class procedure AddInstance;
            class procedure ReleaseInstance;
            ...
          public
            ...
            class function NumOfInstances: Integer;
          end;
         
        implementation
         
        uses Math;
         
        var
          TGSAccessList_Instance: Integer = 0;
         
        { TGSAccessList }
         
        class procedure TGSAccessList.AddInstance;
        begin
          Inc(TGSAccessList_Instance);
        end;
         
        constructor TGSAccessList.Create;
        begin
          ...
          AddInstance;
        end;
         
        destructor TGSAccessList.Destroy;
        begin
          ReleaseInstance;
          ...
        end;
         
        class function TGSAccessList.NumOfInstances: Integer;
        begin
          Result := TGSAccessList_Instance;
        end;
         
        class procedure TGSAccessList.ReleaseInstance;
        begin
          Dec(TGSAccessList_Instance);
        end;


      Сответственно уже на этапе создания компонента мы можем выяснить что как минимум один экземпляр класса уже создан...
        пасибо решил. немного по другому но решил.
        появился другой вопрос при исползовании сомпанента не могу скомпилица.
        ош [Fatal Error] DesignWindows.pas(15): File not found: 'ComponentDesigner.dcu'
        [QUOTE] в юните DesignWindows!!! :wall:
          Подключи к пакету Designide.dcp и все решиться
            он подклёчён и .dpk компилица нармально но когда я создаю проект и кидаю туда компонент то при компилировании проекта вылазит эта ош.
            Цитата subdigger @
            [Fatal Error] DesignWindows.pas(15): File not found: 'ComponentDesigner.dcu'
              Проверь наличие в путях: $(DELPHI)\Source\ToolsAPI
              Если есть - кидай сюда компонент с DPK, будем смотреть
                  Значит так, у меня все работает. При инсталяции я почистил Директории в опциях проекта, все стало на ура. Работает также без проблем.
                  В путях (в меню Tools -> Enironment Options -> Library -> library Path) указыны следующие данные:
                  $(DELPHI)\Lib
                  $(DELPHI)\Bin
                  $(DELPHI)\Imports
                  $(DELPHI)\Projects\Bpl
                  $(DELPHI)\Rave5\Lib
                  C:\Program Files\Borland\Delphi7\Source\ToolsAPI
                  c:\program files\borland\delphi7\projects
                  C:\Program Files\Borland\Delphi7\Ocx\Servers
                  C:\Program Files\Borland\Delphi7\Source\Samples
                  C:\Program Files\Borland\Delphi7\Demos\ShellControls
                  C:\Program Files\Borland\Delphi7\Demos\ActiveX\OleAuto\SrvComp
                  c:\program files\borland\delphi7\ocx\isp
                  C:\Program Files\Borland\Delphi7\Ocx

                  Проверяй что забыл у себя...
                    тоесть ты создал новый проект. кинул на него мой компонент и проект скомпилился?
                      Ага, понятно, ты совместил RunTime часть компонента и ту часть которая используется в DesignTime, разделяй их, чтоб в RunTime части не использовались никакие юниты из ToolsAPI
                        а как это сделать?
                          Весь код который у тебя показывает всякие формочки в DesignTime перемести в один модуль, я обычно помещаю все в файл регистрации компонента, а в основном модуле должны остаться только тот код, который не относятся к показу этих формочек (обрати внимание чтоб небыло ссылок в uses). Ну т.е. пересмотри логику, тебе как автору будет это проще сделать чем мне...
                            С этим разобрались. Пасиба.
                            ещё если не трудно объясни почему в DesignTime у мя в компоненте есть филды, а када запускаю прект то их там нет
                              После модификации кода вот эта строка осталась?
                              ExpandedWrap disabled
                                property Fields: TUNIFields read FFields;
                                :lool: . Да.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0473 ]   [ 17 queries used ]   [ Generated: 19.04.24, 17:55 GMT ]