Исключить выполнение процедуры

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Исключить выполнение процедуры

Сообщение kminas » 12.01.2008 (Сб) 11:50

Я пишу прогу. И вдруг обнаружил, что при нажатии на клавишу Esc происходит запуск одной из процедур. Каким образом можно убрать это событие, либо как хотя бы определить почему оно происходит?
Константин

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 12.01.2008 (Сб) 11:54

Найти кнопку со свойством Cancel = True?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 12.01.2008 (Сб) 14:02

Кнопки со свойством Cancel = True нет, есть процедура:
Код: Выделить всё
Private Sub Form_Unload(Cancel As Integer)
    If MsgBox("Уважаемый(ая) коллега," & Chr(13) & "Вы действительно хотите закрыть окно?", vbYesNo + _
               vbApplicationModal + vbDefaultButton2 + vbInformation, _
               "Завершение работы") = vbNo Then
   Cancel = True
    Else
   Unload frmOpen
   Unload frmShtamp
   Set frmObor = Nothing
   End If
End Sub

А при нажатии Esc выполняется следующая процедура:
Код: Выделить всё
Private Sub cmdTitle_Click()
Dim titl As String

titl = cboTitle.Text

With ActiveDocument.Tables
     If .Count > 0 Then
        With .Item(.Count)
             .Cell(.Rows.Count, 1).Select
             Selection.Collapse Direction:=wdCollapseStart
             Selection.ColumnSelectMode = True
        End With
     End If
End With

     ActiveDocument.Tables(1).Rows.Add
   
    With Selection
    .MoveRight Unit:=wdCell
    .MoveRight Unit:=wdCell
    .Font.Bold = wdToggle
    .Font.Underline = wdUnderlineSingle
    .TypeText Text:=titl
    .MoveRight Unit:=wdCharacter, Count:=7
    .MoveRight Unit:=wdCell
    .MoveRight Unit:=wdCharacter, Count:=1
    .MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    .Font.Bold = False
    .Font.Underline = wdUnderlineNone
    .MoveLeft Unit:=wdCharacter, Count:=1
    End With
End Sub
Константин

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 12.01.2008 (Сб) 14:07

а стек вызовов что говорит?
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 12.01.2008 (Сб) 18:06

Честно говоря, не знаю, где стек смотреть.
Константин

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 12.01.2008 (Сб) 18:15

ставиш курсор в Private Sub cmdTitle_Click() на строку: titl = cboTitle.Text и получаеш точку остановки, дальше жмешь F5 и делаеш последовательность операций, которая приводит тебя к исполнению:
А при нажатии Esc выполняется следующая процедура

при остановке на точке прерывания жмеш Ctrl+L или меню View->Call Stack и там смотриш откуда была вызвана процедура
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 12.01.2008 (Сб) 19:11

На эту строку
Код: Выделить всё
titl = cboTitle.Text
и показывает
Константин

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 12.01.2008 (Сб) 20:35

Уважаемый(ая) коллега

Пользователь - не коллега программе. Убирай некорректную фразу.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 13.01.2008 (Вс) 10:38

Igor_123
Спасибо! Нашел! Но точку останова поставил раньше. У меня этот комбобокс загружается в Form_Load(), а как этот момент обойти, буду думать.
Хакер
Спасибо, коллегу убрал.

Спасибо всем!
Тема закрыта.
Константин

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 13.01.2008 (Вс) 16:47

Igor_123 писал(а):.... на строку: titl = cboTitle.Text нажимаеш F9 и получаеш точку остановки, ...

Сорри, руки не поспевают за полетом мысли :(

Тебе видней ;-)
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 13.01.2008 (Вс) 22:15

Igor_123 писал(а):
Igor_123 писал(а):.... на строку: titl = cboTitle.Text нажимаеш F9 и получаеш точку остановки, ...

Сорри, руки не поспевают за полетом мысли :(
Тебе видней ;-)

Спасибо, я не знал. Я ставлю точку останова мышкой на поле рядом с о строкой, а потом действительно F5 или мышкой на кнопку запуска, а, после остановки на F8.
Константин

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 13.01.2008 (Вс) 22:33

Рано я обрадовался. Убрал я всю процедуру из Form_Load, жму F8, а прога опять, упрямо перескакивает на процедуру, Private Sub cmdTitle_Click(). Что ее туда тянет, не пойму?
Константин

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 18.01.2008 (Пт) 14:07

Igor_123
Нашел ответ на другом форуме.
Свойство cmdTitle.Cancel=True заменил на False и все!
Спасибо за участие.
Константин

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 18.01.2008 (Пт) 14:16

kminas
Ты избирательно слеп? Такой же ответ тебе дали на этом форуме, в этой теме, сразу же, в первом сообщении-ответе.

Смотрим чуть ниже (третье сообщение в теме):
kminas писал(а):Кнопки со свойством Cancel = True нет, ...

Выходит не слеп. Выходит, что что-то более печальное.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 18.01.2008 (Пт) 14:21

Чудак! тебе BV ещё
Добавлено: 12.01.2008 (Сб) 10:54

BV писал(а):Найти кнопку со свойством Cancel = True?

и ты ему ответил:
kminas писал(а):Кнопки со свойством Cancel = True нет
, а теперь оказывается( 6 дней спустя ):
kminas писал(а):Свойство cmdTitle.Cancel=True заменил на False и все!
естественно и фсе :)
kminas на sql.ru писал(а):Документ с макросом приведен выше.

это не документ а текст макроса, который ты приводил и здесь, а я говорил о вордовском файле с этим макросом.

Да кстати
kminas на sql.ru писал(а):Можно ли во время выполнения программы устанавливать свойство кнопки Command TabStop=True?

разве так долго сделать эксперимент? или прочиать справку?
я не знаю, т.к. это свойство устанавливаю в дизайн-тайме
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

gjghjc
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 659
Зарегистрирован: 13.10.2002 (Вс) 8:28
Откуда: БАЛАКЛАВА!!

Сообщение gjghjc » 18.01.2008 (Пт) 16:18

можно... я проверил.... :roll:
Утро добрым не бывает!

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 18.01.2008 (Пт) 16:23

gjghjc
Код примера я видел :-) , мне интересно другое, зачем в рантайме изменять последовательность обхода по табстопу???
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 18.01.2008 (Пт) 20:11

Извините, BV, Igor_123 и др.
сразу не въехал искал поиском Cancel, а надо было обойти все кнопки и поискать свойство глазами.
Справку пока не нашел, русского help'а вообще нет, эксперимент пока не удался.
Кнопок, выполняющих программу у меня несколько, поэтому и возникла необходимость переключаться.
А программированием занимаюсь недавно, с большими перерывами и в свободное от основных работ время, поэтому каждый раз приходится по-новой въезжать в тему, в терминологию и в свои же предыдущие наработки.
Константин

kminas
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 31.10.2005 (Пн) 20:17
Откуда: Ростов-на-Дону

Сообщение kminas » 19.01.2008 (Сб) 19:05

gjghjc
Igor_123
Извините, гворю ж давно не занимался, бес попутал не
Код: Выделить всё
TabStop
нужен, а
Код: Выделить всё
Default=True


Проблема решена.
Константин


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 126

    TopList  
cron