С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
-18 / 3 / 0
Регистрация: 12.01.2014
Сообщений: 210

Как создать поле 12х5 из кнопок, чтобы нумерация индекса шла по порядку?

18.02.2017, 17:28. Показов 1890. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите создать поле из кнопок размером 12 на 5

Т.е Кнопки должны идти по порядку по индексу но в виде 12 x 5



первая строка идет до 12 потом на следущей строке идет 13 14 15 и так далее ? НИкак не получается спасибо ((
Вложения
Тип файла: rar Создание поля 12 на 5 кнопками .rar (1.6 Кб, 6 просмотров)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.02.2017, 17:28
Ответы с готовыми решениями:

Как сделать, чтобы таблица умножения шла в столбик
как сделать чтоб таблица умнажения была столбиками и как укаратить можно код? Private Sub Command1_Click() Text1.Text = "" ...

Как сделать так, чтобы анимация шла с середины и вверх
В общем возник вопрос, я увеличиваю ширину и высоту у картинки : <DoubleAnimation ...

Как сделать,чтобы из текстового файла в ТекстБокс информация шла по одной строке?
Как сделать,чтобы из текстового файла в ТекстБокс информация шла по одной строке ,каждые 3 мин,к примеру...

23
2 / 2 / 3
Регистрация: 07.02.2017
Сообщений: 24
18.02.2017, 23:50
Лучший ответ Сообщение было отмечено Rad0n как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Form_Load()
 
Dim Com(1 To 60) As CommandButton
Dim HB, WB, X1, Y1, n, x, y As Integer, s As String
 
HB = Form1.Height / 3: WB = Form1.Width / 3
Y1 = Form1.Height / 3: X1 = Form1.Width / 3
 
n = 0: x = X1: y = Y1
For i = 1 To 5
    x = X1
        For j = 1 To 12
            n = n + 1: s = Replace("Com" & Str(n), " ", "")
            Set Com(n) = Me.Controls.Add("VB.CommandButton", s, Me)
            Com(n).Height = HB / 5: Com(n).Width = WB / 12
            Com(n).Visible = True: Com(n).Caption = n: Com(n).Top = y: Com(n).Left = x
            x = x + WB / 12
        Next j
    y = y + HB / 5
Next i
 
 
End Sub
1
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
19.02.2017, 10:32
MMZ111
Создайте сначала одну кнопку cmd(0) и сделайте невидимой
После это загрузите динамически все остальные кнопки
Visual Basic
1
2
3
4
5
6
For i = 1 To 5
For j = 1 To 12
   index = 12*(i - 1) + j
   Load cmd(index)
Next j, i
' далее, я надеюсь, вы их сумеете разместить
2
-18 / 3 / 0
Регистрация: 12.01.2014
Сообщений: 210
19.02.2017, 11:50  [ТС]
Большое всем спасибо!
0
2 / 2 / 3
Регистрация: 07.02.2017
Сообщений: 24
19.02.2017, 13:14
echs, все совершенно верно!
0
-18 / 3 / 0
Регистрация: 12.01.2014
Сообщений: 210
22.02.2017, 00:43  [ТС]
Скажи пожалуйста а почему на события не реагируют данные кнопки

Visual Basic
1
2
3
Private Sub com_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
MsgBox "ok"
End Sub
Добавлено через 4 минуты
MMZ111, Скажи пожалуйста а почему на события не реагируют данные кнопки по индексу

Private Sub com_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
MsgBox "ok"
End Sub
0
2 / 2 / 3
Регистрация: 07.02.2017
Сообщений: 24
22.02.2017, 02:37
Rad0n, создай кнопки как предложил echs, - это будет правильно . И кнопки будут реагировать как надо. (ну а расставить их можешь как я написал )
0
-18 / 3 / 0
Регистрация: 12.01.2014
Сообщений: 210
22.02.2017, 13:44  [ТС]
Visual Basic
1
2
3
4
5
6
For i = 1 To 5
For j = 1 To 12
   Index = 12 * (i - 1) + j
   Load cmd(Index)
   cmd(Index).Visible = True
Next j, i
Расставить для меня труднее всего у тебя код какой то мудреный с делениями выравниванием относительно формы а я новичек мне проще надо. Можешь в более простом варианте! чтобы выравнивание начиналось от 1 индекса. Довести код. Спасибо
0
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
22.02.2017, 14:58
Rad0n
Вам нужно то всего для каждой кнопки указать ее
местоположение. То есть свойства Left и Top.
Смотрите код. Цифры там условные (я ваших не знаю)
Поставьте свои, чтобы все уместилось и кнопки не налезали
друг на друга. Будет все ровно.

Visual Basic
1
2
3
4
5
6
7
For i = 1 To 5 
For j = 1 To 12
   index = 12 * (i - 1) + j 
   Load cmd(index) 
   cmd(index).Top = 200 * (i - 1) + 300
   cmd(index).Left = 400 * (j - 1) + 300
Next j, i
0
-18 / 3 / 0
Регистрация: 12.01.2014
Сообщений: 210
22.02.2017, 17:42  [ТС]
Добавлено через 47 секунд
Все работает но почему кнопки начинаются с левого угла формы ? Мне надо чтобы они как бы более к центру были

Visual Basic
1
2
3
4
5
6
7
8
9
For i = 1 To 5
For j = 1 To 12
Index = 12 * (i - 1) + j
Load cmd(Index)
cmd(Index).Visible = True
cmd(Index).Caption = cmd(Index).Index
cmd(Index).Top = 600 * (i - 1) + 100
cmd(Index).Left = 1000 * (j - 1) + 100
Next j, i
Так и не понял какое значение менять чтобы выравнивание было от 0 индекса первой кнопки а он с угла начинает все время

меняю эти числа i-1 и j-1 все равно не доконца спускается. как мне сделать чтобы отсчет слева направа начинался от нулевого индекса а то так непонятно а так поставил 0 индекс кнопки куда нить и от него уже начинается отсчет

Добавлено через 11 минут
И еще не пойму мне нужно чтобы удобно было указывать от скольки до скольки считать 1 до 60 а тут в коде каким макаром он определяет что до 60 надо считать не пойму! А если мне понадобится считать от 60 до 90 ?
0
2 / 2 / 3
Регистрация: 07.02.2017
Сообщений: 24
22.02.2017, 18:13
Rad0n, если надо, как ты писал, "первая строка идет до 12 потом на следущей строке идет 13 14 15 и так далее", и чтобы было удобно, то можно сделать так.
1. Размещаешь на форме кнопку Cmd(0) такого размера и в том месте, где хочешь получить свой блок кнопок
2.
Visual Basic
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
Private Sub Form_Load()
Dim HCmd, WCmd, X1, Y1, n, x, y As Integer
Cmd(0).Visible = False
'создание дополнительных кнопок
For i = 1 To 60
    Load Cmd(i)
Next i
'HCmd - высота кнопок. WCmd - ширина кнопок- нам нужно уложить 12 штук по длине блока и 5 штук по высоте.
HCmd = Cmd(0).Height / 5: WCmd = Cmd(0).Width / 12
'X1, Y1 координаты верхнего левого угла блока кнопок
X1 = Cmd(0).Left: Y1 = Cmd(0).Top
n = 0    'n - номер выводимой кнопки
'x, y - координаты верхнего левого угла текущей кнопки. Задаем координату верхнего левого угла блока - там будет угол 1-й кнопки
x = X1: y = Y1
For i = 1 To 5
    x = X1
        For j = 1 To 12
            n = n + 1
            Cmd(n).Height = HCmd - 20: Cmd(n).Width = WCmd - 20     '20 - величина зазора между кнопками
            Cmd(n).Visible = True: Cmd(n).Caption = n: Cmd(n).Top = y: Cmd(n).Left = x
            x = x + WCmd
        Next j
    y = y + HCmd
Next i
End Sub
0
-18 / 3 / 0
Регистрация: 12.01.2014
Сообщений: 210
22.02.2017, 18:38  [ТС]
Почему то они очень близко друг к другу ! И не могу понять твой код! добавил это
cmd(n).Left = HCmd + 120 все равно близко друг на друге

Добавлено через 6 минут
cmd(n).Left = cmd(n).Left + 1000 так тоже нифига!

Сделай чтобы размеры все были как у первой Кнопки!!! 0 индекса у тебя все мудрено можно ведь проще! подальше друг от друга чтобы можно было сделать! Ибо очень все запутано

КСТАТИ и от 60 до 120 не считает уже!!!

Добавлено через 6 минут
А все пришлось отсчет от 60 тоже поставить и заработало!

Добавлено через 2 минуты
Чтобы они СТАЛИ ДРУГ ОТ ДРУГА ДАЛЬШЕ Надо растягивать кнопку на всю форму что за бред ? Почему он на команду не реагирует cmd(n).left=cmd(n).left +1000
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
22.02.2017, 18:54
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Form_Click()
k = 0.8
w = Me.Width / 12
h = Me.Height / 6
Command1(0).Visible = False
On Error Resume Next
For i = 1 To 5
For j = 1 To 12
   Index = 12 * (i - 1) + j
   Load Command1(Index)
   Command1(Index).Visible = False
   Command1(Index).Move w * (j - 1), h * (i - 1), k * w, k * h
   Command1(Index).Visible = True
   Command1(Index).Caption = Index
Next j
Next i
End Sub
Добавлено через 4 минуты
можно и тут
Visual Basic
1
Private Sub Form_Resize()
0
-18 / 3 / 0
Регистрация: 12.01.2014
Сообщений: 210
22.02.2017, 19:11  [ТС]
Жаль в твоем коде нельзя отсчитывать от 60 до 120
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
22.02.2017, 19:19
точнее, что отсчитывать

Добавлено через 4 минуты
какое точное задание.
0
-18 / 3 / 0
Регистрация: 12.01.2014
Сообщений: 210
22.02.2017, 19:31  [ТС]
ну мне нужно чтобы можно было задавать число например он считает и создает кнопки от 1 до 60 в твоем коде но потом мне надо задать другие цифры например от 60 и до 126
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
22.02.2017, 19:33
126-60=66 --- сколько рядов, сколько столбцов
0
-18 / 3 / 0
Регистрация: 12.01.2014
Сообщений: 210
22.02.2017, 19:45  [ТС]
в коде то как это будет выглядеть ? от 60 до 126
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
22.02.2017, 20:10
Вам необходимо продолжить , т.е., к тем 5х12 , что уже загружены, добавить еще до 126 , или сначала начать, что б на форме были только от 60 до 126, или как,
Вы постарайтесь как то более точно сформулировать задачу
0
-18 / 3 / 0
Регистрация: 12.01.2014
Сообщений: 210
22.02.2017, 22:38  [ТС]
Вот именно мне надо заново создать кнопки только чтобы начинались не от 1 а от 60 и до 128

Чтобы эти числа можно было задавать от и до скольки и все

что б на форме были только от 60 до 126
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.02.2017, 22:38
Помогаю со студенческими работами здесь

Сделать, чтобы при движении курсора за ним шла линия, как хвост у кометы
Здравствуйте. Нужно чтобы при движении курсора за ним шла линия как хвост у кометы. Нужно чтобы это действовало на всей форме. Спасибо...

Нумерация не по порядку
Доброго времени суток. Как исправить баг с номерацие записей в ID?? Там указано, что ID єто IndentitySpecification с шагом 1, всё по...

Нумерация по порядку (не Счетчик)
Приветствую, Уважаемый форумчане! Пожалуйста, помогите советом! Вроде все просто, но, к своему удивлению, сделать не получилось :-( ...

Нумерация по порядку для печати
Нужно распечатать по 4-и страницы с одной стороны и с другой. на одном листе бумаги. Как правильно задать нумерацию для печати, чтобы...

Нумерация элементов в ComboBox не по порядку
Такой вопрос: можно ли записать в ComboBox данные так, чтобы его индексы шли не по порядку? Если да, то как это реализовать?


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru