WolfVitaliy |
Отправлено: 17 Июля, 2017 - 06:51:34
|
Прохожий
Покинул форум
Сообщений всего: 13
Дата рег-ции: Июнь 2017
Откуда: Харьков
Репутация: 0
|
Здравствуйте.
Помогите сделать переключатель галок.
Знаю что есть примеры на форуме. Нашел несколько. Но они слишком сложные для меня. Два дня потратил. Не решил.
Так что жду помощи.
Суть работы простая.
Условие такое что может быть включена только одна галка.
Включаете первую галку, вторая выключается сама. И наоборот.
И как раз будет наглядный пример для новичков.
Заранее благодарен.
Цитата:
int pos_size_check0[2][4];
string text_check0[2];
int flag_check0[2];
pos_size_check0[0][0]=32;
pos_size_check0[0][1]=39;
pos_size_check0[0][2]=60;
pos_size_check0[0][3]=20;
pos_size_check0[1][0]=32;
pos_size_check0[1][1]=87;
pos_size_check0[1][2]=60;
pos_size_check0[1][3]=20;
text_check0[0]="Галка 0";
text_check0[1]="Галка 1";
flag_check0[0]=1;
flag_check0[1]=0;
//////////
createdialog(0, CHECK, #pos_size_check0[0][0], #text_check0[0], #flag_check0[0]);
//////////
showdialog(0, "Диалог", 498, 324, 250, 300, 1, 1);
//////////
loop() sleep(10);//Убрать после теста
|
|
|
007wan |
Отправлено: 17 Июля, 2017 - 12:27:21
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
WolfVitaliy, у меня была такая тема вот, что мне ответил Kibor за что его я благодарю:
"одноразовая галка" (Отобразить)
CODE:
int pos_size_check0[3][4];
string text_check0[3];
int flag_check0[3];
pos_size_check0[0][0]=20; pos_size_check0[0][1]=18; pos_size_check0[0][2]=60; pos_size_check0[0][3]=20;
pos_size_check0[1][0]=91; pos_size_check0[1][1]=18; pos_size_check0[1][2]=60; pos_size_check0[1][3]=20;
pos_size_check0[2][0]=167; pos_size_check0[2][1]=18; pos_size_check0[2][2]=60; pos_size_check0[2][3]=20;
text_check0[0]="Mazilla"; text_check0[1]="Google"; text_check0[2]="Opera";
flag_check0[0]=0; flag_check0[1]=0; flag_check0[2]=0;
//////////
createdialog(0, CHECK, #pos_size_check0[0][0], #text_check0[0], #flag_check0[0]);
//////////
showdialog(0, "Выбор", 558, 234, 250, 90, 1, 1);
//////////
int t_flag_check0[3];
for (int n=0; n<3; n++)t_flag_check0[n]=flag_check0[n];
enabletimer(0);
loop() sleep(10);//Убрать после теста
CREATE_TIMER(0, 100)//Номер таймера, выполнение таймера через мсек.
{
if (flag_check0[0]==1 && t_flag_check0[0]!=flag_check0[0])
{flag_check0[1]=0; flag_check0[2]=0; t_flag_check0[1]=0; t_flag_check0[2]=0; t_flag_check0[0]=flag_check0[0];}
if (flag_check0[1]==1 && t_flag_check0[1]!=flag_check0[1])
{flag_check0[0]=0; flag_check0[2]=0; t_flag_check0[0]=0; t_flag_check0[2]=0; t_flag_check0[1]=flag_check0[1];}
if (flag_check0[2]==1 && t_flag_check0[2]!=flag_check0[2]){
flag_check0[0]=0; flag_check0[1]=0; t_flag_check0[0]=0; t_flag_check0[1]=0; t_flag_check0[2]=flag_check0[2];}
if (flag_check0[0]==0 && flag_check0[1]==0 && flag_check0[2]==0)
{
/////////////////////////////////скрипт для галки1////////////////////////////////////////////////
if (t_flag_check0[0]!=flag_check0[0]){flag_check0[0]=1;t_flag_check0[0]=flag_check0[0];
beep(1000, 500);
}
/////////////////////////////////скрипт для галки2////////////////////////////////////////////////
if (t_flag_check0[1]!=flag_check0[1]){flag_check0[1]=1;t_flag_check0[1]=flag_check0[1];
beep(1000, 500);
}
/////////////////////////////////скрипт для галки3////////////////////////////////////////////////
if (t_flag_check0[2]!=flag_check0[2]){flag_check0[2]=1;t_flag_check0[2]=flag_check0[2];
beep(1000, 500);
}
}
}
Только вот единственное, что я знаю как сделать сам скрипт к этим галкам, но скрипт срабатывает, только если второй раз щелкнуть на эту же галку.
Смотри тут оригинал
(Добавление)
Или проще говоря вот сам код
CODE:function perekluchatel_galok()//реализация переключателя галок
{
if (flag_check[0]==1 && t_flag_check[0]!=flag_check[0])
{flag_check[1]=0; flag_check[2]=0; t_flag_check[1]=0; t_flag_check[2]=0; t_flag_check[0]=flag_check[0];}
if (flag_check[1]==1 && t_flag_check[1]!=flag_check[1])
{flag_check[0]=0; flag_check[2]=0; t_flag_check[0]=0; t_flag_check[2]=0; t_flag_check[1]=flag_check[1];}
if (flag_check[2]==1 && t_flag_check[2]!=flag_check[2]){
flag_check[0]=0; flag_check[1]=0; t_flag_check[0]=0; t_flag_check[1]=0; t_flag_check[2]=flag_check[2];}
if (flag_check[0]==0 && flag_check[1]==0 && flag_check[2]==0)
{
if (t_flag_check[0]!=flag_check[0]){flag_check[0]=1;t_flag_check[0]=flag_check[0];}
if (t_flag_check[1]!=flag_check[1]){flag_check[1]=1;t_flag_check[1]=flag_check[1];}
if (t_flag_check[2]!=flag_check[2]){flag_check[2]=1;t_flag_check[2]=flag_check[2];}
}
(Добавление)
А вообще, если будут вопросы, то вводи в поиск или ищи нужные темы создателя программы, чем по ляму раз создавать старые темы
(Добавление)
Кстати, Kibor, а возможно ли сделать так, что бы вышеперечисленный пример с "одноразовой" галкой, при нажатии любой галки выполняется скрипт, а можно ли сделать так, что бы скрипт выбранной галки выполнится по нажатию кнопки(Отредактировано автором: 17 Июля, 2017 - 12:40:46) |
|
|
Kibor |
Отправлено: 17 Июля, 2017 - 12:58:57
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
007wan пишет: можно ли сделать так, что бы скрипт выбранной галки выполнится по нажатию кнопки
CODE:
int pos_size_check0[2][4];
string text_check0[2];
int flag_check0[2];
pos_size_check0[0][0]=32;
pos_size_check0[0][1]=39;
pos_size_check0[0][2]=60;
pos_size_check0[0][3]=20;
pos_size_check0[1][0]=32;
pos_size_check0[1][1]=87;
pos_size_check0[1][2]=60;
pos_size_check0[1][3]=20;
text_check0[0]="Галка 0";
text_check0[1]="Галка 1";
flag_check0[0]=1;
flag_check0[1]=0;
//////////
int t_flag_check[2];
createdialog(0, CHECK, #pos_size_check0[0][0], #text_check0[0], #flag_check0[0]);
//////////
showdialog(0, "Диалог", 498, 324, 250, 300, 1, 1);
//////////
sleep(200);
flag_check0[0]=1;
flag_check0[1]=0;
t_flag_check[0]=flag_check0[0];
t_flag_check[1]=flag_check0[1];
loop()
{
if (flag_check0[0]==1 && t_flag_check[0]!=flag_check0[0])
{
beep(1000, 500);
}
if (flag_check0[1]==1 && t_flag_check[1]!=flag_check0[1])
{
beep(2000, 500);
}
perekluchatel_galok();
sleep(10);//Убрать после теста
}
function perekluchatel_galok()//реализация переключателя галок
{
if (flag_check0[0]==1 && t_flag_check[0]!=flag_check0[0])
{flag_check0[1]=0; t_flag_check[1]=0; t_flag_check[0]=flag_check0[0];}
if (flag_check0[1]==1 && t_flag_check[1]!=flag_check0[1])
{flag_check0[0]=0; t_flag_check[0]=0; t_flag_check[1]=flag_check0[1];}
if (flag_check0[0]==0 && flag_check0[1]==0)
{
if (t_flag_check[0]!=flag_check0[0]){flag_check0[0]=1;t_flag_check[0]=flag_check0[0];}
if (t_flag_check[1]!=flag_check0[1]){flag_check0[1]=1;t_flag_check[1]=flag_check0[1];}
}
}
|
|
|
007wan |
Отправлено: 17 Июля, 2017 - 13:10:18
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Остается добавить flag_button и всё будет как я задумал) или...
(Добавление)
Блин, не получается...Надо что бы была реализация переключений галок+скрипт самих галок будет выполнятся после нажатии кнопки(flag_button)
(Добавление)
Я не знаю, может как-то так:
а (Отобразить)int pos_size_button0[1][4];
string text_button0[1];
int flag_button0[1];
pos_size_button0[0][0]=108; pos_size_button0[0][1]=191; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
text_button0[0]="Êíîïêà 0";
//////////
int pos_size_check0[2][4];
string text_check0[2];
int flag_check0[2];
pos_size_check0[0][0]=99; pos_size_check0[0][1]=90; pos_size_check0[0][2]=60; pos_size_check0[0][3]=20;
pos_size_check0[1][0]=82; pos_size_check0[1][1]=132; pos_size_check0[1][2]=60; pos_size_check0[1][3]=20;
text_check0[0]="Ãàëêà 0"; text_check0[1]="Ãàëêà 1";
flag_check0[0]=0; flag_check0[1]=0;
//////////
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0] |
CHECK, #pos_size_check0[0][0], #text_check0[0], #flag_check0[0]);
//////////
showdialog(0, "Äèàëîã", 595, 300, 250, 300, 1, 1);
//////////
//////////
int t_flag_check[2];
//////////
sleep(200);
flag_check0[0]=1;
flag_check0[1]=0;
t_flag_check[0]=flag_check0[0];
t_flag_check[1]=flag_check0[1];
loop()
{
//flag_button0[0]=0;
if (flag_check0[0]==1 && t_flag_check[0]!=flag_check0[0] && flag_button0[0]==1)
{
flag_button0[0]=0;
messagebox("1");
}
if (flag_check0[1]==1 && t_flag_check[1]!=flag_check0[1] && flag_button0[0]==1)
{
flag_button0[0]=0;
messagebox("2");
}
perekluchatel_galok();
sleep(10);//Óáðàòü ïîñëå òåñòà
}
function perekluchatel_galok()//ðåàëèçàöèÿ ïåðåêëþ÷àòåëÿ ãàëîê
{
if (flag_check0[0]==1 && t_flag_check[0]!=flag_check0[0])
{flag_check0[1]=0; t_flag_check[1]=0; t_flag_check[0]=flag_check0[0];}
if (flag_check0[1]==1 && t_flag_check[1]!=flag_check0[1])
{flag_check0[0]=0; t_flag_check[0]=0; t_flag_check[1]=flag_check0[1];}
if (flag_check0[0]==0 && flag_check0[1]==0)
{
if (t_flag_check[0]!=flag_check0[0]){flag_check0[0]=1;t_flag_check[0]=flag_check0[0];}
if (t_flag_check[1]!=flag_check0[1]){flag_check0[1]=1;t_flag_check[1]=flag_check0[1];}
}
} |
|
|
|