русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Звертання до активного компонента не за ім’ям


Дата додавання: 2014-10-07; переглядів: 932.


Для створення універсальних підпрограм-оброблювачів подій однією з умов є звертання до компонентів не не за ім’ям. Наприклад: нехай є форма реєстрації із чотирма полями й кнопкою.

 

 

Потрібно написати оброблювач, який при введенні пароля переводить курсор на наступне поле, якщо в поточному полі введено 5 символів.

 

Для першого поля в події Onchange напишемо код:

 

procedure tform1.edit1change(sender: tobject);

begin

//якщо в перше поле введено 5 символів

if length(edit1.text)=5 then

//то переходимо в друге поле

edit2.setfocus;

end;

 

Для другого поля в події Onchange напишемо код:

 

procedure tform1.edit2change(sender: tobject);

begin

//якщо в друге поле введено 5 символів

if length(edit2.text)=5 then

//то переходимо в третє поле

edit3.setfocus;

end;

 

Для третього поля в події Onchange напишемо код:

 

procedure tform1.edit3change(sender: tobject);

begin

//якщо в третьому полі введено 5 символів

if length(edit3.text)=5 then

//то переходимо в четверте поле

edit4.setfocus;

end;

 

Для четвертого поля в події Onchange напишемо код:

 

procedure tform1.edit4change(sender: tobject);

begin

//якщо в четвертому полі введено 5 символів

if length(edit4.text)=5 then

//то переходимо на кнопку

button1.setfocus;

end;

 

Як видно із прикладу, код оброблювачів схожий, але він не може бути універсальним для всіх полів, тому що імена компонентів різні. Щоб цей код був універсальним потрібно звертатися до компонентів не за ім’ям, а використовуючи додаткові можливості Delphi. Розглянемо ці можливості.


 

Звертання до поточного компонента

Для звертання до поточного компонента можна використовувати запис:

 

tтип_компонента(activecontrol)

 

де тип компонента – це назва компонента на панелі компонентів. Якщо ви не пам'ятайте назву компонента, наведіть покажчик миші на його кнопку на панелі й у підказці прочитайте його назву.

 

Наприклад:

 

tedit(activecontrol) – звертання до поточного компонента як до текстового поля;

tbutton(activecontrol) - звертання до поточного компонента як до кнопки;

tlistbox(activecontrol) - звертання до поточного компонента як до списку;

 

Перехід між компонентами

Для переходу на потрібний компонент існує стандартний метод:

 

ім'я_компонента.setfocus; //не рекомендується

 

Але цей метод потребує зазначення імені компонента, що не рекомендується робити в універсальних процедурах. В Delphi існує метод для переходу на наступний компонент відносно поточного:

 

selectnext(activecontrol,true,true);

 

Створення універсального коду для форми реєстрації

Повернемося до нашої форми реєстрації і спробуємо написати універсальний код для пролів форми.

Для першого поля у події OnChange введіть код:

 

procedure TForm1.Edit1Click(Sender: TObject);

begin

//якщо довжина тексту поточного поля=5

if length(tedit(activecontrol).Text)=5 then

//перейти на наступний компонент

selectnext(activecontrol,true,true);

end;

Для того, щоби для інших полів виконувався такий самий код, виділіть ці поля і у події OnChange виберіть зі списку подію Edit1Change.

 


<== попередня лекція | наступна лекція ==>
Використання підпрограм в оброблювачах подій | Обробка групи компонентів


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн