В моята статия, ArrowKeyNav Routine, представих Sub, който можете да използвате, за да отмените обработката по подразбиране на клавишите със стрелки нагоре и надолу в непрекъсната форма. Проблемът с рутината, както я представих, е, че трябва да я извикате от всяка контрола, където искате да замените функционалността на клавиша със стрелка.
Ето как може да изглежда това в модул за формуляр:
Private Sub cbSupplierID_KeyDown(KeyCode As Integer, Shift As Integer)
ArrowKeyNav KeyCode, Shift
End Sub
Private Sub chkDiscontinued_KeyDown(KeyCode As Integer, Shift As Integer)
ArrowKeyNav KeyCode, Shift
End Sub
Private Sub tbID_KeyDown(KeyCode As Integer, Shift As Integer)
ArrowKeyNav KeyCode, Shift
End Sub
Private Sub tbListPrice_KeyDown(KeyCode As Integer, Shift As Integer)
ArrowKeyNav KeyCode, Shift
End Sub
Private Sub tbProductCode_KeyDown(KeyCode As Integer, Shift As Integer)
ArrowKeyNav vbKeyDown, Shift
End Sub
Private Sub tbProductName_KeyDown(KeyCode As Integer, Shift As Integer)
ArrowKeyNav KeyCode, Shift
End Sub
Има няколко начина да намалим количеството стандартен код, от който се нуждаем в тази ситуация, но ще оставим това настрана за целите на тази статия. Така че, в името на аргумента, нека просто приемем, че няма начин да се намали количеството код. Като се има предвид това ограничение, как можем да увеличим четливостта на горния код?
Съединяване на редове код със знака двоеточие
Можем да обединим няколко реда код, използвайки знака двоеточие (:
).
се използва като краен елемент на синтактичната граматика за именуване на токена който действа като маркер за "край на изявлението". По принцип краят на изявлението се маркира с или знак двоеточие .
Подобряване на четливостта чрез съединяване на редове
Тази техника е нещо, което трябва да използвате внимателно. Но ако се използва разумно, може да увеличи четливостта на вашия код.
В примерния код по-горе всеки Sub извиква същия точен код:
ArrowKeyNav KeyCode, Shift
Всъщност това не е вярно. Ако погледнете внимателно, ще видите, че tbProductCode_KeyDown()
рутинни предавания vbKeyDown
вместо KeyCode
като първи аргумент.
Тази разлика обаче е лесно да се пропусне при стандартно VBA форматиране:
Грешен код да изглежда грешен
Ако присъединим редовете с помощта на двоеточия – и коригираме празното пространство, така че всички наши извиквания към ArrowKeyNav
са подравнени вляво – тогава несъответствието, което се смесва по-горе, изпъква като възпален палец в кода по-долу:
Когато се разглежда в контекста на нормални функции и подпрограми, нашият блок от стандартен код ясно се откроява. Това разграничение помага да се увеличи съотношението сигнал/шум на нашия код: