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

Вниз

Опрос клавиатуры   Найти похожие ветки 

 
Eugene_   (2003-10-05 11:00) [0]

Здравствуйте!
Сразу говорю вопрос немного банальный, по-этому сразу извините.
Есть такой обработчик нажатий клавиш:

procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=VK_UP then
if DBGrid1.DataSource=DataSource1 then begin
Key:=0;
Table.Prior;
DBGrid1.Options:=[dgTitles,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgAlwaysShowSelection];
if not VarIsNull(Table.FieldByName("Numb").Value) then
Curr:=Table.FieldValues["Numb"]
else
Curr:=Table.RecNo;
TestClick();end
else if DBGrid1.DataSource=DataSource2 then begin
Key:=0;
Query.Prior;
DBGrid1.Options:=[dgTitles,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgAlwaysShowSelection];
if not VarIsNull(Query.FieldByName("Numb").Value) then
Curr:=Query.FieldValues["Numb"]
else
Curr:=Query.RecNo;
TestClick();end
else if DBGrid1.DataSource=DataSource3 then begin
Key:=0;
Table1.Prior;
DBGrid1.Options:=[dgTitles,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgAlwaysShowSelection];
if not VarIsNull(Table1.FieldByName("Numb").Value) then
Curr:=Table1.FieldValues["Numb"]
else
Curr:=Table1.RecNo;
TestClick();
end;
if Key=VK_DOWN then
if DBGrid1.DataSource=DataSource1 then begin
Key:=0;
Table.Next;
DBGrid1.Options:=[dgTitles,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgAlwaysShowSelection];
if not VarIsNull(Table.FieldByName("Numb").Value) then
Curr:=Table.FieldValues["Numb"]
else
Curr:=Table.RecNo;
TestClick();end
else if DBGrid1.DataSource=DataSource2 then begin
Key:=0;
Query.Next;
DBGrid1.Options:=[dgTitles,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgAlwaysShowSelection];
if not VarIsNull(Query.FieldByName("Numb").Value) then
Curr:=Query.FieldValues["Numb"]
else
Curr:=Query.RecNo;
TestClick();end
else if DBGrid1.DataSource=DataSource3 then begin
Key:=0;
Table1.Next;
DBGrid1.Options:=[dgTitles,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgAlwaysShowSelection];
if not VarIsNull(Table1.FieldByName("Numb").Value) then
Curr:=Table1.FieldValues["Numb"]
else
Curr:=Table1.RecNo;
TestClick();
end;
if Key=VK_HOME then
if DBGrid1.DataSource=DataSource1 then begin
Table.First;
DBGrid1.Options:=[dgTitles,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgAlwaysShowSelection];
Curr:=Table.RecNo;
TestClick();end
else if DBGrid1.DataSource=DataSource2 then begin
Query.First;
DBGrid1.Options:=[dgTitles,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgAlwaysShowSelection];
Curr:=Query.RecNo;
TestClick();end
else if DBGrid1.DataSource=DataSource3 then begin
Table1.First;
DBGrid1.Options:=[dgTitles,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgAlwaysShowSelection];
Curr:=Table1.RecNo;
TestClick();
end;
if Key=VK_END then
if DBGrid1.DataSource=DataSource1 then begin
Table.Last;
DBGrid1.Options:=[dgTitles,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgAlwaysShowSelection];
Curr:=Table.RecNo;
TestClick();end
else if DBGrid1.DataSource=DataSource2 then begin
Query.Last;
DBGrid1.Options:=[dgTitles,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgAlwaysShowSelection];
Curr:=Query.RecNo;
TestClick();end
else if DBGrid1.DataSource=DataSource3 then begin
Table1.Last;
DBGrid1.Options:=[dgTitles,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgAlwaysShowSelection];
Curr:=Table1.RecNo;
TestClick();
end;
if (Key=65) and (ssAlt in Shift) then
N9Click(self);
if Key=115 then
N4Click(self);
if Key=45 then
if (HiWord(GetKeyState(VK_LMENU))<>0)and(HiWord(GetKeyState(VK_RCONTROL))<>0) then
Merge()
else if ssCtrl in Shift then begin
if MainForm.DBGrid1.DataSource=MainForm.DataSource2 then begin
MessageBox(Application.Handle,"Выйдите из режима поиска!","База данных",MB_ICONWARNING);
Exit;
end;
EditInfoForm.ShowModal;end
else
N2Click(self);
if Key=69 then
if (HiWord(GetKeyState(VK_RCONTROL))<>0) and (HiWord(GetKeyState(VK_LMENU))<>0) then
SaveToFile();
if (Key=112) and (ssAlt in Shift) then
CD1Click(self);
if (Key=113) and (ssAlt in Shift) then
HDD1Click(self);
if Key=35 then
if (HiWord(GetKeyState(VK_LMENU))<>0)and(HiWord(GetKeyState(VK_RCONTROL))<>0) then
ReIndex(MainForm.Table1);
if (Key=46) and (ssCtrl in Shift) then Key:=0;
if Key=120 then
N25Click(self);
end;


и в этот код будут добавляться еще новые коды клавиш.
Можно как-то сократить количество if ... then?

Заранее спасибо ...


 
Real   (2003-10-05 11:07) [1]

Для начала - оптимизируй структуру - сплошные повторы и вложенные ИФ-ы. Иф - всегда можно заменить Кэйсом, но сильно суть от этого не изменится



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

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

Наверх




Память: 0.45 MB
Время: 0.01 c
3-51117
DimChan
2003-09-25 07:34
2003.10.16
задача установить прогу на ПК с ОС: Win 95 и без BDE


1-51323
DimChan
2003-10-06 07:03
2003.10.16
Курсор в конец строки


14-51506
kingdom
2003-09-30 13:11
2003.10.16
А куда подевался раздел с ГОТОВЫМИ ПРОЦЕДУРАМИ/КЛАССАМИ ?


1-51231
TButton
2003-10-03 17:32
2003.10.16
D5 Enviroment


14-51501
Омлет
2003-09-28 00:33
2003.10.16
Именинники 28 сентября!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский