Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2012, 22:25   #11
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Если там БД, наверняка языком SQL можно создать запрос с исключениями ввиде имён того, что уже имеется.
Человек_Борща вне форума Ответить с цитированием
Старый 04.02.2012, 07:16   #12
Silver_S
Форумчанин
 
Регистрация: 14.03.2011
Сообщений: 104
По умолчанию

1. Поместить компоненты на панель, и сделать у панели Enabled:= false. Могу ошибаться, Delphi под рукой нет.
Silver_S вне форума Ответить с цитированием
Старый 09.02.2012, 12:26   #13
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

Ещё предложения?
delphicoding вне форума Ответить с цитированием
Старый 09.02.2012, 12:37   #14
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
Вопрос - как при изменении записи в таблицах связанных с этим СводнымКаталогом обновлять только одну изменённую запись???
регистрация датывремни модификации данных.
запрос (фильтр) по датевремени модификации.

Цитата:
4. И не стану. Это трата массы процессорного времени и перегон кучи данных.
Вы их и так уже перегнали. из БД в программу.
Зачем программе столько данных, что дублирование их части в памяти
Цитата:
трата массы процессорного времени и перегон кучи данных
Цитата:
5 Почему-то не всегда срабатывает наследование процедур от родительской формы в дочернюю - приходится писать пустую процедуру вида:


Код:
procedure TfForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
//
end;
процедуры обработки события не наследуются.
приведенная процедура именно такова.
Любая форма может либо иметь процедуру обработки события
onClose=formclose;
либо не иметь
Onclose=nil;

если в DFM есть упоминание про данное событие, данному событию назначается процедура из даннго DFM
упоминание пустое без указания имени процедуры то назначается пустой (nil).
DFM загружаются последовательно.
сначала родительский. (назначается родительский обработчик).
потом наследник. (если упоминания нет, остается родительский впечатление наследования
если упоминание есть но имени нет (иногда случается так сначала процедура была, потом стала не нужна)
устанавливается nil впечатления НЕ наследования.
если есть упоминания с именем устанавливается свой НЕ наследование.
Для наследования есть
Код:
TCustomform 
protected
    procedure DoClose(var Action: TCloseAction); dynamic;

procedure TCustomForm.DoClose(var Action: TCloseAction);
begin
  if Assigned(FOnClose) then FOnClose(Self, Action);
end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 09.02.2012 в 13:11.
evg_m вне форума Ответить с цитированием
Старый 09.02.2012, 15:01   #15
Silver_S
Форумчанин
 
Регистрация: 14.03.2011
Сообщений: 104
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
процедуры обработки события не наследуются.
приведенная процедура именно такова.
Любая форма может либо иметь процедуру обработки события
onClose=formclose;
либо не иметь
Onclose=nil;

если в DFM есть упоминание про данное событие, данному событию назначается процедура из даннго DFM
упоминание пустое без указания имени процедуры то назначается пустой (nil).
DFM загружаются последовательно.
сначала родительский. (назначается родительский обработчик).
потом наследник. (если упоминания нет, остается родительский впечатление наследования
если упоминание есть но имени нет (иногда случается так сначала процедура была, потом стала не нужна)
устанавливается nil впечатления НЕ наследования.
если есть упоминания с именем устанавливается свой НЕ наследование.
Все, что вы сказали, довольно логично. Поверил бы на слово, если б не факты... (Ну или я вас недопонял)
Создал 3 формы, наследованные друг от друга TForm3<--TForm2<--TForm1<--TForm, с кнопкой на TForm1, каждая в своем модуле, со своим DFM.

Код:
procedure TForm1.btn1Click(Sender: TObject);
begin
  ShowMessage('1');
end;

procedure TForm2.btn1Click(Sender: TObject);
begin
  inherited;
  ShowMessage('2');
end;

procedure TForm3.btn1Click(Sender: TObject);
begin
  ShowMessage('3');
  inherited;
end;
Последовательно появляются сообщения 3, 1, 2; после такого впечатления наследования, начинаешь верить, что это вовсе не впечатление...
Silver_S вне форума Ответить с цитированием
Старый 09.02.2012, 16:02   #16
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

пытался обяснить немного другую задачу
Почему-то не всегда срабатывает наследование процедур от родительской формы в дочернюю - приходится писать пустую процедуру вида:

если упоминание есть но имени нет (иногда случается так сначала процедура была, потом стала не нужна)
устанавливается nil впечатления НЕ наследования.

если есть упоминания с именем устанавливается свой НЕ наследование.
а если в нем использовать inherited; то наследование!
что вы и продемострировали в своем примере.
Да этой фразы у меня не было. Не счел нужным акцентровать внимание на inherited;

'Этого тоже не было.
Использование DoClose; override; в родительской форме избавляет от необходимости помнить про необходимость inherited в дочерних. И соблюдать правило одного имени (или помнить имя радительского обработчика). смотри ниже

вообще-то inheried; и есть реализация механизма наследования.
Вызов любых доступных родительских процедур
по умолчанию одноименных с текущей и такими же параметрами.
Но никто не запрещает менять имя и число параметров.
Код:
function TClassX.NewTest: boolean;
begin
  result:=inherired TestData('проверка');
end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 09.02.2012 в 16:05.
evg_m вне форума Ответить с цитированием
Старый 10.02.2012, 08:14   #17
Silver_S
Форумчанин
 
Регистрация: 14.03.2011
Сообщений: 104
По умолчанию

evg_m, у меня смешались понятия "переменная события" и "обработчик события", который можно переопределить (причем смешались только в отношении наследуемых форм/фреймов), и засела мысль "делфи, при загрузке dfm по волшебству помнит, какие значения присваивались переменной события и они вызываются через inherited". Сейчас все встало на свои места.
Silver_S вне форума Ответить с цитированием
Старый 14.03.2012, 10:42   #18
delphicoding
Заблокирован
 
Регистрация: 04.07.2011
Сообщений: 261
По умолчанию

evg_m
Большое спасибо за ответы, всё очень понятно разъяснили.
Если не срабатывают события формы, я теперь делают так - в дизайнере на дочерней форме кликаю два раза на нужном событии (где уже написано например Form1Close) - появляется процедура в редакторе кода, затем удаляю процедуру и объявление этой процедуру - всё, унаследованное событие начинает работать.
Видимо действительно иногда по каким-то причинам в DFM они не прописываются.
delphicoding вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
несколько вопросов spydark91 Общие вопросы Delphi 2 18.07.2011 13:48
Несколько вопросов phphel Общие вопросы Delphi 19 30.01.2011 21:24
несколько вопросов fitc Общие вопросы Delphi 28 14.07.2009 21:20
Несколько вопросов pix_l Общие вопросы Delphi 1 29.03.2009 22:26
Несколько Вопросов Дорст Общие вопросы Delphi 3 12.11.2007 09:18