Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Aleks905506
0 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 21
1

Вызов кнопки дважды.

23.04.2012, 18:56. Просмотров 1025. Ответов 17
Метки нет (Все метки)

Доброго времени суток всем!!! помогите разобраться новичку, как из события ButtonOnClick
по нажатию на кнопку Button, вызвать повторное нажатие на эту кнопку.
Хочу чтобы кнопка нажималась дважды. Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2012, 18:56
Ответы с готовыми решениями:

Вызов нажатия кнопки из другого события
Всегда вызывал нажатия кнопок из других событий вот таким способом ...

Как подключить .h файл дважды?
Такая проблема: имеется файл lib.h и еще 2 файла: NewLib1.h и NewLib2.h,...

Удалить из слова гласные, встречающиеся дважды
Задание: удалить из слова те гласные, что встречаются дважды. Код, который я...

Нажатие кнопки приводит к изменению цвета формы и заголовка кнопки
Помогите пожалуйста так сделать : "Нажатие кнопки приводит к изменению цвета...

Ест 1 программа и как сделать так чтоби если оно уже открито запретит открить дважды ету программу?
Доброго времени суток Как запретит программу включится если оно уже включено...

17
Avazart
Эксперт С++
7723 / 5632 / 549
Регистрация: 10.12.2010
Сообщений: 25,405
Записей в блоге: 17
23.04.2012, 19:34 2
А зачем?
Для этого есть ф-ции,циклы

Добавлено через 3 минуты
Код помести в ф-циию или метод формы и вызывай его дважды в обработчике кнопки
1
Aleks905506
0 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 21
23.04.2012, 19:34  [ТС] 3
функции есть, и циклы, просто они срабатывают после двойного щелчка, а при первом щелчке
срабатывают не полностью..
0
Avazart
Эксперт С++
7723 / 5632 / 549
Регистрация: 10.12.2010
Сообщений: 25,405
Записей в блоге: 17
23.04.2012, 19:37 4
а при первом щелчке срабатывают не полностью..
Это бред
0
Aleks905506
0 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 21
23.04.2012, 19:37  [ТС] 5
пробовал вызывать из этого же события Button1<Click()
но получается, что кнопка вызывает сама себя до бесконечности, а мне нужно только 2 щелчка.
0
Avazart
Эксперт С++
7723 / 5632 / 549
Регистрация: 10.12.2010
Сообщений: 25,405
Записей в блоге: 17
23.04.2012, 19:38 6
Код приведи
1
Aleks905506
0 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 21
23.04.2012, 19:43  [ТС] 7
C++
1
2
3
4
5
6
7
8
9
10
ADOTable2->First();
   while(!ADOTable2->Eof)
 {
// код 
}
ADOTable2->First();
   while(!ADOTable2->Eof)
 {
//код 
} + проверки.
он действительно срабатывает только при при двойном щелчке, код слишком длинный я не буду его описывать.

все-таки как заставить кнопку Нажиматься дважды..
0
BRcr
4016 / 2306 / 291
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
23.04.2012, 19:43 8
C++
1
2
3
4
5
6
static bool repeat = true;
if ( repeat ) {
  dynamic_cast<TButton *>(Sender)->Click();
  repeat = false;
}
else repeat = true;
1
Avazart
Эксперт С++
7723 / 5632 / 549
Регистрация: 10.12.2010
Сообщений: 25,405
Записей в блоге: 17
23.04.2012, 19:46 9
Да не может такого быть, вы наверное в событие двойного клика код поместили
1
Aleks905506
0 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 21
23.04.2012, 19:48  [ТС] 10
Выдает ошибку, Stack overflow
может я не так что делаю.
Я этот код просто засунул в обработчик
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Button1Click(TObject *Sender)
{
static bool repeat = true;
if ( repeat ) {
  Button1->Click();
  repeat = false;
}
else repeat = true;
}
0
BRcr
4016 / 2306 / 291
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
23.04.2012, 19:51 11
Пардон, моя оплошность. Поменяйте местами строчки, чтоб так было:
C++
1
2
repeat = false;
Button1->Click();
1
Avazart
Эксперт С++
7723 / 5632 / 549
Регистрация: 10.12.2010
Сообщений: 25,405
Записей в блоге: 17
23.04.2012, 19:52 12
C++
1
2
3
4
5
6
7
int i= 0;
 
void __fastcall TForm1::Button1Click(TObject *Sender)
 {
 if (i<2 ) {i++; Button1->Click();}
 if (i==2 ) i=0;
 }
1
Aleks905506
0 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 21
23.04.2012, 20:02  [ТС] 13
Цитата Сообщение от Avazart Посмотреть сообщение
Да не может такого быть, вы наверное в событие двойного клика код поместили
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
39
40
41
42
43
44
45
46
47
void __fastcall TForm1::Button3Click(TObject *Sender)
{
 
Table2->First();
   while(!Table2->Eof)
 {
 S = (Table2Oklad->Value)/(Table2PrivChasi->Value);
S2 = S*(Table2OtRChasi->Value);
 
Nalog = (Table2PodohodNalog->Value + Table2PenFond->Value
 + Table2ProFsouz->Value+Table2Alimenti->Value+Table2PenNak->Value)*(0.01)* S2;
Zarplata = S2-(Nalog)-(Table2Svet->Value+Table2Gaz->Value+Table2Subbotnik->Value);
 
Plastik = Zarplata*(0.01)*(StrToInt(Table2Plastic->Text));
Nalichka = Zarplata -Plastik;
 
     DataSource2->DataSet->Edit();
     DataSource2->DataSet->FieldByName("Plastik")->Value = ceil(Plastik);
     DataSource2->DataSet->FieldByName("KViplate")->Value = ceil(Nalichka);
    // DataSource2->DataSet->FieldByName("PodSum")->Value = ceil(S2*(Table2PodohodNalog->Value)*(0.01));
     DataSource2->DataSet->FieldByName("PenFSum")->Value = ceil(S2*(Table2PenFond->Value)*(0.01));
     DataSource2->DataSet->FieldByName("ProFSum")->Value = ceil(S2*(Table2ProFsouz->Value)*(0.01));
     DataSource2->DataSet->FieldByName("PenNakSum")->Value = ceil(S2*(Table2PenNak->Value)*(0.01));
     DataSource2->DataSet->FieldByName("AlimSum")->Value  = ceil(S2*(Table2Alimenti->Value)*(0.01));
     DataSource2->DataSet->FieldByName("Nachisleno")->Value = ceil(S2);
 
        if (Table2PodohodNalog->Text == Form3->DBEdit8->Text)
      {
      DataSource2->DataSet->FieldByName("PodSum")->Value = ceil((0.01)*(S2)*StrToInt(Form3->DBEdit8->Text));
      }
       if (Table2PodohodNalog->Text == Form3->DBEdit9->Text)
      {
      DataSource2->DataSet->FieldByName("PodSum")->Value = ceil((S2)*(0.01)*StrToInt(Form3->DBEdit9->Text)) - ceil((0.3)*StrToInt(Form3->DBEdit7->Text));
      }
      if (Table2PodohodNalog->Text == Form3->DBEdit10->Text)
      {
      DataSource2->DataSet->FieldByName("PodSum")->Value = ceil((S2)*(0.01)*StrToInt(Form3->DBEdit10->Text)) - ceil((0.9)*StrToInt(Form3->DBEdit7->Text));
      }
 
     DataSource2->DataSet->Post();
     Table2->Next();
 }
  Table2->First();
 
 
 
}
это только начатае, но если вставлю второй цикл то тоже самое.

Добавлено через 9 минут
Цитата Сообщение от BRcr Посмотреть сообщение
repeat = false; Button1->Click();
поменял но Если я нажимаю два раза, то стек переполняется и выдает ошибку
0
Avazart
Эксперт С++
7723 / 5632 / 549
Регистрация: 10.12.2010
Сообщений: 25,405
Записей в блоге: 17
23.04.2012, 20:06 14
C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::MyMetod()
{
//Твой код
}
//----------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
MyMetod(); // Первый раз
MyMetod(); // Второй раз
}
Добавлено через 3 минуты
А вообще оно так не должно работать, а значит это глюк.
А обычно глюки решаются пересозданием проекта.
1
Aleks905506
0 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 21
23.04.2012, 20:10  [ТС] 15
Спасибо, придется собирать его заново.
но проще было бы вызвать его 2-а раза.
0
Avazart
Эксперт С++
7723 / 5632 / 549
Регистрация: 10.12.2010
Сообщений: 25,405
Записей в блоге: 17
23.04.2012, 20:13 16
Поместите другой простой код в кнопку и проверьте как она работает без вашего кода...
Может проблема не в кнопке а в вашем коде
1
Aleks905506
0 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 21
23.04.2012, 20:40  [ТС] 17
Цитата Сообщение от Avazart Посмотреть сообщение
Поместите другой простой код в кнопку и проверьте как она работает без вашего кода...
Может проблема не в кнопке а в вашем коде
Простой код срабатывает с первого раза нормально, но дело в Коде естественно, он
еще связан с другими формами в которых несколько бд.
мне кажется это не глюк, а просто программа не в состоянии сразу обновляться с первого раза,
и срабатывает со второго, когда Например в другой Бд из другой формы, передается в субд
значения Данных. И после чего она получает новые данные и срабатывает полностью..

мне просто важен Двойной клик, скажите его реально можно сделать?

Добавлено через 19 минут
Всем спасибо разобрался,
помогло вот это
C++
1
2
3
4
5
6
7
8
9
10
int i= 0;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
if (i <2 )
{
i++;
Button1->Click();
}
}
0
Avazart
Эксперт С++
7723 / 5632 / 549
Регистрация: 10.12.2010
Сообщений: 25,405
Записей в блоге: 17
23.04.2012, 20:44 18
без
C++
1
 if (i==2 ) i=0;
второй раз не вызовишь
1
23.04.2012, 20:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2012, 20:44

Google_mock тест на вызов метода проваливается, если метод вызывается дважды
Всем добрый день! Занимаюсь тестированием приложения с помощью Google_mock...

Вызов процедуры нажатия кнопки с кнопки
При нажатии на Button1 создается экземпляр класса. Требуется, при нажатии на...

Почему дважды вызванный рандомный метод дважды рандомит одинаково?
Взгляните, есть метод рандомной генерации матрицы. Мы его дважды вызываем, и...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru