Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/88: Рейтинг темы: голосов - 88, средняя оценка - 4.66
4 / 286 / 2
Регистрация: 02.04.2009
Сообщений: 607
1

Сообщение "A component named *** already exists"

27.10.2017, 15:24. Показов 15764. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Моя программа работает с "железом", она управляет специальной измерительной системой, которая измеряет геометрические параметры деталей с помощью лазера по отдельным точкам. Измеренные значения точек сопоставляются с эталонными значениями, нанесенными на загруженную виртуальную эталонную 3d-модель детали, и делается вывод о годности детали или, соответственно, не годности. Есть два режима работы. При нажатии кнопки (событие TfrmBazir.actStartExecute) на главной формочке TfrmBazir появляется новая формочка с результатами измерений TfrmBladeMeasureResults:
1) без проведения непосредственного измерения детали, получаем только эталонные точки на 3d-модели детали;
2) с проведением измерений детали и получением реальных точек.
В моей программе имеет место следующая проблема. Генерируем формочку TfrmBladeMeasureResults без проведения измерений системой, потом закрываем ее, потом снова открываем - все проходим без проблем. Генерируем формочку TfrmBladeMeasureResults с проведением измерений системой, потом закрываем ее, потом снова открываем - форма не открывается, вместо этого выдается ошибка "A component named frmBladeMeasureResults already exists". В чем может быть дело?

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TfrmBazir.actStartExecute(Sender: TObject);
var
    frmMSRResults: TfrmBladeMeasureResults;
begin
        // ...
        frmMSRResults := TfrmBladeMeasureResults.Create(self);
        frmMSRResults.lblPathToModel.Caption := ModelFileName;
        frmMSRResults.Show;
        frmMSRResults.WindowState := wsMaximized;
        frmMSRResults.NeedToAutoCloseAfterMeasure := False;
        // ...
end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2017, 15:24
Ответы с готовыми решениями:

A component named already exists
Здравствуйте! Такая проблема. Я создал метод, который динамически создает много картинок. И вот...

A component named _item already exists
Захожу в Вид--Менеджер проектов, при нажатии правой кнопкой по проекту выскакивает сообщение a...

Не стандартное поведение стандартного компонента (Ошибка: A class named already exists)
Доброго времени суток! Понадобилось мне немного расширить возможности у RadioButton, а именно...

Последствия не указания файла описания ДНС серверов named.ca в named.conf для Bind
Добрый день ! Уважаемы коллеги, есть вопрос по ДНС серверу Bind. Обязательно ли прописывать в...

7
5484 / 4399 / 1076
Регистрация: 29.08.2013
Сообщений: 27,563
Записей в блоге: 3
27.10.2017, 16:06 2
ошибка у тебя есть, исходники тоже, отладчик в руки и вперед
по 10 строчкам кода сложно гадать почему у тебя ошибка вылезает
0
4 / 286 / 2
Регистрация: 02.04.2009
Сообщений: 607
27.10.2017, 18:53  [ТС] 3
Я погуглил сообщение об ошибке, нашел следующее:
TComponent.SetName вызывает TComponent.ValidateName, которая, в свою очередь, вызывает функцию FindComponent (поиск компонента по имени среди компонентов, для которых Self является владельцем (Owner)). И если компонент с таким же именем найден, то вызывается Exception с сообщением формата SDuplicateName. Теперь стоит посмотреть на свой код. Почему к моменту fmReserve:=TfmReserve.Create(self);
у self уже является владельцем компонента с таким же именем.
Значит, self надо поменять на что-то другое?

Добавлено через 12 минут
Цитата Сообщение от qwertehok Посмотреть сообщение
ошибка у тебя есть, исходники тоже, отладчик в руки и вперед
по 10 строчкам кода сложно гадать почему у тебя ошибка вылезает
Отладчик останавливается на строчке
Delphi
1
    frmMSRResults := TfrmBladeMeasureResults.Create(self);
0
qwertehok
27.10.2017, 18:58
  #4

Не по теме:

мой магический шар тоже на этих строчках останавливается

0
4 / 286 / 2
Регистрация: 02.04.2009
Сообщений: 607
27.10.2017, 19:45  [ТС] 5
Небольшое пояснение:
Delphi
1
2
3
    TfrmBladeMeasureResults = class(TfrmMeasureResults)
    TfrmMeasureResults = class(TForm)
    TfrmBazir = class(TForm)
0
5858 / 4587 / 1447
Регистрация: 14.04.2014
Сообщений: 20,340
Записей в блоге: 20
28.10.2017, 05:52 6
эта ошибка возникает когда на на форме УЖЕ ЕСТЬ КОМПОНЕНТ с таким же именем, или УЖЕ ЕСТЬ ФОРМА с таким же именем среди других форм (неожиданно, да?))))

99% за то что вы форму создаете (Create) показываете (Show) и закрываете (Close)
не хватает только места, где вы ее разрушаете (Free)
так что при создании новой копии вам говорят, что такой компонент уже существует

решения на выбор
1. в обработчике OnClose поставить Action := caFree
2. хранить ссылку на созданную форму и явно ее разрушать где-то например перед повторным созданием
FMyForm.Free
3. Вызывать форму модально
https://www.cyberforum.ru/blog... g4873.html
1
4 / 286 / 2
Регистрация: 02.04.2009
Сообщений: 607
28.10.2017, 09:24  [ТС] 7
Цитата Сообщение от krapotkin Посмотреть сообщение
эта ошибка возникает когда на на форме УЖЕ ЕСТЬ КОМПОНЕНТ с таким же именем, или УЖЕ ЕСТЬ ФОРМА с таким же именем среди других форм (неожиданно, да?))))
99% за то что вы форму создаете (Create) показываете (Show) и закрываете (Close)
не хватает только места, где вы ее разрушаете (Free)
так что при создании новой копии вам говорят, что такой компонент уже существует
решения на выбор
1. в обработчике OnClose поставить Action := caFree
2. хранить ссылку на созданную форму и явно ее разрушать где-то например перед повторным созданием
FMyForm.Free
3. Вызывать форму модально
https://www.cyberforum.ru/blog... g4873.html
Большое спасибо, будем думать.
0
167 / 107 / 22
Регистрация: 02.01.2012
Сообщений: 596
28.10.2017, 09:42 8
Ещё можно решать проблему "в лоб" - каждый раз менять Name, например, добавлять порядковый номер
0
28.10.2017, 09:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2017, 09:42
Помогаю со студенческими работами здесь

Ошибка в коде программы RedBean: Base table or view already exists: 1050 Table 'users' already exists
Я пишу регистрацию на сайте через программу "Red Bean" Выдаёт такую ошибку: Fatal error:...

Где можно скачать Windows Script Component (Script Component Wizard в частности) ?
Где можно скачать Windows Script Component (Script Component Wizard в частности), только пожалуста...

Сообщение об ошибке: ActiveX component can't create object
Люди добрые, не знает ли кто случайно (или не случайно) как бороться с такой ошибкой: на код Dim...

If exists
Скажите пожалуйста есть ли в oracle конструкция if exists? Если нет, то есть ли аналог?

EXISTS
Здравствуйте! Нужно вывести всех людей из таблицы emp которые имеют повторяющуюся з/п с помощью...

Where not exists
Всем привет, вопрос легкий, но вот только забыл как делать... допустим есть такая таблица: id имя...

EXISTS/NOT EXISTS
13) Используя операцию EXISTS ( NOT EXISTS ) реализовать ниже следующие запросы. В случае, если для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru