Сторінка 36 з 40
TPopupMenu
Текст, що міститься в пункті меню, визначається властивістю:
Крім основної, він несе ще дві додаткові навантаження. По-перше, якщо в рядку є амперсанд ( ''), то він разом з наступним за ним символом є акселератором. Наприклад, для рядка 'File' натискання + означає вибір цього пункту. По-друге, якщо текст складається з одного символу '-', то цей пункт служить в меню роздільником (має стиль MFJSEPARATOR);
Крім акселератора може бути описана ще одна комбінація клавіш, натискання якої рівнозначно вибору пункту. Вона повинна міститися у властивості: •
Способи вибору пункту меню - клацання мишею, натискання на сфальцьованому пункті, натискання акселератора або гарячої комбінації, нарешті, виклик методу
призводять до виникнення події:
Компонент TMenuItem може розрізняти тільки ця подія, з которьм повинні бути пов'язані дії, заради яких ви ввели даний пункт в меню. Сприймають цю подію ті пункти меню, які в даний момент активні, що означає-встановлене в True властивість:
Якщо Enabled одно False, пункт зображується серьм кольором і не сприймає повідомлень.
Часто пункти меню використовуються для перемикання будь-яких режимів роботи програми. При цьому вони можуть бути відзначені "галочкою" перед початком тексту. властивість
відповідає за те, чи є цей пункт зазначеним.
Якщо в меню занадто багато команд, то їх розташування одна під інший може викликати серйозні незручності для користувача. властивість
покликане вирішити цю проблему. Якщо воно встановлено в mbBreak, то команди меню, починаючи з цієї, розташовуються в новому - сусідньому з колишнім - стовпці (при цьому їх приналежність не змінюється). Якщо воно дорівнює mbBarBreak, стовпці при цьому поділяються вертикальною лінією. У Delphi все компоненти меню типу TMenuItem можуть бути як простими командами, так і підміню, що мають власний список пунктів. У разі, якщо у компонента дочірніх підміню і пунктів немає, для нього має сенс властивість:
Перш при написанні меню потрібно було вигадувати і привласнювати унікальний ідентифікатор кожному його пункту - тобто власне код команди, який посилався як параметр повідомлення WM.COMMAND. Зараз це завдання покладено на Delphi - програміст не тільки не визначає, але може і не знати коду команди, пов'язаного з цим пунктом меню. Система вибере унікальне значення автоматично і привласнить це значення властивості Command. Змінювати його забороняється.
Інтерпретація повідомлень меню прихована від програміста. Система сама визначає, який пункт обраний, і викликає його обробник події OnClick.
Якщо для якихось цілей знадобився код команди, можна скористатися вищевказаним властивістю (див. Приклад в описі компонента TMenu).
Якщо у компонента TMenuItem є дочірні пункти, то він є підміню, має статус MF_POPUP і дескриптор меню Windows, доступний для читання через властивість:
Пункти меню ієрархічно пов'язані. Методи і властивості для роботи з дочірніми пунктами меню наведені в таблиці.
(Rо) property Parent: TMenuItem;
Містить покажчик на батьківське підміню.
Якщо пункт меню знаходиться у фокусі, натискання викличе систему допомоги з контекстом, визначеним у властивості:
використовується при об'єднанні кількох меню між собою. Докладне пояснення його призначення см. В описі компонента TMainMenu.
Збірка проектаДля компіляції прикладу потрібно середовище розробки Delphi 6 або 7.Файл проекту - TestVK.dpr.Откройте цей файл (наприклад, подвійним клацанням миші з Провідника). Натисніть клавіші Ctrl-F9 (або пункт меню Project-Compile). Якщо все пройшло нормально, в цій же папці утворюється готовий.
1. Вибираємо з бази даних тільки ті поля, які нам нужниЗапроси виду: select * from. можуть дуже сильно навантажити як сервер, так і комп'ютер користувача, особливо якщо таблиці містять великі символьні або виконавчі поля. Наприклад, навіщо вибирати поле з фотографією співробітників, коли потрібні.
Нерідко зустрічав на форумах думки, що потоки не потрібні взагалі, будь-яку програму можна написати так, що вона буде чудово працювати і без них. Звичайно, якщо не робити нічого серйозніше "Hello World" це так і є, але якщо поступово набирати досвід, рано чи пізно будь-який початківець програм.
Напевно кожен з нас хоча б раз у своїй практиці, але зустрічався з кодом виду: TForm1 = class (TForm) private procedure MyCoolHandler (var Message: TMessage); message WM_USER; public end; procedure TForm1.MyCoolHandler (var Message: TMessage); begin Message.Result: = 32767 ;.