Програми руковођени догађајима

Код програмирања оваквог типа јако је битно схватити и сам појам догађаја. Дакле, све што урадимо директно акцијом уз помоћ миша и тастатуре, али и све што је и последица извршавања програма или неког његовог дела, може бити догађај. Клик мишем или само притисак или отпуштање тастера на мишу, прелазак показивача миша преко објекта, превлачење објекта, промена димензија, притисак неког тастера на тастатури, унос неке вредности, појава или нестајање објекта и друго, све су то неки догађаји који се могу "осетити" или не у зависности од врсте објекта.

Задатак програмера је да одлучи на које догађаје ће, поједини објекти који су саставни део апликације реаговати, односно, на које догађаје ће бити "осетљиви" и какво ће бити њихово понашање, тј. шта ће се дешавати. Ако ниједан догађај није обрађен, онда написани програм неће радити ништа, тј. он је бескористан.

Неки од важнијих могућих догађаја објеката су:

OnActive - када објекат постане активан
OnClick - када се мишем кликне на објекат
OnClose - када се објекат затвори
OnCreate - када се објекат креира
OnDblClick - када се два пута кликне мишем на објекат
OnDeactivate - када објекат престане да буде активан
OnDestroy - када се објекат избрише
OnDragDrop - када се објекат певуче и отпусти
OnDragOver - када се објекат довлачи
OnHide - када се објекат сакрије, тј. још увек постоји али се не види
OnKeyDown - када се на тастатури држи притиснут тастер
OnKeyPress - када је на тастатури притисне и пусти тастер
OnKeyUp - када се на тастатури отпусти неки тастер
OnMouseDown - када се мишем притисне на објекат
OnMouseMove - објекат се помера помоћу миша
OnMouseUp - објекат се отпусти
OnMouseWheel - када се покреће точкић на мишу
OnMouseWheelDown - када покрећемо точкић на мишу према себи
OnMouseWheelUp - када покрећемо точкић на мишу од себе
OnResize - када се објекту мења величина

Наравно, не могу сви објекти реаговати на све догађаје. Неки објекти су "осетљивији" тј. могу да реагују на више догађаја, а неки, опет, нису, тј. реагују на врло мали број догађаја. Пажљивим одабиром објеката и дефинисањем њихове "осетљивости" могу се направити врло атрактивне апликације (наравно, да би то било успешно треба имати много искуства, знања, маште, воље и времена).

Koд обраде догађаја, пошто неки могу бити сложени и састојати се из неколико других догађаја, мора се водити рачуна да једна реакција не поништава другу. Може се десити да једна реакција производи други догађај, па се поништи петходна реакција или се програм заблокира. Зато треба бити јако пажљив и пре писања неке реакције добро размислити о свим последицама које реакција може произвести, а то је већ уметност програмирања.