Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 02.02.2021
Сообщений: 27

Кнопки VCL

10.04.2021, 17:08. Показов 3679. Ответов 4

Студворк — интернет-сервис помощи студентам
Всем привет! Подскажите, пожалуйста, как грамотнее сделать: имеется определенный набор кнопок (8шт), заранее размещенных на форме и невидимые, при нажатии кнопок "Add" и "Delete" должны соответственно Visible = true/false. У меня реализовано так:


C++
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
26
27
28
29
30
31
32
33
34
35
36
37
38
int index = 2;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
   btnDel -> Enabled = false;
   RadioGroup1 -> ItemIndex =0;
}
void __fastcall TForm1::btnAddClick(TObject *Sender)
{
 
       if (index<9 ) {
               Buttons[index]-> Visible = true;
               index = index+1;
               btnDel -> Enabled = true;
       }  else {
            btnAdd -> Enabled = false;
       }
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::btnDelClick(TObject *Sender)
{
        switch(RadioGroup1->ItemIndex){
        case 0:
               if (index>1 & index<9) {
               Buttons[index]-> Visible = false;
               index = index-1;   //исключение!
       }      else {
             btnDel -> Enabled = false;
       }
        break;
        case 1:
         for (int i=2; i < 10; i++) {
           Buttons[i]-> Visible = false;
         }
        break;
        }
}
но выдает ошибки, иногда кнопки неактивны, когда не нужно. (RadioButton нужны для удаления всех сразу/по одному элементу) Буду очень благодарна за помощь!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.04.2021, 17:08
Ответы с готовыми решениями:

VCL Смена надписи кнопки
Как сделать чтобы при наведении на кнопку курсора появлялась надпись, а при его отсутствии снова исчезала? Нашел OnMouseMove, но он...

XP OC vcl
3 месяца назад я мог создавать ПО только на Visual basic 6! Вот и я к нему однажды скачать компоненты xp!Там были новые кнопки линии...

Поток и VCL
Небольшой теоретический вопрос. В приложении создаю фрейм (TFrame) и поток TThread. На фрейме располагаются визуальные компоненты,...

4
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,423
Записей в блоге: 3
10.04.2021, 19:48
Цитата Сообщение от heif Посмотреть сообщение
Буду очень благодарна за помощь!
heif, было бы куда как лучше, если бы задача была озвучена более внятно... А этот код... Нет, ну классно, конечно, что Вы что-то делаете сами, но... Нет, правда, озвучьте задание!
0
0 / 0 / 0
Регистрация: 02.02.2021
Сообщений: 27
11.04.2021, 11:59  [ТС]
D1973, то есть нужно реализовать обычное добавление и удаление кнопок на форме, только они изначально расположены, поэтому менять необходимо видимость
0
0 / 0 / 0
Регистрация: 02.02.2021
Сообщений: 27
18.04.2021, 11:59  [ТС]
Выдает ошибку, потому что значения выходят из заданного диапазона. Изначально 8 (первая- видимая, остальные невидимые) кнопок на форме и кнопки "Добавить"(активна)/"Удалить"(неактивна).
- при нажатии на кнопку Добавить, видимой становиться следующая кнопка;
- при первичном нажатии на кнопку Добавить активируется кнопка удалить;
- когда все кнопки станут видимыми, кнопка Добавить становиться неактивной
- удалить (сделать невидимым) первый элемент нельзя;

почему-то из циклов все вылетает и выдает ошибки
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
19.04.2021, 11:48
Лучший ответ Сообщение было отмечено heif как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void __fastcall TForm1::Button9Click(TObject *Sender)
{                      /* plus button */
    TButton *Bt[8] = { Button1, Button2, Button3, Button4,
                       Button5, Button6, Button7, Button8 };
    int i,ko = 1;
    for(i=0;i<8;ko++,i++) if(!Bt[i]->Visible) { Bt[i]->Visible = true; break; }
    Button9->Enabled = ko <8;
    Button10->Enabled = ko >1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button10Click(TObject *Sender)
{                     /* minus button */
    TButton *Bt[8] = { Button1, Button2, Button3, Button4,
                       Button5, Button6, Button7, Button8 };
    int i,ko = 7;
    for(i=7;i>=0;ko--,i--) if(Bt[i]->Visible) { Bt[i]->Visible = false; break; }
    Button9->Enabled = ko <8;
    Button10->Enabled = ko>1;
}
//---------------------------------------------------------------------------
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.04.2021, 11:48
Помогаю со студенческими работами здесь

VCL Skin 5.25
Подскажите где найти кряк? ) Погуглил, нашёл кряки только для Delphi и то для ранних версий...need help!

Glut и VCL
Дело в том что у нас лабораторная работа по библиотеки glut, я терпеть не могу в лабах тупо копировать и вставлять. Исходный код в лабе под...

OpenGL и VCL
Продолжение темы с отклонением на OpenGL. Начало тут Что за тонкости ?

Ошибка из за 'vcl.h'
Всем здрасте. Такая вот проблема переустановил Embarcadero RAD Studio XE чтобы добавить Builder Delphi. Теперь возникает проблема создаю...

VCL Component TCheckBox
Как перегрузить виртуальный метод Paint() для TCheckBox. Или же в каком методе происходит отрисовка этого компонента?


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru