![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Xenos |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 1.2.2005 Репутация: нет Всего: нет |
У меня есть такая кнопка
и еще 32 такие же кнопки от Б до Я. Так вот, как сделать так, что б написать этот код только раз, заменив 'а' на какой-нить char , а на onClick каждой кнопки просто присваивать char'у нужное значение? |
|||
|
||||
| Zero |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: 8 Всего: 24 |
Вообщем брось на форму 2 едита, и кнопку, а на неё такой код:
Я пологаю у тебя Z - это массив состоящий из 33 элементов, тогда тебе надо с помощью функции ORD, определить номер i, затем переприсвоить
Не поймёш пиши. |
||||
|
|||||
| Satana |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 564 Регистрация: 15.9.2004 Где: Ставрополь, СЗ ра йон Репутация: 1 Всего: 5 |
попробуй так:
[cod=delphi] procedure chhar(str:char); var i:integer; begin for i:=1 to length(z) do if z[i]=str then (FindComponent(Format('Panel%d',[i])) as TPanel).caption:=AnsiUpperCase(str); [/cod] и затем в процедуре обработчике будешь вызывть эту с параметром буквы -------------------- |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 5 Всего: 7 |
Сделай кэпшен кнопок буквы и вставляй его вместо параметра. :-)
|
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Для каждой кнопки событие OnClick пропиши не автоматом, а ручками. Вместо Button1Click, Button2Click и т.д. пиши руками просто ButtonClick. Тогда на все кнопки будет вызываться одно событие и не нужно писать 33 одинаковых кода. |
|||
|
||||
| Xenos |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 1.2.2005 Репутация: нет Всего: нет |
Zero
Ты немного не понял z:string, и моя задача не перевод из одного регистра в другой, а прверка наличия в z определенной букввы, соответственно для каждой копки, тость для Button1.caption='А' проверяет наличие в z 'а' ,и так каждая кнопка, тоесть Button2.caption='Б' наличие 'б' и т.д. В Z буквы по умолчанию нижнего регистра, хотя можно сделать и верхнего, это безразницы что искать. Satana Thnx, так уже пробовал только вот как с этим справиться
не знаю. Эта ошибка вылазит в
Bes caption кнопок и так буквы, только как это к делу относится, это не укорачивание а удлиннение получится. Snowy Нет так не выйдет, я бы мог и просто в свойствах каждой на onclick прописать Button1.click, ну или на крайняк завести какую-нить левую кнопку и спихнуть все на неё, но проблема в том, что для каждой кнопки должно быть что то типа этого
Тоесть (с) для каждой кнопки должен быть разным. |
||||||
|
|||||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
у тебя Classes прописан в Uses? Добавлено @ 11:47 сорри, findcomponent это метод Tcomponent вроде, сделай функцию в классе формы -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Тоже мне проблема. Задай каждой кнопке в каптион свою буковку и по буковке проверяй.
Если не хочешь, чтобы буковку было видно, спрячь буковку в Hint и проверяй по хинту. Тогда c:=TButton(Sender).Hint Это сообщение отредактировал(а) Snowy - 1.2.2005, 12:12 |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
да можно и в tag писать ord от буквы
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| Xenos |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 1.2.2005 Репутация: нет Всего: нет |
Блин, толи вы меня не понимаете, толи я вас (скорее конечно второе).
На самом деле на каждой кнопке висит вот такой код :
я сначала его специально урезал и поместил в пост только основную его часть, чтоб никого не путать. Мне всеравно по чему искать по hint'у или по caption'у или по тагу. Мне не хочется всю эту хфигню 33 раза переписать. Я хотел вместо всего верхнего кода на каждую кнопку повесить что то типа этого:
Rennigth Если можно про функцию поподробнее, тоесть как именно это оформить? |
||||
|
|||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
(Sender as TButton).caption; - это тект той кнопки которая была нажата -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
Нифига не понял в чем проблемма...
Может енто...
-------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Все элементарно. Кладешь 33 кнопки. На каждой кнопке написана ее буква (только одна буква!). (буква на кнопе соответственно прописана в свойстве Caption). У аждой кнопки также есть событие OnClick. В него ручками нужно прописать ButtonClick, а не назначать по умолчанию, чтобы все кнопки при нажатии вызывали одно и то же событие, а не каждая кнопка свое.
Далее. Жмем на любую из кнопок. Запускается следующий код:
Код смотрит какая буква нарисована на кнопке, и проверяет, а есть ли такая в строке. Вот и все. Код один, кнопок много. Код различает кнопки по надписи, которая на кнопке нарисована. |
|||
|
||||
| Satana |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 564 Регистрация: 15.9.2004 Где: Ставрополь, СЗ ра йон Репутация: 1 Всего: 5 |
Snowy Ну в принципе та же фигня что и я написал только красивее
-------------------- |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Вот нарисовал твое "Поле Чудес". Можешь взять за основу. Переделать конечно придется, поскольку я все запихал в OnCreate и ничего не уничтожал. Но саму идею отсюда понять сможешь.
Привожу только Unit1, т.к. dpr стандартный. На форму тоже клаcть ничего не нужно - оставь стандартную. Просто создай новый проект и замени весь код Unit1 на этот:
Это сообщение отредактировал(а) Snowy - 2.2.2005, 14:23 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |