Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.11.08;
Скачать: [xml.tar.bz2];

Вниз

Вопрос про Edit1.OnKeyPress (D7)   Найти похожие ветки 

 
vegarulez ©   (2009-09-10 13:16) [0]

привет всем мастерам!
Вопрос состоит в следующем.
Почему-то непонятно почему перестало отлавливаться событие нажатия Enter в Edit.
И причём что самое интересное изредка компилю - 1-ый раз бывает сработает. А дальше нивкакую, а бывает сразу не работает... в чём дело... не могу понять...
запускаю в отладчике и по нажатию Enter он вообще даже не выполняет никаких действий, т.е. даже не заходит в процедуру... не могу понять в чём тут трабла?...

if key=#13 then
Edit32.Text:="bla-bla-bla";


Причём раньше как бы всё нормуль было. внёс кое-какие изменения которые по сути никак не коснулись обработки нажатия Enter...
не могу понять в чём дело, раньше всё работало.

Какие могут быть мысли??? Предположения? Догадки? )


 
Сергей М. ©   (2009-09-10 13:18) [1]

Мысль одна - ты внес одному тебе известные "кое-какие изменения", которые, якобы, "никак не коснулись обработки нажатия Enter", а они взяли да "коснулись")


 
clickmaker ©   (2009-09-10 13:20) [2]

> могут быть мысли??? Предположения? Догадки?

Form.KeyPreview = true?
Form.OnKeyPress?


 
Медвежонок Пятачок ©   (2009-09-10 13:32) [3]

запускаю в отладчике и по нажатию Enter он вообще даже не выполняет никаких действий, т.е. даже не заходит в процедуру

Это называется в момент отладки или выполнения обработчик не присвоен свойству OnKeyPress


 
vegarulez ©   (2009-09-17 07:17) [4]

После долгих копаний в коде, выкусывании блоков, пришёл вот к такому выводу... проблема происходит после использования Zeos компонент (Zquery) находящихся в datamodule2 (Unit2).


unit Unit2;

interface

uses
 SysUtils, Classes, ZConnection, ZDataset, DB, ZAbstractRODataset,
 ZAbstractDataset, ZAbstractTable;
...


Теперь собственно Form1 (unit1)


unit1
...  // в uses unit1 нет включений Zeos:  ZConnection, ZDataset, DB, ZAbstractRODataset, ZAbstractDataset, ZAbstractTable; Может просто следует их ещё сюда добавить?

procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin

If Key=#13  then // типа нажат ентер
 Begin
  Button16.SetFocus;
  Button16.Font.Style:=[fsbold,fsunderline];
 End;

if (key=#8) and (length(Edit4.Text)=0) then // типа нажат backspace
Begin
 Edit3.SetFocus;
 Edit3.SelStart:=length(Edit3.Text);
End;

if Key=#27 then // типа нажат esc
Stock_CancelClick(Application);

end;

procedure TForm1.Button16Click(Sender: TObject);
begin
if length(Edit4.text)>0 then
   Try
    dt:=FormatDateTime("DD.MM.YYYY hh:mm:ss",Now());
    try
     if DataModule2.Zquery1.Active then
      DataModule2.Zquery1.Close;
     dbwork(Edit4.Text); // процедурка просто формирует prov[0,1]

{ // Блок после которого Enter не пашет, всё остальное работает и esc и backspase
     DataModule2.Zquery1.Sql.Text:="insert into `t1` (`id`,`name`) values ("+prov[0]+","+prov[1]+")";
     DataModule2.Zquery1.ExecSQL;
     DataModule2.Zquery1.Sql.Text:="update `cfg` set `count_id`="+num+"";
     DataModule2.Zquery1.ExecSQL;
}


     Application.MessageBox(PChar("Отработало."), "Предупреждение",MB_ICONINFORMATION + MB_OK);
    except
    on E:Exception do
     Begin
      Application.MessageBox(PChar("Ошибка записи в базу данных!"+#10+E.message+#10+dt),PChar(Application.Title), MB_ICONWARNING + MB_OK);
      DataModule2.ZQuery1.close;
     End;
    end; // try
   Finally
    Stock_CancelClick(Application);
   End; // Try
end;


Вообщем вот такой кусочек. У кого какие мысли?


 
Сергей М. ©   (2009-09-17 09:40) [5]


> после использования Zeos компонент


Интересно, как ты умудрился к ним обратиться из юнита unit1, если


> в uses unit1 нет включений Zeos


?


 
vegarulez ©   (2009-09-17 11:49) [6]

Ну всмысле в Unit1 есть включение Unit2.
Я забыл это указать. Но я думал это и так понятно.
Типа Form1 и Datamodule2.

Unit1
...
uses
..
unit2
...


 
clickmaker ©   (2009-09-17 11:54) [7]

> Вообщем вот такой кусочек. У кого какие мысли?

как может невизуальный компонент, да еще и для работы с базой, повлиять на обработчики чисто интерфейсных событий?
точно нет косяка в другом месте?


 
Сергей М. ©   (2009-09-17 12:04) [8]


> всмысле в Unit1 есть включение Unit2.


Да мало ли чего там еще есть !

Это


> DataModule2.Zquery1.Sql


даже скомпилировано быть не может, если в unit1 в uses не указан юнит, где декларирован класс TZQuery, к св-ву Sql которого ты обращаешься.

До ран-тайма тут еще как до Китая)


 
vegarulez ©   (2009-09-17 12:24) [9]

clickmaker ©   (17.09.09 11:54) [7]
точно. Именно он.

Сергей М. ©   (17.09.09 12:04) [8]
Он бы тогда не работал и не записывал бы в базу. Логично? А код работает исправно пишет в базу всё, что требуется.


 
Сергей М. ©   (2009-09-17 12:29) [10]


> Логично?


Логично.

И то что без указания в uses юнита, где декларирован внешний (по отношению к тек.юниту) идентификатор, к которому осуществляется обращение - тоже не менее логично.


 
Сергей М. ©   (2009-09-17 12:30) [11]

И то что без указания в uses юнита, где декларирован внешний (по отношению к тек.юниту) идентификатор, к которому осуществляется обращение, тек.юнит не м.б. скомпилирован - тоже не менее логично.


 
Achpile ©   (2009-09-17 22:40) [12]

Т.к. работает через раз, то обработчик может не срабатывать, если Edit неактивен... т.е. простыми словами в нем не мигает курсор...


 
vegarulez ©   (2009-09-18 09:23) [13]

Achpile ©   (17.09.09 22:40) [12]

Edit активен. При парсинге на Edit1.OnKeyPress отлавливаются и esc и backspace, и любые другие клавиши... А при нажатии Enter вообще ничего не происходит... т.е. if  в OnKeyPress он вообще никак не реагирует... т.е. даже не выполняется KeyPress.

Срабатывает только первый раз - дальше не срабатывает. причём на другой форме Эдиты нормально работают. А этот не пашет пока комп не перегрузишь.


 
vegarulez ©   (2009-09-18 09:26) [14]

Даже если прогу перезапускаешь - всё равно. только Reset устраняет проблему.


 
Сергей М. ©   (2009-09-18 10:01) [15]


> только Reset устраняет проблему


Сдается мне, что у тебя на станции завелся зверь)


 
vegarulez ©   (2009-09-18 10:07) [16]

KIS успешно борется с любым зверьём и выкусывание этого блока из кода тоже устраняет проблему. Только при его исполнении (этого блока) проблема остаётся. Без него всё рабит. С ним тоже всё рабит, всё пишется в БД всё пашет. Только Enter не пашет на этом Edit...


 
Сергей М. ©   (2009-09-18 10:14) [17]


> Enter не пашет на этом Edit


Как же он може "пахать", если ты утверждаешь, что


> даже не выполняется KeyPress


?

И коль скоро он не выполняется, то каким тогда волшебным образом у тебя


> отлавливаются и esc и backspace, и любые другие клавиши


?

Ты же ловишь все это хозяйство в том же самом обработчике, который якобы перестает вызываться после исполнения "проблемного" кода, работающего с Zeos..


 
vegarulez ©   (2009-09-18 10:51) [18]


> Ты же ловишь все это хозяйство в том же самом обработчике,
>  который якобы перестает вызываться после исполнения "проблемного"
> кода, работающего с Zeos..

Я говорю по нажатии ентера, но не заходит даже в обрботчик...
всмысле на if`ы которые проверяют char кея.
Т.е. он там не отлавливается. Все остальные отлавливаются.


 
Сергей М. ©   (2009-09-18 11:04) [19]

Каша какая-то)..

Ставишь брейкпойнт

procedure TForm1.Edit4KeyPress(Sender: TObject; var Key:  Char);
begin
// <-- сюда

Запусти приложение.

Передай мышью фокус контролу Edit4.
Жми ENTER.
Вопрос №1: Поймал брейкпойнт ?

Теперь жми Button16, т.е. дай выполниться твоему коду, обращающемуся к Zeos.
Верни мышью фокус контролу Edit4, если он не в фокусе.
Жми ENTER.
Вопрос №2: Поймал брейкпойнт ?


 
vegarulez ©   (2009-09-22 14:29) [20]

нет.
не поймал.
Ловится на всём на что жму, кроме ентера.


 
Сергей М. ©   (2009-09-22 14:31) [21]

Я жду отдельные ответы на вопросы 1 и 2


 
vegarulez ©   (2009-09-23 07:51) [22]

Удалено модератором
Примечание: п.10 и п.11



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.11.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.006 c
1-1222762776
DVM
2008-09-30 12:19
2009.11.08
Base64 кодирование и UnicodeString


15-1252688079
test
2009-09-11 20:54
2009.11.08
День граненого стакана


15-1252391817
XcCCC
2009-09-08 10:36
2009.11.08
текст под 90 гр в WORD


2-1253182279
vegarulez
2009-09-17 14:11
2009.11.08
Народ нид хелп! Срочно!


15-1252134194
Копир
2009-09-05 11:03
2009.11.08
В неудачных запусках "Булавы" виноваты программисты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский