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

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

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

    Вот к примеру создал я TMyBestForm наследника от TCustomForm, зарегистрировал честь по чести, всё ОК!
    ExpandedWrap disabled
      type
        TMyBestForm1 = class(TMyBestForm)
        end;
      ...

    И вот в наследнике я назначаю метод OnCreate, и он прописывается так:
    ExpandedWrap disabled
      ...
      procedure TMyBestForm1.MyBestFormCreate(Sender: TObject);
      begin
        inherited;
       
      end;

    А нужно, чтоб так:
    ExpandedWrap disabled
      ...
      procedure TMyBestForm1.FormCreate(Sender: TObject);
      begin
        inherited;
       
      end;


    Кто знает?!! - подскажите, как это реализовать...


    Премного благодарен! :rolleyes:
      Вах! похоже на этом форуме я не дождусь ответа.... :no:
        Смотрим
        ExpandedWrap disabled
          procedure TMethodProperty.Edit;
          var
            FormMethodName: string;
            CurDesigner: IDesigner;
          begin
            CurDesigner := Designer; { Local property so if designer is nil'ed out, no AV will happen }
            if not AllNamed then
              raise EDesignPropertyError.CreateRes(@SCannotCreateName);
            FormMethodName := GetValue;
            if (FormMethodName = '') or
              CurDesigner.MethodFromAncestor(GetMethodValue) then
            begin
              if FormMethodName = '' then
                FormMethodName := GetFormMethodName;
              if FormMethodName = '' then
                raise EDesignPropertyError.CreateRes(@SCannotCreateName);
              SetValue(FormMethodName);
            end;
            CurDesigner.ShowMethod(FormMethodName);
          end;

        и выясняем что текст берётся из FormMethodName
        ExpandedWrap disabled
          function TMethodProperty.GetFormMethodName: string;
          var
            I: Integer;
          begin
            if GetComponent(0) = Designer.GetRoot then
            begin
              Result := Designer.GetRootClassName; // вот возвращается класс ФОРМЫ
              if (Result <> '') and (Result[1] = 'T') then
                Delete(Result, 1, 1);
            end
            else
            begin
              Result := Designer.GetObjectName(GetComponent(0));
              for I := Length(Result) downto 1 do
                if Result[I] in ['.', '[', ']', '-', '>'] then
                  Delete(Result, I, 1);
            end;
            if Result = '' then
              raise EDesignPropertyError.CreateRes(@SCannotCreateName);
            Result := Result + GetTrimmedEventName;
          end;


        Переопределите GetFormMethodName и будет вам счастье
        Сообщение отредактировано: DimaBr -
          Цитата DimaBr @
          Переопределите GetFormMethodName и будет вам счастье

          Сделал... Переписал... Счастье уже близко... :D :D :D
          а как зарегистрировать, то есть чем?
          ExpandedWrap disabled
            RegisterPropertyEditor(TypeInfo(????), TMyBestForm, '', TMyBestFormMethodProperty);

          тут проблема...
          или
          ExpandedWrap disabled
            RegisterComponentEditor(TMyBestForm, TMyBestFormMethodProperty);

          и тут проблема...

          Добавлено
          вроде понял:
          ExpandedWrap disabled
            RegisterPropertyEditor(TypeInfo(TNotifyEvent), TMyBestForm, '', TMyBestFormMethodProperty);

          а если, к примеру в форме есть другие методы (собственные)? для всех остальных, для каждого? или можно как-то общё(для всех методов сразу)?
            ВСЁ!!! Сообразил...
            ExpandedWrap disabled
              procedure Register;
                procedure RegMethodProperty(Comp: TComponentClass);
                var
                  PropList: PPropList;
                  i: integer;
                begin
                  i := 0;
                  PropList := AllocMem(SizeOf(PropList^));
                  try
                    GetPropList(Comp.ClassInfo, [tkMethod], PropList);
                    while (PropList^[i] <> nil) and (i < High(PropList^)) do
                    begin
                  RegisterPropertyEditor(PropList^[i].PropType^, Comp, '', TisFormMethodProperty);
                      Inc(i);
                    end;
                  finally
                    FreeMem(PropList);
                  end;
                end;
              begin
                RegisterCustomModule(TMyBestForm, TCustomModule);
                RegMethodProperty(TMyBestForm);
              end;


            Спасибо Вам, о, великий гуру, DimaBr!!! Сделаю себе наколку с вашим именем :D ;)
              Такое решение неприемлемо в КОММЕРЧЕСКОМ КОДЕ.
                Тоже заинтересовался...

                Цитата cboss @
                Такое решение неприемлемо в КОММЕРЧЕСКОМ КОДЕ.

                А как правильно?
                  Не обращай внимания, это какой-то странный полуспамер.
                  Codero ergo sum
                  // Программирую — значит, существую
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script Execution time: 0,0981 ]   [ 18 queries used ]   [ Generated: 20.09.17, 19:53 GMT ]