powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DBNavigator....
5 сообщений из 5, страница 1 из 1
DBNavigator....
    #32269352
Chaynik_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как мне сделать чтоб при нажатии "+" запись не добовлялась, а только моя функция вызывалась. Я делаю так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
procedure TfrmEditClient.DBNavigator1BeforeAction(Sender: TObject;
  Button: TNavigateBtn);
begin
  case Button of
    nbInsert: //Делать то-то.....;
  end;
//Вот тут надо что-то дописать, чтоб событие дальше не выполнялось, и вставка не производилась
end;


Что нужно дописать???
...
Рейтинг: 0 / 0
DBNavigator....
    #32269384
Малиновский Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используй события не навигатора, а набора данных, к которому он привязан.
...
Рейтинг: 0 / 0
DBNavigator....
    #32269458
Chaynik_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И какое там событие использовать, его то же как то же надо прервать. А вот так можно делать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
procedure TfrmEditClient.DBNavigator1BeforeAction(Sender: TObject;
  Button: TNavigateBtn);
begin
  case Button of
    nbInsert: MyProcedure;
  end;
  Abort;
end;

Этот код рабоает, но вот можно ли вообще Abort делать, ни каких потом проблем не будет???
...
Рейтинг: 0 / 0
DBNavigator....
    #32269549
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Накидай своих кнопок и делай все, что хочешь :)

Я DBNavigator использовал пару раз - только когда начал Delphi изучать.
Ни в одном проекте больше никогда не использовал
...
Рейтинг: 0 / 0
DBNavigator....
    #32269995
Малиновский Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче, есть текст почти всех VCL. Смотрим нужный тебе фрагмент:
----------------
procedure TDBNavigator.BtnClick(Index: TNavigateBtn);
begin
if (DataSource <> nil) and (DataSource.State <> dsInactive) then
begin
if not (csDesigning in ComponentState) and Assigned(FBeforeAction) then
FBeforeAction(Self, Index);
with DataSource.DataSet do
begin
case Index of // То есть твое событие OnClick вызывается ПОСЛЕ
nbPrior: Prior; // вызова метода обработки набора данных
nbNext: Next;
nbFirst: First;
nbLast: Last;
nbInsert: Insert;
nbEdit: Edit;
nbCancel: Cancel;
nbPost: Post;
nbRefresh: Refresh;
nbDelete:
if not FConfirmDelete or
(MessageDlg(SDeleteRecordQuestion, mtConfirmation,
mbOKCancel, 0) <> idCancel) then Delete;
end;
end;
end;
if not (csDesigning in ComponentState) and Assigned(FOnNavClick) then
FOnNavClick(Self, Index); // Вот он, твой OnClick вызывается
end;

//---------------
Вывод: сначала все-таки вызывается метод Insert, который ты можешь
убить методом Cancel, а затем вствить нужный код (единственное неудобтсво -будут стрелять все связанные события DataSeta типа OnNewRecord ), либо не используй DBNavigator, как советует ТИГРА. Совет, по-моему, правильный.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DBNavigator....
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]