| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Массив из кнопок. |
| Автор: Nikolasha 11.12.2005, 19:08 |
| Привет всем. Возник вопросик, можно ли создать массив из TSpeedButton'ов?(Для удобства работы - морской бой) Мне нужно создать два таких массива по 100 элементов (10х10). Можно ли это организовать? Я читал в DRKB по массив чекбоксов. Но чего то с баттонами не работает. Помогите, пожалуйста. Заранее спасибо. |
| Автор: FRAGNATIC 11.12.2005, 19:28 |
| конечно можно=) ток зачем тебе для морского боя 200 кнопок? может лучше сделать фон ввиде картинке и на ней дапустим рисовать чёнить типа при нажатии и если мимо то просто крестик нарисовать =))) |
| Автор: FRAGNATIC 11.12.2005, 19:40 | ||
что-то типа этого тока не забудь их потом все удалить (free ) а для этого масив лучше сделать глобальной переменой ) |
| Автор: Poseidon 11.12.2005, 21:40 | ||||||||
Наверное правельнее будет
|
| Автор: FRAGNATIC 11.12.2005, 22:23 |
| Poseidon а разница? я пример привёл а там уже хоть из чего угодно делай) |
| Автор: Nikolasha 13.12.2005, 22:10 |
| Спасибо за ответы. Только вот нужен двумерный массив. Еще один вопрос. у меня случайным образом генериться массив кораблей следующего типа: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 В нем, соответственно, еденички отвечают за палубы у корабликов. На форме лежат 10х10(=100 ) кнопок. Как можно организовать чтобы на кнопочках кот. соответствует еденичка появилась определенная картинка? |
| Автор: Rennigth 13.12.2005, 22:14 |
| Nikolasha ну если чтоб попроще то создавай массив из кнопок 10X10 и у них есть property Tag, в нем можешь хранить значения 0/1(палуба/море) . Добавлено @ 22:15 ну и соответственно картикнки грузить в зависимости от этого значения. |
| Автор: Nikolasha 13.12.2005, 22:28 |
| А каким образом этот массив разместиться на форме где мне нужно? |
| Автор: YurikGL 13.12.2005, 22:53 | ||||
уже было....
|
| Автор: sexton 14.12.2005, 08:50 |
| Думаю в данной ситуации StringGrid бы вполне подошел вместо такго дикого количесвта кнопок. |
| Автор: Nikolasha 14.12.2005, 17:03 | ||
| Спасибо, все получилось. Еще один вопрос: как можно теперь обрабатывать события onclick для этих кнопок (можно ли как нибудь использовать as Sender)? Добавлено @ 17:05
Вот код для того, чтобы кнопочки встали в квадрат 10x10. И еще вопрос. Как с этот массив убрать из памяти? с помощью free можно? Если да, то как? |
| Автор: FRAGNATIC 14.12.2005, 18:20 | ||
TButton(sender) делай с ним что хош насчёт освобождения поидеи должен сам освобождатся тк кнопки лежат на форме ну или просто мож в цикле FRee |
| Автор: Nikolasha 14.12.2005, 19:55 |
| Не пашет, на стадии компиляции выдает ошибку следущего содержания: Expected an identifier but invalid character character #160 found Что не так? |
| Автор: Демо 14.12.2005, 22:08 |
| Я бы рекомендовал использовать TImage - 100 штук. либо TImageList. В этом случае ты без проблем на TImsage можешь рисовать все, что угодно, на каждом обрабатывать OnClick. Да и выглядеть будет красивее, по-моему. |
| Автор: THenry 14.12.2005, 22:42 |
| Писал такую штуку тока на С++ в StringGrid. Удобно и проще некуда. P.S. А как насчет того что вокруг корабля на расстоянии одной клетки не может быть другого корабля? А твоя маска поля боя это не предусматривает, добавь еще вокруг каждого корабля "оградку" к примеру -1 |
| Автор: Nikolasha 14.12.2005, 22:47 | ||||||
Если ты глянешь на массив, то увидишь, что все корабли стоят как надо. Никто ни с кем не соприкасается.
Это у меня был первый вариант, но слишком уж муторно работать с таким количеством рисунков.
Они выглядят не очень симпатично, к тому же хотелось бы ставить картинки... Ну так что насчет ошибки? Чем она может быть вызвана? |
| Автор: THenry 14.12.2005, 22:53 |
| Они то стоят как надо но динамичсеки тебе с 1 и 0 будет тяжело создавать маску |
| Автор: Nikolasha 14.12.2005, 23:05 | ||
Поживем увидим, мне главное с этим вопросом разобраться. |
| Автор: Akella 15.12.2005, 10:05 | ||
так на какую строку ругается компилятор, а, надо же сразу "говорить" |
| Автор: Демо 15.12.2005, 14:35 | ||
А принципы ООП для чего?-) |
| Автор: FRAGNATIC 15.12.2005, 18:47 |
| Nikolasha посмотрел твой код) [Error] Unit1.pas(126): Illegal character in input file: ' ' ($A0) всё дело как я понял в том что когда ты копировал код с форума и вставлял в свой модуль скопировался левак вообщем просто поудаляй пробелы всякие которые у тя там были перед теми строками на которых ошибку выдаёт) |
| Автор: Staruha 15.12.2005, 21:43 |
| Создаю программно 10 переключателей и объединяю в группу .Нажимаю переключатель создается программно другой GroupButton и четыре переключателя. Нажимаю один из четырех и получается,что у меня не две группы ,а одна. Так же нажимаю следующую кнопку в первой группе- вылетает ошибка. Я так понимаю не хочет создавать повторно уже созданный GroupButton. Наверно его надо сначала удалить. Но как пробежаться по объектам не знаю. Делфи изучаю меньше месяца. |
| Автор: FRAGNATIC 16.12.2005, 00:29 | ||
пробежатся просто for i:=0 to ControlCount-1 do if Controls[i] is TSomeComponent (например TButton) then .... а так я не совсем понял сути вопроса и ещё не плохо былобы код выложить |
| Автор: Staruha 16.12.2005, 11:46 | ||
Нажимаю RBut[i] загружаются 4 перекл Rbut[rw] Нажимаю RBut2[rw] почему-то отключается RBut[i] и когда нажимаю следующий RBut[i] вылетает ошибка |
| Автор: Romikgy 16.12.2005, 12:03 |
| В этом примере при каждом нажатии на RBut[i] создаются объекты с одним и темже именем, что недопустимо, ЗЫ также при нажатии другой RBut[i] память не освобождается ИМХО мелгче накидать 4 TRadioButton и менять их в зависимости он необходимости чем создавать динамически |