Форум: "Начинающим";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
ВнизГлюк !!! Найти похожие ветки
← →
fog (2006-10-20 01:13) [0]ДВС. Написал обработчик KeyDown в TCustomControl.
...
published
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
...
procedure TMCWindow.KeyDown(var Key: Word; Shift: TShiftState);
var p: integer;
begin
case Key of
VK_UP: if Shift = [ssCtrl] then SetYRange(-10)
else
if Shift = [ssShift] then SetYRange(-1)
else
SetYRange(-2);
VK_DOWN: if Shift = [ssCtrl] then SetYRange(10)
else
if Shift = [ssShift] then SetYRange(1)
else
SetYRange(2);
VK_PRIOR: if Shift = [ssCtrl] then FmvOfs := SetYOfs(10)
else FmvOfs := SetYOfs(1);
VK_NEXT: if Shift = [ssCtrl] then FmvOfs := SetYOfs(-10)
else FmvOfs := SetYOfs(-1);
VK_HOME: if Shift = [ssCtrl] then
begin
p := integer(Round(FData[0] / FmVStep));
FmVOfs := 40 - p;
end;
else
exit;
end;
end;
...
Проверил на 3 машинах с разными ОС, D7 - разные дистрибутивы (Rus, Eng).
Результат - VK_UP, VK_DOWN - не генерируются.
(break - на case Key...- не работает)
Как бороться?
← →
Плохиш © (2006-10-20 01:20) [1]
> if Shift = [ssCtrl] then
Вообще-то в паскале/делфи это записывается обычно какif ssCtrl in Shift then
← →
fog (2006-10-20 01:32) [2]2 Плохиш>
Можно и так, а по существу вопроса?
← →
Плохиш © (2006-10-20 01:35) [3]
> fog (20.10.06 01:32) [2]
> 2 Плохиш>
> Можно и так
Ню..ню
> а по существу вопроса?
Вам надо нанять программиста.
← →
fog (2006-10-20 01:44) [4]2 Плохиш>
> а по существу вопроса?
Вам надо нанять программиста.
Не остроумно.
← →
Gero © (2006-10-20 01:47) [5]> Результат - VK_UP, VK_DOWN - не генерируются.
А как он должен генерироваться?
> (break - на case Key...- не работает)
А откуда там break и как он должен работать?
← →
fog (2006-10-20 01:57) [6]2 Gero >
Break поставил я для отлова UP, DOWN т.к. PRiOR, NEXT, HOME и др. работают нормально - процедуры отрабатываются, а на этих - не работают.
Если поставить break на case Key of.., то на всех клавишах останавливается и Key показывает, а на стрелках - не "брэкует".
← →
Loginov Dmitry © (2006-10-20 07:58) [7]fog (20.10.06 1:13)
published
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
И ктоже надоумил расположить KeyDown в published?
Чем не устроил protected?
← →
ЮЮ © (2006-10-20 08:24) [8]Form.KeyPreview не true случайно?
Может лучше не KeyDown перекрывать, а сообщения самому обработать?
Смотри,
function TWinControl.DoKeyDown(var Message: TWMKey): Boolean;
где, собственно, и вызывается KeyDown
← →
fog (2006-10-20 13:17) [9]2 ЮЮ >
Form.KeyPreview = false;
> Может лучше не KeyDown перекрывать, а сообщения самому обработать ?
Можно и так.
Но, кто-нибудь может объяснить КАК с глюком бороться, т.к. он доводит до "синяка" даже XP. Работают ВСе кнопки, КРОМЕ курсорных.
← →
Loginov Dmitry © (2006-10-20 15:31) [10]fog (20.10.06 13:17) [9]
доводит до "синяка" даже XP
Это что за...
← →
ProgRAMmer Dimonych © (2006-10-20 18:30) [11]А что WM_GETDLGCODE?
← →
fog (2006-10-21 03:32) [12]1. "синяк" - "синий экран смерти".
2. published - эт на одну строчку промахнулся при драге. protected - выше.
3. Вирусов нет, вчера обновил каспера и проверил всех.
В результате.
Запускаю прогу или из-под IDE, после нескольких нажатий (штук 10) по курсорам, прога перестает реагировать на другие клавиши, на C-A-D - не отвечает она, IDE соотв-но, и Explorer. После этого 2 пути - или мертвое зависание до резета или "синяки".
← →
Loginov Dmitry © (2006-10-21 09:25) [13]Выбрось Delphi
← →
Percent (2006-10-21 11:59) [14]Танкистам:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_UP: Label1.Caption := "VK_UP";
VK_DOWN: Label1.Caption := "VK_DOWN";
VK_PRIOR: Label1.Caption := "VK_PRIOR";
VK_NEXT: Label1.Caption := "VK_NEXT";
VK_HOME: Label1.Caption := "VK_HOME";
else
Label1.Caption := "$" + IntToHex(Key, 6);
end;
end;
Но, кто-нибудь может объяснить КАК с глюком бороться
Алгоритм:
1. Ударься головой об стену.
2. Перейди к п. 1.
Loginov Dmitry ©
Выбрось Delphi
Лучше автору самому выброситься...
← →
fog (2006-10-22 01:38) [15]2 Percent>
гы-гы-гы :)))
Закомментил свой KeyDown, вставил твой код, активировал KeyPreview - никаких изменений. Пишет в caption все, кроме VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT.
Проверил на 2-х компах.
"Убей сибя ап стену!" - только и остается, если переустановка не поможет..
← →
Ketmar © (2006-10-22 01:42) [16]аффтар, есть предложение: ты идёшь читать книги. и не занимаешься сексом с нашими мозгами. а?
← →
fog (2006-10-23 23:06) [17]2 ProgRAMmer Dimonych>
Огромное спасибо за подсказку!!!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.04 c