![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Заполнение формы до её отображения [D7, 2003]
jacksotnik © (2011-11-23 16:28:00)Всем добрый день.
Вызываю форму так
card.showmodal;
На форме есть эдиты в которые мне надо записать данные до того как форма покажется(чтоб форма открывалась уже заполненная и её можно было редактировать). Знаю решение через глобальные переменные, но как-то неудобно может есть способ попроще
clickmaker (2011-11-24 12:06:00) [21]лично я предпочитаю в таких случаях классовый метод Execute с передачей ему и возвратом из него параметров. В виде записи, если последних много
QAZ (2011-11-24 11:47:00) [22]
> Знаю решение через глобальные переменные, но как-то неудобно
> может есть способ попроще
прикинь,а твоя форма это тоже переменная и О УЖОС - глобальная
Ega23 (2011-11-24 11:19:00) [23]
> Я и говорю что у меня лучше.
Ненаказуемо.
Anatoly Podgoretsky (2011-11-24 11:13:00) [24]> Медвежонок Пятачок (24.11.2011 11:00:44) [44]
Длиннее и толще.
Медвежонок Пятачок (2011-11-24 11:00:00) [25]Я и говорю что у меня лучше.
Ega23 (2011-11-24 10:57:00) [26]Это твоё сугубо субъективное мнение. Отучайся говорить за всех.
Медвежонок Пятачок (2011-11-24 10:43:00) [27]Так я же и говорю, что у него нечитаемый код.
Потому ничего и не видно.
Омлет (2011-11-24 10:39:00) [28]> Медвежонок Пятачок © (24.11.11 10:28) [40]
> все видно невооруженным глазом
Ничего не видно.
Медвежонок Пятачок (2011-11-24 10:28:00) [29]Здесь и без голосовалки все видно невооруженным глазом.
Кода наворочено в полтора-два раза больше, менее читаемого и менее поддерживаемого.
Ega23 (2011-11-24 10:23:00) [30]
> Да везде.
Это твоё сугубо субъективное мнение.
Можешь спецом голосовалку в потрепаловке открыть. Тогда статистика более-менее репрезентативная будет. Пока что твоё слово против моего. Низачот.
Anatoly Podgoretsky (2011-11-24 10:23:00) [31]> Омлет (24.11.2011 10:05:36) [36]
Можно и первый вариант. Это не ошибка. Хотя второй вариант более
предпочтителен.
Ega23 (2011-11-24 10:22:00) [32]
> if ShowModal = mrOK then
Да, я так и делал раньше. Просто забыл уже - давно модальных форм не создавал... :)
Омлет (2011-11-24 10:05:00) [33]> Ega23 © (23.11.11 20:12) [30]
> ShowModal;
> if ModalResult = mrOk then
if ShowModal = mrOK then
Медвежонок Пятачок (2011-11-24 10:02:00) [34]Да везде.
Ega23 (2011-11-24 09:05:00) [35]
> Ну понятно в общем.
> По всем трем пунктам хуже, но "если критично я могу исправить"
Да где хуже-то?
Медвежонок Пятачок (2011-11-24 08:33:00) [36]Ну понятно в общем.
По всем трем пунктам хуже, но "если критично я могу исправить"
Ega23 (2011-11-23 21:15:00) [37]
> 1. допустим что в приложении надо вызывать эту форму в трех
> с половиной местах. у тебя будет повторяться этот код.
Если это действительно настолько критично - то сделаю процедуру.
> 2. неоптимальное тройное копирование памяти lp
Если это действительно настолько критично - буду передавать указатель, заполнение рекорда значениями повешу на кнопку ОК, уберу с неё ModalResult = mrOK и буду его в обработчике ручками выставлять.
> 3. твои свойства скрывают реализацию от тебя самого как
> от дизайнера формы. Зачем.
С чего это они скрывают реализацию? Наоборот, я всё прекрасно вижу. И потом, в том же сеттере я могу сделать проверку на валидность полученных данных (если треба).
> у меня лучше.
Пока не убедил.
Медвежонок Пятачок (2011-11-23 20:36:00) [38]окей.
но все равно еще не то.
1. допустим что в приложении надо вызывать эту форму в трех с половиной местах. у тебя будет повторяться этот код.
2. неоптимальное тройное копирование памяти lp
3. твои свойства скрывают реализацию от тебя самого как от дизайнера формы. Зачем.
у меня лучше.
Ega23 (2011-11-23 20:12:00) [39]Ну, собственно, вся переделка, чтоб как в 13:
procedure TLoginAndPwdForm.btnEditPwdClick(Sender: TObject);
var
lp: TLoginAndPwd;
begin
lp := LoginAndPwd;
with TLoginAndPwdForm.Create(Application) do
try
LoginAndPwd := lp;
ShowModal;
if ModalResult = mrOk then
begin
lp := LoginAndPwd;
Self.LoginAndPwd := lp;
//отправляем куда-то
ChangeLoginDataSomeWhere(lp);
//Пишем о чем-то куда-то
WriteToLogAboutSomething(lp);
end;
finally
Free;
end;
end;
Медвежонок Пятачок (2011-11-23 18:59:00) [40]У тебя версия delphi какая?
у меня любая есть. кроме первой.