Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
40 / 40 / 6
Регистрация: 28.07.2011
Сообщений: 431
1

Вызывается 2 раза void __fastcall TForm2::ListBox1Click(TObject *Sender)

09.04.2012, 17:02. Показов 1606. Ответов 6
Метки нет (Все метки)

Помогите. В чём дело? Функция void __fastcall TForm2::ListBox1Click(TObject *Sender) сробатывает два раза подрят! Ставлю точку останова и она сробатывает два раза! Может можно как нибудь вычеслить откуда она вызывается?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2012, 17:02
Ответы с готовыми решениями:

Как написать это - void fastcall TForml:oOp(void)?
Добрый день! Подскажите пожайлуста: Как написать это - void fastcall TForml:: DoOp(void)? Как...

Обработка параметром Sender as TObject
Подскажите как отладить код с параметром Sender такого типа : TForm1 = class(TForm) Shape1:...

Использование TObject *Sender в своих функциях
Всем доброго времени суток. Столкнулся с проблемой что при использовании TObject *Sender в своей...

procedure TForm1.Edit1Change(Sender: TObject);
edit должен увеличиваться ,если в него вводят больше букв,чем он однавременно может отобразить...

6
871 / 447 / 35
Регистрация: 25.10.2011
Сообщений: 910
09.04.2012, 17:42 2
Кирпич никому сам собой на голову не падает...
Вообще для этого существует режим дебага, что смотреть, что, откуда и даже почему. Но думаю, что здесь и без него все ясно. Посмотрите, во-первых свой код, на предмет рекурсий и просто повторных вызовов. А во-вторых, очень часто программисты при копи-пастах компонентов, забывают обнулять их события.
0
40 / 40 / 6
Регистрация: 28.07.2011
Сообщений: 431
09.04.2012, 17:47  [ТС] 3
Цитата Сообщение от DefineTrueFalse Посмотреть сообщение
Вообще для этого существует режим дебага, что смотреть, что, откуда и даже почему
Как это сделать?

Цитата Сообщение от DefineTrueFalse Посмотреть сообщение
Посмотрите, во-первых свой код, на предмет рекурсий и просто повторных вызовов.
Я уже его весь переглядел с ног до головы нет!

Цитата Сообщение от DefineTrueFalse Посмотреть сообщение
А во-вторых, очень часто программисты при копи-пастах компонентов, забывают обнулять их события.
Всмысле обнулять?
0
Практикантроп
4695 / 2609 / 503
Регистрация: 23.09.2011
Сообщений: 5,621
09.04.2012, 17:56 4
- обычно двойной вызов функции (обработчика) - это следствие того, что внутри нее применяются какие-либо манипуляции с объектом, которые могут интерпретироваться, как действие, приведшее к вызову функции. [ Лихо завернул!..]
0
Эксперт С++
8289 / 6120 / 613
Регистрация: 10.12.2010
Сообщений: 28,609
Записей в блоге: 30
09.04.2012, 20:54 5
Проверь в инспекторе объектов события.
0
40 / 40 / 6
Регистрация: 28.07.2011
Сообщений: 431
09.04.2012, 23:58  [ТС] 6
Да вроде всё норм в инспекторе обьектов!
Вот что в событие:
C++
1
2
3
4
void __fastcall TForm2::ListBox1Click(TObject *Sender)
{
Obn();
}
А вот функция
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 void TForm2::Obn()
{
 ListView1->Clear();
ListView1->Columns->Clear();
TListColumn  *NewColumn;
  TListItem  *ListItem;
  NewColumn = ListView1->Columns->Add();
  NewColumn->Caption = "апап";
  NewColumn->Width = 170;
  NewColumn = ListView1->Columns->Add();
  NewColumn->Caption = "тата";
  NewColumn->Width = 90;
  NewColumn = ListView1->Columns->Add();
  NewColumn->Caption = "Ýë. ïî÷òà";
  NewColumn->Width = 150;
  NewColumn = ListView1->Columns->Add();
  NewColumn->Caption = "тт";
  NewColumn->Width = 35;
  NewColumn = ListView1->Columns->Add();
  NewColumn->Caption = "аа";
  NewColumn->Width = 91;
 int y =5;
Gr = ListBox1->Items->Strings[ListBox1->ItemIndex];
   TStringList *list = new TStringList();
   if (FileExists("grop\\"+ListBox1->Items->Strings[ListBox1->ItemIndex]+".ob")== true)
   {
     list->LoadFromFile("grop\\"+ListBox1->Items->Strings[ListBox1->ItemIndex]+".ob");
 
          if ( list->Strings[1] != "нет"){
     TListColumn  *NewColumn;
  NewColumn = ListView1->Columns->Add();
  NewColumn->Caption = list->Strings[1].c_str();
  y++;
     }
          if ( list->Strings[2] != "нет"){
     TListColumn  *NewColumn;
  NewColumn = ListView1->Columns->Add();
  NewColumn->Caption = list->Strings[2].c_str();
  y++;
     }
          if ( list->Strings[3] != "нет"){
     TListColumn  *NewColumn;
  NewColumn = ListView1->Columns->Add();
  NewColumn->Caption = list->Strings[3].c_str();
  y++;
     }
     for (int i=0,e=0; i<list->Strings[0].ToInt();i++,e+=y)
     {
          TListItem  *ListItem;
  ListItem = ListView1->Items->Add();
  ListItem->Caption = list->Strings[4+e].c_str();
  ListItem->SubItems->Add(list->Strings[5+e].c_str());
  ListItem->SubItems->Add(list->Strings[6+e].c_str());
  ListItem->SubItems->Add(list->Strings[7+e].c_str());
  ListItem->SubItems->Add(list->Strings[8+e].c_str());
     if ( list->Strings[1] != "нет"){
      ListItem->SubItems->Add(list->Strings[9+e].c_str());
}
       if ( list->Strings[2] != "íåò"){
      ListItem->SubItems->Add(list->Strings[10+e].c_str());
}
        if ( list->Strings[3] != "нет"){
      ListItem->SubItems->Add(list->Strings[11+e].c_str());
}
     }
      }
      else
      {
      ShowMessage("Ошибка");
      }
      delete list;
      return;
}
Добавлено через 1 час 3 минуты
Поставил на ListBox1MouseDown Всё работает нормально! Чудеса

Добавлено через 59 секунд
Кстати тут return нужен?
0
Эксперт С++
8289 / 6120 / 613
Регистрация: 10.12.2010
Сообщений: 28,609
Записей в блоге: 30
10.04.2012, 00:05 7
если void то не нужен (разве что надо досрочно закончить ф-цию минуя следующий код)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2012, 00:05

Откуда берется FormPaint(TObject *Sender)?
Здравствуйте! Мы только начали изучать графику, и я никак не могу разобраться откуда берется во...

Procedure TForm1.Button3Click(Sender: TObject);
procedure TForm1.Button3Click(Sender: TObject); begin tab1.cells:=Edit1.text;...

Показывает ошибку в procedure Form2Button1Click(Sender: TObject);
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

Как создать процедуру RadioButtonClick(Sender: TObject)
общая процедура— RadioButtonClick используется одновременно для RadioButton1, RadioButton2,...


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

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

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