Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2019, 08:31   #1
PTyTb32
Форумчанин
 
Регистрация: 06.10.2013
Сообщений: 216
Вопрос Динамическое создание компонентов

Привет, есть задача по нажатию кнопки создать новую вкладку на PageControl и разместить на ней TChart (новый) я сделал это вот так:
Код:
procedure TfOWN.Button3Click(Sender: TObject);
var 
  nts:TTabSheet; 
  cha:tdbchart;
begin
  nts:=TTabSheet.Create(self);
  nts.Parent:=PageControl1;
  nts.PageControl:=PageControl1;
  nts.Name:='nts'+inttostr(PageControl1.PageCount);
  cha:=tdbchart.Create(self);
  cha.Parent:=nts;
  cha.Align:=alClient;
  cha.Name:='nch'+inttostr(PageControl1.PageCount);
end;
после выполнения этого кода вылетает несколько раз ошибка доступа к адресу. я пробовал убрать создание TChart и оставить только вкладки, все работает, пробовал этот код в отдельной программе, и он полностью работал. помогите разобраться пожалуйста
PTyTb32 вне форума Ответить с цитированием
Старый 04.04.2019, 09:56   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не вижу явного криминала.
попробуйте пройтись в отладке пошагово, посмотрите, где вылетает ошибка.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.04.2019, 10:11   #3
PTyTb32
Форумчанин
 
Регистрация: 06.10.2013
Сообщений: 216
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
не вижу явного криминала.
попробуйте пройтись в отладке пошагово, посмотрите, где вылетает ошибка.
не могу использовать отладчик, так как этот проект находится в библиотеке. в делфи создал новый проект DLL и в него добавил новую форму.


P.S.
Если вместо TChart создать панель, то все так же работает...

а дебагер главного приложения которое вызывает DLL остановился с ошибкой вот тут

Код:
function TApplication.ProcessMessage(var Msg: TMsg): Boolean;
var
  Handled: Boolean;
  Unicode: Boolean;
  MsgExists: Boolean;
begin
  Result := False;
  if PeekMessage(Msg, 0, 0, 0, PM_NOREMOVE) then
  begin
    Unicode := (Msg.hwnd = 0) or IsWindowUnicode(Msg.hwnd);
    if Unicode then
      MsgExists := PeekMessageW(Msg, 0, 0, 0, PM_REMOVE)
    else
      MsgExists := PeekMessageA(Msg, 0, 0, 0, PM_REMOVE);

    if MsgExists then
    begin
      Result := True;
      if Msg.Message <> WM_QUIT then
      begin
        Handled := False;
        if Assigned(FOnMessage) then FOnMessage(Msg, Handled);
        if not IsPreProcessMessage(Msg) and not IsHintMsg(Msg) and
          not Handled and not IsMDIMsg(Msg) and
          not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then
        begin
          TranslateMessage(Msg);
          if Unicode then
            DispatchMessageW(Msg) //  <-----------------------------
          else
            DispatchMessageA(Msg);
        end;
      end
      else
      begin
  {$IF DEFINED(CLR)}
        if Assigned(FOnShutDown) then FOnShutDown(self);
        DoneApplication;
  {$ENDIF}
        FTerminate := True;
      end;
    end;
  end;
end;
P.S.
Извлек проект из библиотеки, сделав из него обычный проект, и создание компонентов работает нормально. но почему из dll то не хочет создавать именно TChart?

В итоге сделал строго 3 чарта, в принципе этого хватит для моих задач.

Последний раз редактировалось PTyTb32; 04.04.2019 в 15:00.
PTyTb32 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое создание компонентов nibufep Общие вопросы Delphi 7 30.04.2016 13:27
Динамическое создание компонентов Janger Общие вопросы Delphi 11 29.06.2015 16:19
Динамическое создание компонентов Nagoran Общие вопросы Delphi 13 12.01.2015 20:09
динамическое создание компонентов DOLBY Компоненты Delphi 10 17.10.2010 14:03
Динамическое создание компонентов Nice42ru Помощь студентам 4 03.01.2010 20:51