C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как "приравнять" два компонента?
BEERZONE
Отправлено: 11.06.2006, 18:21


Ученик-кочегар

Группа: Участник
Сообщений: 21



Создаю две кнопки с абсолютно разными свойствами. В одной из них пишу Button1=Button2; (правда глупо?:-)). Вроде всё хорошо (хоть этого и не видно). Прога говорит, что Button1->Name="Button2". Во-первых, не понятно, как она терпит два компонента с одним именем, а самое главное FindComponent("Button1") всё равно находит Button1. Ничего не понимаю. Если кто мой бред понял, помогите...
Konstantine
Отправлено: 11.06.2006, 23:13


Мастер участка

Группа: Модератор
Сообщений: 545



Если Вы посмотрите *.h файл , то увидете помимо других — две строчки:
CODE
TButton *Button1;
TButton *Button2;
это описание указателей на компоненты
и своей строкой Button1=Button2 (действительно глупо:)) — Вы просто указателю Button1 присваиваете адрес компаненты Button2. т.е. они теперь она ссылаются на один объект (с именем Button2).

НО функция (точнее метод формы) FindComponent — находит на форме компонент с именем (имя компонента и имя указателя — две разные вещи) Button1.
P.S.: форма вытерпит и 2 компонента с одним именем (но только созданных в ходе выполнения программы), хотя на этапе дизайна формы Вам не позволит этого sad.gif

Поэтому вместо неверной своей строки не ленясь напишите полностью:
CODE
Button1->Caption=Button2->Caption;
//... и т.д. копирование других свойств
Button1->OnClick=Button2->OnClick;
... и т.д. копирование событий

и ни в коем случае не использовать что-то типа CopyMemory wink.gif в объектах — только по одному свойству (property)

Отредактировано Konstantine — 11/06/2006, 23:16

Вернуться в Вопросы программирования в C++Builder