Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1

Создание компонента, при добавлении автоматически получить Parent фокусированного компонента

21.02.2017, 20:58. Показов 3921. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем, вот ни разу не писал еще компоненты, начал разбираться, все просто, понятно, доступно, удобно..

но как мне задать Parent этому компоненту, когда я создаю его через дизайнер?, при перетаскивании он всегда получает Parent от AOwner и это же всегда форма, а если я выбрал к примеру панельку, или другой компонент, чтобы на него пертаскивался компонент, т.е. получал Parent автоматически при добавлении как это делают большинство компонентов, тут сразу обрадовался добавить в конструкторе Parent := Screen.ActiveControl, но мне так стало смешно когда я решил добавить компонент, он добавился мне в дельфи на палитру компонентов, я же как бы и был в палитре фокусом наверно ?! проверка показала чтов фокусе была сама Rad Studio

В Общем кто знает, как сделать?

P.S. ну а когда вырезаем компонент и вставляем уже в фокусированный компонент, например панельку, то все получается, компонент принимает Parent того компонента на который вставляю

Спасибо заранее
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.02.2017, 20:58
Ответы с готовыми решениями:

Создание визуального компонента наследника базового компонента
Добрый день! В VS 2005 было возможно создать элемент Windows Forms control library на базе стандартного элемента, скажем Button. Я...

Создание своего компонента на основе компонента Timer
нужно создать свой компонент какбы который наследует компонент Таймер нужно хотя бы добавить несколько свойств помогите с идеей !!!!...

Ошибка при добавлении компонента управления
Здравствуйте, на днях начал изучать wpf, походу доигрался и при добавлении любого компонента на обычную форму у меня вылазит окно с...

11
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
21.02.2017, 21:10
не нужно ничего делать
все сделано за вас
от какого класса вы унаследовали свой компонент
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
21.02.2017, 21:26  [ТС]
от TWinControl наследуемся.

Вродебы писал где-то, но реально нету в теме.. стер видать пока переписывал каракули))))
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
21.02.2017, 22:02
с одной стороны и правда делать ничего не надо
ваш компонент по умолчанию будет вести себя как и все остальные
но вот смысла наследоваться от TWinControl не очень вижу
в этом плане логичнее TCustomControl
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
21.02.2017, 22:04  [ТС]
но он не ведет себя так.. даже при наследовании от TCustomControl... от чего и возник сей вопрос
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
21.02.2017, 22:48
Цитата Сообщение от Arcor Посмотреть сообщение
но как мне задать Parent этому компоненту, когда я создаю его через дизайнер?
вот немного непонятен вопрос
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
21.02.2017, 22:51
Лучший ответ Сообщение было отмечено Arcor как решение

Решение

вот панель, в ней мой компонент
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
unit MyControl;
 
interface
 
uses
  System.SysUtils, System.Classes, Vcl.Controls;
 
type
  TMyControl = class(TCustomControl)
  private
    { Private declarations }
  protected
    { Protected declarations }
  public
    procedure Paint; override;
  published
    { Published declarations }
  end;
 
procedure Register;
 
implementation
uses graphics;
 
procedure Register;
begin
  RegisterComponents('Samples', [TMyControl]);
end;
 
{ TMyControl }
 
procedure TMyControl.Paint;
begin
  Canvas.Brush.Color:= clRed;
  Canvas.Brush.Style := bsSolid;
  Canvas.Pen.Style := psSolid;
  Canvas.Pen.Color := clWhite;
  Canvas.Rectangle(0,0,Width,Height);
end;
 
end.
Миниатюры
Создание компонента, при добавлении автоматически получить Parent фокусированного компонента  
1
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
21.02.2017, 22:51
ведет себя как и все другие компоненты
0
 Аватар для Arcor
5709 / 2300 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
21.02.2017, 23:01  [ТС]
таааак. убрал вообще Parent присвоение от Owner'a, и стало все ка кнадо оО!! НО, у меня вылетал критак без него, когда остальные компоненты и классы требующие Parent'а я создавал. НО, запихал сейчас все в
Delphi
1
procedure CreateWnd;
что должно создаваться потом, создается отлично, вот блиин... 2 дня проидел, промаялся...
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
22.02.2017, 11:11
а чем вообще отличается Parent от Owner'a. вот панель, на ней кнопка. Родитель кнопки - форма, Владелец - панель (или наоборот, не помню, не суть). если я кнопке сделаю одинаковыми родителя и владельца, на что это повлияет?
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
22.02.2017, 15:01
owner обычно форма а Parent - панель
0
 Аватар для avstantso
73 / 72 / 43
Регистрация: 17.11.2016
Сообщений: 211
22.02.2017, 15:43
Цитата Сообщение от DenNik Посмотреть сообщение
а чем вообще отличается Parent от Owner'a.
Различие — уровень абстракции.

Owner — TComponent, при разрушении которого разрушатся все компоненты, которыми он владеет.
Позволяет управлять иерархией в рамках RTL, модуль System.Classes.
При создании собственного компонента, можно манипулировать свойством Owner уже в конструкторе
(например создать дочерние компоненты).

Parent — TWinControl, при разрушении которого разрушаются все контролы, которые на нем лежат.
Позволяет управлять иерархией в рамках VCL, модуль Vcl.Controls.
Кроме того (а возможно, в первую очередь), Parent отвечает за всю механику лежания контролов друг на друге.
При создании собственного компонента, можно манипулировать начиная с метода
Delphi
1
    procedure SetParent(AParent: TWinControl); virtual;
при попытке манипуляций с Parent в конструкторе(например на свой винконтрол положить несколько контролов), можно получить исключение.

Цитата Сообщение от DenNik Посмотреть сообщение
если я кнопке сделаю одинаковыми родителя и владельца, на что это повлияет?
Для простых манипуляций с кнопками на панели, в соответствии с вышесказанным, разницы не будет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.02.2017, 15:43
Помогаю со студенческими работами здесь

смещение при добавлении компонента на панель
Доброго времени суток. Реализуя анимация соударения множества шаров друг о друга наткнулся на одну проблему: Шары - экземпляры...

Ошибка при добавлении компонента на форму
причем на форме уже есть компоненты.. выдает ошибку в адрессе и ссылается на модуль rtl60.bpl в помощи у справки такой заголовок...

Ошибка при добавлении компонента на форму
Здравствуйте! Проблема в том что при добавлении нового компонента на форму часто бывает так что после компиляции в тех или иных случаях...

Сохранить размер компонента при добавлении в JPanel
Здравствуйте! У меня есть панель JPanel, у которой установлен менеджер компоновки TabelLayout. Туда я добавляю JComboBox, но он весь...

Ошибка при добавлении компонента в существующий пакет
Кто знает, подскажите. Пол дня мучаюсь. Написал для пробы свой компонент Component->New Component - кнопка CountBtn -наследник...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru