![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
serezhka1986 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 215 Регистрация: 12.6.2009 Репутация: нет Всего: 0 |
Добрый день!
У меня на форме есть несколько компонентов Shape. Допустим я знаю name одного из них (в виде простой строки). Как мне изменить (высоту, ширину) или удалить компонент, name которого у меня есть в строке, по нажатию на button? --------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... |
|||
|
||||
Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 15 Всего: 76 |
Перебором находишь свой компонент. Сравнение по классу и св-ву Name. Примеров навалом, поиск по ComponentCount, Components.
Добавлено через 7 минут и 13 секунд serezhka1986, Вот только зачем? Никогда не понимал эти шаманства по поиску компонентов по имени, тегу и т.д. Это сообщение отредактировал(а) Rennigth - 22.1.2013, 12:03 -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 2 Всего: 146 |
|
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
Иногда бывает нужно - при динамическом создании/удалении нескольких контролов одного класса (в ходе взаимодействия с пользователем), когда кроме них на контейнере есть еще "стационарные" контролы. Это сообщение отредактировал(а) kami - 22.1.2013, 13:34 |
|||
|
||||
Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 15 Всего: 76 |
Да я понимаю что ситуации разные бывают, но имхо таких ситуаций надо, кровь из носа, но избегать. Добавлено через 5 минут и 15 секунд Вот чес-слово, если мне попадается такое "шаманство" и мне еще копаться в нем, я готов задушить этого шамана. ![]() -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
А что непонятного? Есть 100 контролов, и каждому нужно изменить какое-то свойство. Какие ещё варианты решения этой задачи? -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 15 Всего: 76 |
Если это контролы кинутые в дизайне на форму, то мы всегда и без всякого имени можем к ним обратиться. Если созданные динамически, то ссылки надо сохранять(TList, TObjectList, хоть массивы или просто переменные нужного типа). Вообще имхо считаю что св-во name нужно только в дизайнтайме чтоб видеть кого мы виделили ну и т.д. и при отладке иногда. -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
serezhka1986 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 215 Регистрация: 12.6.2009 Репутация: нет Всего: 0 |
586, Спасибо! Лови +
--------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Т.е. вместо цикла до ComponentCount и вышеуказанного кода мы будем писать Shape1.Width:=100; Shape2.Width:=100; Shape100.Width:=100; ? -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Rennigth |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 15 Всего: 76 |
Если изменить надо трем, то да. Если 100, и изменить св-во всем на одинаковое, то конечно легче пройтись по ComponentCount/Components. Ну а если компонентов 100, а надо менять например:
а, еще хуже
То надо задуматься, все ли я делаю правильно... может стоило отдельный компонент например создать или еще что-то, а не накидывать на форму 100 шейпов... p.s. это все конечно все мое мнение, и как я уже говорил ситуации бывают разные... -------------------- (* Honesta mors turpi vita potior *) |
||||||
|
|||||||
serezhka1986 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 215 Регистрация: 12.6.2009 Репутация: нет Всего: 0 |
У меня ситуация как раз такая. У меня ActiveX на Delphi размещен на форме 1С, и я с 1С-ки динамически создаю компонент, сохраняя в 1С его name, потом из 1С-ки меняю свойство нужного компонента, зная его имя. Но не могу понять почему так получается, что когда с 1С передаю имя (например, Button2), и хочу его указать в создаваемом компоненте, то в Delphi ошибка. Что-то типа: Произошла исключительная ситуация ''Button2 Я так понял появились какие-то кавычки в имени? Почему такое может быть? --------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
ошибка в 17ой строке
|
|||
|
||||
serezhka1986 |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 215 Регистрация: 12.6.2009 Репутация: нет Всего: 0 |
Ладно, привожу пример: Допустим есть процедура, где я создаю динамически Panel
Из 1С передаются, например, такие параметры:
Произошла исключительная ситуация (MyActiveX.MyForm): ''Panel1 Если же напишу так:
... то панель нормально создается и имя остается Panel1. Пробовал trim(NewPanelName) вывести в Edit, так там все нормально, отображается текст Panel1. В чем может быть проблема? --------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... |
||||
|
|||||
serezhka1986 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 215 Регистрация: 12.6.2009 Репутация: нет Всего: 0 |
Сейчас попробовал загнать текст в Edit1 и взять его как имя панели, и все нормально отработало:
Что за прикол, не пойму... ![]() --------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
возможно компонент с именем panel1 уже существует, и это приводит к эксцепшну
-------------------- Обижено школьников: 8 |
|||
|
||||
serezhka1986 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 215 Регистрация: 12.6.2009 Репутация: нет Всего: 0 |
Нет еще компонента с таким именем. Я же пишу, если взять с переменной panel1, тогда ошибка, если прописать в коде Panel.Name := 'Panel1' - тогда все отлично. --------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
уверен что в переменной нет ничего лишнего? например символов конца строки
-------------------- Обижено школьников: 8 |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
||||
|
||||
serezhka1986 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 215 Регистрация: 12.6.2009 Репутация: нет Всего: 0 |
Та не одолжение это ![]() --------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
Сделай нам ещё одно одолжение, если тебе не сложно ![]() Пришли полный ТЕКСТ ошибки. Добавлено через 24 секунды
Да, ошибки у нас в головах ![]() Добавлено через 3 минуты и 11 секунд а ещё лучше, если параллельно выложите картинку ![]() |
|||
|
||||
serezhka1986 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 215 Регистрация: 12.6.2009 Репутация: нет Всего: 0 |
Ошибка отображается в 1С, поскольку это ActiveX-элемент на 1С-овской форме. Полный текст ошибки: Произошла исключительная ситуация (MyActiveX.MyForm): ''Panel1 Я его уже писал в этом посте --------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... |
|||
|
||||
gesper |
|
|||
![]() "Shарфик" ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 23.2.2005 Репутация: 1 Всего: 2 |
Это ты опечатался и два раза одинарную кавычку поставил перед Panel1? Имена кроме Panel1 пробовал, например "mfxPanel1" ? --------------------
...И приколется обломившийся и oбломится приколовшийся... |
|||
|
||||
Чучмек |
|
||||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 7 Всего: 41 |
serezhka1986,
Посмотри, что на самом деле содержит NewPanelName. Скорей всего
Ставлю сто против одного, что если
ошибки не будет. -------------------- умную мысль держи при себе, а дурной - поделись с другими |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |