Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Вниз

Нужен совет (мнение) по TFrame   Найти похожие ветки 

 
wisekaa ©   (2004-11-09 18:43) [0]

У меня есть Фрейм, в нем реализовано сохранение посл-х установок в БД (для каждого пользователя).
Хотелось бы услышать ваше мнение, как сделать лучьше:

1. Реализовать процедуру saveframedata, которую пользователи будут вызывать на OnClose Формы?
2. Перехватить закрытие Формы
    - Сообщением? Возможно ли перехватить сообщение на закрытие Формы;
    - Подменой OnClose Формы на свой, с последующим вызовом OnClose Формы, если оно было назначено;


 
KilkennyCat ©   (2004-11-09 18:52) [1]

onCloseQwery?


 
KilkennyCat ©   (2004-11-09 19:04) [2]

Да, ошибся, спутал с формой.

Но разве сложно ввести флаг модификации, проверить его в любом месте и на основе проверки предложить сохранение? Как в любом текстовом редакторе.


 
wisekaa ©   (2004-11-09 19:10) [3]


> [2] KilkennyCat ©

Модификация будет всегда, вопрос как узнать момент когда "Задать вопрос о сохранении".

Фрейм, используеться в разных формах, разными разработчиками.


 
wisekaa ©   (2004-11-09 19:11) [4]

Хотел сделать как у компонент, есть св-во SaveLastData, если = True, то перехватить закрытие ParentForm и сохранить в БД


 
KilkennyCat ©   (2004-11-09 19:12) [5]

все, я понял.


 
KilkennyCat ©   (2004-11-09 19:32) [6]

вот, нашел в дебрях интернета ответ Юрия Зотова:

Конкретно с TFrame я дела не имел, но вообще это делается так.

TMyForm = class(...)
...
protected
 procedure Notification(AComponent: TComponent; Operation: TOperation); override;
...
public
 procedure MyMethod(AFrame: TFrame);
...
end;

procedure TMyForm.Notification(AComponent: TComponent; Operation: TOperation);
begin
 inherited Notification(AComponent, Operation);
 if (AComponent is TFrame) and (Operation = opInsert)
   then MyMethod(AComponent as TFrame);
end;

procedure MyMethod(AFrame: TFrame);
begin
 // Вытворяем любые чудеса
end;

P.S.
прошу прощения у Юрия за использование без разрешения.


 
KilkennyCat ©   (2004-11-09 19:34) [7]

и вот еще:
http://corvus.hotmail.ru/docs/frames.dhtml


 
vuk ©   (2004-11-09 19:44) [8]

Вариант 1 предпочтительнее, т.к.:
1. Подмена OnClose формы не есть хорошо - компонент на форме (а в данном случае - фрейм) не должен трогать обработчики, предназначенные для того, чтобы их использовал разработчик.

2. Перехват сообщения не подходит примерно по той же причине. Плюс может оказаться так, что сохранение необходимо не во всех случаях закрытия формы.

Отсюда вывод. Если нет возможности правильно и гарантированно сделать что-то автоматически, то лучше не делать совсем и оставить на усмотрение того, кто будет использовать фрейм.


 
jack128 ©   (2004-11-09 19:57) [9]

Сохранять настройки нужно ВСЕГДА?  Не может быть такого, что настройки не нужно сохранять?? Почему бы тогда это не реализовать в деструкторе фрейма??


 
KilkennyCat ©   (2004-11-09 19:57) [10]


> vuk ©   (09.11.04 19:44) [8]


согласен, если только не тот случай, когда все очень жестко задано. но такие случаи я расцениваю как попытку ограничить меня в правах :)


 
Kolan ©   (2004-11-09 23:56) [11]

Извени как всегда сначало отправил потом писма прочитал.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.038 c
3-1098197683
iat
2004-10-19 18:54
2004.11.21
Если спрятать колонку в DBGrid, то она исчезнет из отчета...


6-1094372978
Johnny Raw
2004-09-05 12:29
2004.11.21
время последнего изменения http://www.delphimaster.ru


14-1099707837
Fktrc
2004-11-06 05:23
2004.11.21
Консольные утилиты


8-1093057941
race1
2004-08-21 07:12
2004.11.21
oldest directx


1-1099712363
beavka
2004-11-06 06:39
2004.11.21
Трей - проблема





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский