Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Особенности удаления записи из таблицы
Чтобы удалить запись следует на навигаторе нажать кнопку (заметим, что удаление может быть выполнено и многими другими методами). В этом случае перед тем как удалить запись, программа выдает окно с вопросом о подтверждении ее удаления (рис. 4.4). Получив положительный ответ, программа удаляет запись. Правда, вопрос при этом программа задает на английском языке. Эту ситуацию можно улучшить своими средствами, используя функцию MessageDlg. Для этого сначала нужно отменить в навигаторе вопрос о подтверждении удаления, установив его свойство ConfirmDelete в false.
Создадим событие для щелчка кнопке навигатора DBNavigator со следующим текстом: procedure TForm1.DBNavigatorClick(Sender: TObject; Button: TNavigateBtn); Функция MessageDlg выводит в окно текст, который расположен среди его параметров первым. В нашем случае он складывается из суммы трех строк: а) слова " Удалить " с пробелом в конце, б) значения Table1Category. AsString (строчное значение по полю Category ) и в) "? " - символа вопроса с пробелом перед ним. Сумму этих строк мы и видим в окне рис. 4.5. Такое окно значительно информативнее, к тому же задает вопрос по-русски. В окне есть 2 кнопки mbYes и mbNo (кстати, в списке кнопок можно было бы указать и другие, но в данном случае они не нужны). Функция вернет свое значение для той кнопки, на которую нажал пользователь. Если пользователь нажал кнопку mbYes, то функция примет значение mrYes и, следовательно, условие в операторе if выполнится. Это приведет к исполнению процедуры Table1. Delete, то есть удалению текущей записи в Table1. В том случае, если пользователь закроет окно вопроса любым другим способом, то сработает та часть оператора, которая стоит за словом else (иначе). Там расположен оператор Abort (прервать). В данном случае мы прерываем процедуру удаления, которая производится в событии BeforeDelete. Если бы мы не вставили этот оператор, то процедура даже при отрицательном ответе все равно бы удалила запись. Тем не менее и это окно пишет наименования на кнопках по-английски. Сейчас мы заставим Delphi эти надписи выводить по-русски. Для этого будем подсовывать Delphi вместо стандартных английских слов нужные нам русские посредством перехвата момента события вывода надписей на кнопках и в заголовке окна. В самом конце модуля перед оператором end. разместите текст procedure HookResourceString(rs: PResStringRec; newStr: PChar); initialization Результат таких перехватов (хуков) показан на рис. 4.6.
Популярное:
|
Последнее изменение этой страницы: 2016-06-04; Просмотров: 582; Нарушение авторского права страницы