|
Передача параметров в форму
|
|||
---|---|---|---|
#18+
у меня всё упаковано в интерфейсы. На вход форма принимает IParameters который фактически TDictionary<String, Variant> и ещё несколько типа режим, PK выбранной записи итд. Причем даже не форма, а нечто вроде ServiceLocator который выдаёт интерфейс для работы. Внутри там может быть несколько форм, разные формы, вообще не форма итд. После execute можно попросить данные результа. Выглядит вот так Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
В результате никакие формы в вызывающем коде не фигурируют вовсе, в uses не подключаются итд ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2022, 23:44 |
|
Передача параметров в форму
|
|||
---|---|---|---|
#18+
Michael Longneck, В итоге ты лишился всех проверок, которые за тебя мог сделать компилятор ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 01:02 |
|
Передача параметров в форму
|
|||
---|---|---|---|
#18+
_Vasilisk_, тем не менее, это шаг в правильном направлении. Осталось научиться совмещать то и другое и обойтись без лишних сущностей. Контрольный вопрос, который на месте Михаила я бы себе задал - как часто у него в приложении повторяется такой код, как он привёл. Если один-два-три раза - почему бы и нет. Если "по разу на каждый вызов формы" - это, конечно, печально. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 01:06 |
|
Передача параметров в форму
|
|||
---|---|---|---|
#18+
Не совсем понимаю вопрос. Что значит сколько раз? Все "стандартные места" вообще сделаны ",декларативно", это как раз "кастомный вызов". Редакторы (формы редактирования) и вовсе никем из прикладников не вызываются вручную, все сослано в базовые формы. Сократить все вышепреведенное в единый метод? Возможно, но не вижу большого выигрыша. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 01:25 |
|
Передача параметров в форму
|
|||
---|---|---|---|
#18+
fraks> F5 он называется потому что ... по кнопке <F5> ... fraks> в браузерах /// идет обновление Боюсь спросить, как называлась бы процедуры, которые людям привычны по Alt+F4, Windows+D и т.д. :) fraks> Наружу и формы ничего не торчит т.к. эта функция, в которой fraks> создается и вызывается форма - она в модуле формы и есть. Да, вижу, виноват, недосмотрел. Тогда непонятно, зачем в ней вручную контролы безусловно настраиваются, если они никак от входного параметра (id) не зависят - лучше всё что можно настроить в дизайн-тайм. Но не суть. _Vasilisk_> Так никто не мешает все параметры упаковать в два record Ну да, и получить вместо длинного списка параметров один длинный рекорд. Те же Фаберже, но в профиль. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 11:20 |
|
Передача параметров в форму
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам fraks> Наружу и формы ничего не торчит т.к. эта функция, в которой fraks> создается и вызывается форма - она в модуле формы и есть. Да, вижу, виноват, недосмотрел. Тогда непонятно, зачем в ней вручную контролы безусловно настраиваются, если они никак от входного параметра (id) не зависят - лучше всё что можно настроить в дизайн-тайм. Но не суть. Контролы настраиваются в зависимости от Fmode. Для создания формы есть несколько подобных функций. Тут функция для редактирования Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
При редактировании поля про EAN13 и NDOK смысл имеют, а вот при создании - нет. Поэтому в этом же юните для этой же формы есть другая функция, с другими параметрами. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 11:36 |
|
Передача параметров в форму
|
|||
---|---|---|---|
#18+
fraks> Контролы настраиваются в зависимости от Fmode. Во-первых, этого нигде в процедуре не видно. Во-вторых, Fmode это в принципе не входной параметр процедуры. В общем, не по сабжу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 11:42 |
|
Передача параметров в форму
|
|||
---|---|---|---|
#18+
fraks, у меня все формы являюся наследниками от базовой. У меня бы подобный пример выглядел бы так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
И вызов для каждой формы соответственно свой ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 14:06 |
|
Передача параметров в форму
|
|||
---|---|---|---|
#18+
Ну похоже на мой вариант. Только у меня заполнение отдельным методом, ну и есть Fmode для "просмотора с выбором". P.S. id := Fid почему-то не зависит от ModalResult. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 14:14 |
|
Передача параметров в форму
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Ну да, и получить вместо длинного списка параметров один длинный рекорд. Те же Фаберже, но в профиль. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 16:16 |
|
Передача параметров в форму
|
|||
---|---|---|---|
#18+
_Vasilisk_> Чем это хуже специального метода Init()? Моё предложение было Init vs Create, точнее, Create + Init(LongParams) vs Create(LongParams), а ты предлагаешь LongParams в рекорд упаковать (что ИМХО не лучше, а хуже). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 21:02 |
|
Передача параметров в форму
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам а ты предлагаешь LongParams в рекорд упаковать (что ИМХО не лучше, а хуже) Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9.
Имхо, обсуждение, что лучше, а что хуже - достаточно бессмысленно. Единственный плюс третьего - эти 20 параметров можно одним движением передать в какую-то третью подпрограмму, главный минус - дополнительно громоздкий код, а в остальном они одинаковые. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 21:36 |
|
Передача параметров в форму
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, Я предлагаю вместо Create + Init(LongParam) + ShowModal использовать Create + Execute(LongParam). А паковать ли LongParam в структуру - это уже дело вкуса. А вот Init имеет смысл если объект формы переживает более одного ShowModal и в Init задавать те параметры, которые не будут меняться при показах. Короче полный аналог конструктора, но не конструктор ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 21:45 |
|
Передача параметров в форму
|
|||
---|---|---|---|
#18+
Не вижу выгоды в использовании record который создаётся через конструктор этого рекорда с параметрами. Тогда как вариант типа Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
несмотря на некоторую многословность, обладает самодокументированностью. Нет ничего хуже чем ковыряться в списке из 20 параметров, особенно если часть из них булевые флаги. Строки ExecProc(True, True, False, True, nil, '', 0) это прямо скажем плохой стиль. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2022, 21:47 |
|
Передача параметров в форму
|
|||
---|---|---|---|
#18+
_Vasilisk_> Я предлагаю вместо Create + Init(LongParam) + ShowModal _Vasilisk_> использовать Create + Execute(LongParam). А, чтобы ShowModal вручную не вызывать... ИМХО, это дело вкуса, третьестепенный вопрос. > А вот Init имеет смысл если объект формы переживает > более одного ShowModal и в Init задавать те параметры, > которые не будут меняться при показах. Многоразовые тоже были (IIRC, просмотрщики OLE и пр. медийки у меня были именно такие), но были ли там долгоживущие параметры - не помню, лень проверять. ИМХО это не так важно. Вообще сама мысль "мы сделаем в Init/Execute Show[Modal], чтобы не вызывать его отдельно" не очень понятна (плюсов кроме экономии 1 строчки кода как-то незаметно). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 10:03 |
|
Передача параметров в форму
|
|||
---|---|---|---|
#18+
Michael Longneck> несмотря на некоторую многословность, Michael Longneck> обладает самодокументированностью. Дык не надо чураться комментариев. Это, конечно, документирование, а не самодокументирование, но не западло. Michael Longneck> Нет ничего хуже чем ковыряться в списке из Michael Longneck> 20 параметров, особенно если часть из них Michael Longneck> булевые флаги. ... это прямо скажем плохой стиль. +146% Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 10:04 |
|
|
start [/forum/topic.php?fid=58&gotonew=1&tid=2036686]: |
0ms |
get settings: |
12ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
11ms |
get first new msg: |
30ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 260ms |
total: | 431ms |
0 / 0 |