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

Вниз

Взаимодействие форм   Найти похожие ветки 

 
ВашеИмя   (2011-02-11 09:44) [0]

Расскажите, как надо:
Есть форма [1] (допустим, отображение документов), она вызывает немодальную форму [2] конкретного документа (который имеет свои табличные части). При открытии формы [2] должны быть загружены, допустим, 2 датасета (формы и табличной части Товары). При закрытии формы [2] происходит сохранение в форме [1]. При том что из одной формы [1] могут быть открыты несколько форм [2], и форма [1] должна верно обработать оба события от формы [2]. Как верно это реализовывать?

Пробовал через callback-функции. Процедуры загрузки и сохранения должны прописываться в какой из форм? Подозреваю, что в форме [1]. Тогда как передать нужные данные из формы [2]?

Короче, запутался. Не могли бы поделиться опытом? Если с примерами, так вообще замечательно.


 
Anatoly Podgoretsky ©   (2011-02-11 10:14) [1]

> ВашеИмя  (11.02.2011 09:44:00)  [0]

Мы такие завязки между формами не делаем, плохо кончится.


 
ВашеИмя   (2011-02-11 10:59) [2]

[1] Расскажите ваш подход?


 
Anatoly Podgoretsky ©   (2011-02-11 11:29) [3]

> ВашеИмя  (11.02.2011 10:59:02)  [2]

Каждая форма автономна, максимум главная форма должна знать про подчиненую,
а это автоматом. Наоборот ни в коем случае.


 
ВашеИмя   (2011-02-12 04:57) [4]


> Anatoly Podgoretsky ©   (11.02.11 11:29) [3]

Абсолютно верно. Я спрашиваю о том, как правильно передавать данные из подчиненной формы в главную. Кто должен делать инициализацию подчиненной формы? Кто должен делать сохранение?


 
Германн ©   (2011-02-12 05:18) [5]


> ВашеИмя   (12.02.11 04:57) [4]
>
>
> > Anatoly Podgoretsky ©   (11.02.11 11:29) [3]
>
> Абсолютно верно. Я спрашиваю о том, как правильно передавать
> данные из подчиненной формы в главную. Кто должен делать
> инициализацию подчиненной формы? Кто должен делать сохранение?
>
>

Главная форма.
"немодальность" формы [2] вызывает сомнения в правильности проектирования.


 
KilkennyCat ©   (2011-02-12 05:27) [6]

а что, нельзя всякие там дбгриды на вторых формах настроить на общий всякий там датасет на главной форме?


 
KilkennyCat ©   (2011-02-12 05:29) [7]


> Германн ©   (12.02.11 05:18) [5]
> "немодальность" формы [2] вызывает сомнения в правильности
> проектирования

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


 
ВашеИмя   (2011-02-12 07:41) [8]


> "немодальность" формы [2] вызывает сомнения в правильности
> проектирования.

А если надо открыть два разных документа в разных окнах?


> а что, нельзя всякие там дбгриды на вторых формах настроить
> на общий всякий там датасет на главной форме?

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


 
Anatoly Podgoretsky ©   (2011-02-12 10:08) [9]

> ВашеИмя  (12.02.2011 04:57:04)  [4]

Пусть главная забирает из подчиненой и постулат про знания не будет нарушен


 
Anatoly Podgoretsky ©   (2011-02-12 10:11) [10]

> KilkennyCat  (12.02.2011 05:29:07)  [7]

Обнаружит не ее, а сотню форм и будет чесать в затылке, что же теперь
делать!


 
_Юрий   (2011-02-12 10:11) [11]


> Германн ©   (12.02.11 05:18) [5]


> Главная форма.
> "немодальность" формы [2] вызывает сомнения в правильности
> проектирования.


Вы уже неоднократно высказывались тут в пользу модальных форм.  Имею заявить, что с точки зрения пользователя это в абсолютном большинстве случаев катастрофически неудобно. Представьте себе, что вы работаете с документами на столе, и чтобы открыть один документ, вынуждены закрыть другой.
Или что у вас браузер одновременно показывает только одну страницу, а чтобы открыть другую, надо закрыть первую.
Зато для программиста это весьма удобно, не возникает вопросов, описанных у автора. Кому что важнее.


> ВашеИмя   (11.02.11 09:44)  
> При закрытии формы [2] происходит сохранение в форме [1].



Видимо, таких связей быть не должно, и сохранение должно проводиться в форме 2. Ничто не мешает ей помнить "ParentID", и сохраняться самостоятельно.
С калбеками дурной путь, верно Анатолий говорит


 
ВашеИмя   (2011-02-12 10:16) [12]


> Пусть главная забирает из подчиненой и постулат про знания
> не будет нарушен

Если сохранение в форме [1]: каким образом главная должна забрать из подчиненной?


> Видимо, таких связей быть не должно, и сохранение должно
> проводиться в форме 2. Ничто не мешает ей помнить "ParentID",
>  и сохраняться самостоятельно.

Если сохранение в форме [2]: каким образом сообщить что главная должна обновить список документов (причем не весь, а только конкретную строку)?


 
_Юрий   (2011-02-12 10:23) [13]


> Если сохранение в форме [2]: каким образом сообщить что
> главная должна обновить список документов (причем не весь,
>  а только конкретную строку)?


Отправить нотификацию. Например, сообщение (PostMessage). Какой именно документ обновился - передать в параметре сообщения.
Или СallBack


 
_Юрий   (2011-02-12 10:29) [14]

Или подписка.
Форма2 регистрирует подписчиков на изменения (в общем случае, список).
Когда проходит изменение, форма 2 отправляет нотификацию всем подписчикам по списку, в том числе и форме1, которая ранее подписалась на прослушивание.
При этом форма 2 не знает, кто подписчик.
А что такое подписчик - это может быть интерфейс


 
Anatoly Podgoretsky ©   (2011-02-12 10:52) [15]

> _Юрий  (12.02.2011 10:11:11)  [11]

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


 
Anatoly Podgoretsky ©   (2011-02-12 10:54) [16]

> ВашеИмя  (12.02.2011 10:16:12)  [12]

Противоположным помещению, а это мы не обсуждали, приводи код, укажем как
обратно забирать. Но в обем формула простая B = A, A = B


 
Anatoly Podgoretsky ©   (2011-02-12 10:56) [17]

> _Юрий  (12.02.2011 10:23:13)  [13]

СallBack это другой механизм и должен использоваться по назначению, а не для
закрытия формы, это и так известно для модальных форм.
А для немодальных тогда придется делать два СallBack :-) Ведь надо же
сообщить, что я забрал, можешь закрываться.


 
Anatoly Podgoretsky ©   (2011-02-12 10:57) [18]

> _Юрий  (12.02.2011 10:29:14)  [14]

Может тогда стоит применить Веб сервер или трехзвенку


 
!!!   (2011-02-12 11:04) [19]


> Вы уже неоднократно высказывались тут в пользу модальных
> форм.  Имею заявить, что с точки зрения пользователя это
> в абсолютном большинстве случаев катастрофически неудобно.
>  Представьте себе, что вы работаете с документами на столе,
>  и чтобы открыть один документ, вынуждены закрыть другой.
> Или что у вас браузер одновременно показывает только одну
> страницу, а чтобы открыть другую, надо закрыть первую.Зато
> для программиста это весьма удобно, не возникает вопросов,
>  описанных у автора. Кому что важнее.

Просматривать несколько документов дело вполне нормальное, но править?
А просматривать одновременно несколько однотипных документов удобнее в табличке.
Много не модальных табличек для просмотра и модальные окна для редактирования/создания чем плохо то?

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


 
ВашеИмя   (2011-02-12 11:04) [20]


> _Юрий   (12.02.11 10:29) [14]

а) Где бы пример посмотреть?
б) На каждую форму придется создавать свой подписчик?


 
ВашеИмя   (2011-02-12 11:12) [21]


> Противоположным помещению, а это мы не обсуждали, приводи
> код, укажем как
> обратно забирать

Ну опять же два варианта.
а) Загружает дочерняя форма
В дочерней форме объявлена процедура, которую вызывает главная форма
procedure ShowGoods(Sender: TObject; DataSet: TDataSet);
begin
 with TfrmGoods.Create(Sender) do
 begin
   FIdDoc := DataSet.FieldByName("ID").AsVariant;
   with DataSetDoc do
   begin
     Close;
     ParamByName("ID").Value := FIdDoc;
     Open;
   end;
   with DataSetGoods do
   begin
     Close;
     ParamByName("ID").Value := FIdDoc;
     Open;
   end;
 end;
end;


б) Загружает главная форма (чем мне нравится этот подход - можно использовать виртуальные датасеты типа VirtualTable, делать пишущие транзакции короткими и что-нибудь еще)

with TfrmGoods.Create(Self) do
begin
   with DataSetDoc do
   begin
     Close;
     ParamByName("ID").Value := FIdDoc;
     Open;
   end;
   with DataSetGoods do
   begin
     Close;
     ParamByName("ID").Value := FIdDoc;
     Open;
   end;
end;


 
ВашеИмя   (2011-02-12 11:15) [22]


> Просматривать несколько документов дело вполне нормальное,
>  но править?

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


> одна именно такая, на мой взгляд из всех имеющихся самая
> удобная

Самописная или можно где-то посмотреть?


 
ВашеИмя   (2011-02-12 11:18) [23]

+ [21]
Зря скопировал. Поправлюсь

б) Загружает главная форма (чем мне нравится этот подход - можно использовать виртуальные датасеты типа VirtualTable, делать пишущие транзакции короткими и что-нибудь еще)

with TfrmGoods.Create(Self) do
begin
  with DataSetDoc do
  begin
    Close;
    ParamByName("ID").Value := MainDataSet.FieldByName("ID").Value;
    Open;
  end;
  with DataSetGoods do
  begin
    Close;
    ParamByName("ID").Value := MainDataSet.FieldByName("ID").Value;
    Open;
  end;
end;


 
!!!   (2011-02-12 11:35) [24]


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


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


> Самописная или можно где-то посмотреть?

приобретенная, мы сами ни чего не производим.
называется БИК IBSO, где посмотреть не знаю :-(


 
!!!   (2011-02-12 11:37) [25]


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


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


> Самописная или можно где-то посмотреть?

приобретенная, мы сами ни чего не производим.
называется БИК IBSO, где посмотреть не знаю :-(


 
ВашеИмя   (2011-02-12 11:39) [26]


> ну модальное окно нужно только для того чтобы внести изменения

То есть при редактировании счет-фактуры никогда не понадобится посмотреть карточку контрагента? Никогда не поверю.


то можно октрыть еще один экземпляр?

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


 
!!!   (2011-02-12 14:44) [27]


> То есть при редактировании счет-фактуры никогда не понадобится
> посмотреть карточку контрагента? Никогда не поверю


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

посмотрели и закрыли, в чем проблема-то :-)


 
Сергей М. ©   (2011-02-12 14:52) [28]


> один датасет (документы), а к нему может быть несколько
> табличных частей


Не знаю как других, а меня всегда тошнило от дебильной одноэсной терминологии  "журнал" и "табличная часть".

Можно подумать что "журнал" - это нечто волшебное, непостигаемое, но никак не таблично-ориентированные данные.

Фтопку.


 
KilkennyCat ©   (2011-02-12 15:56) [29]

а меня всегда тошнило от одноэс в целом. да и сейчас тоже.


 
Anatoly Podgoretsky ©   (2011-02-12 17:10) [30]

> KilkennyCat  (12.02.2011 15:56:29)  [29]

А я и близко не подхожу, что бы не тошнило.


 
_Юрий   (2011-02-12 18:27) [31]


> !!!   (12.02.11 14:44) [27]


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


Все эти модальные окна и модальные окна из модальных окон - ни что иное, как DOS-парадигма. В свое время (т.е при царе горохе) она была оправдана, хотя бы тем, что ничего другого не было. Когда появился Windows, интерфейс поначалу делали в старом стиле, потом слава богу сообразили, что можно сделать удобнее. Но некоторые особо стойкие не спешат менять веками сложившиеся традиции.

Открыли вторую, посмотрели, закрыли, открыли третью, посмотрели, закрыли, открыли четвертую, посмотрели, закрыли, открыли первую, посмотрели, закрыли, открыли третью, посмотрели, закрыли. Никаких проблем?
Все удобно?
А вы сами попробуйте поработать.
Нам придется делать дополнительные кнопки на форме, чтобы показать то, что только что искусственно заблокировали.
Вопрос: Я хочу перетащить драг-дропом что-либо из одного  документа в другой, как мне это сделать при модальном показе?
Ну да, можно обойтись. Но мы говорим об удобстве?
В результате пользователи тихо матерятся, особо сообразительные спасаются запуском второй копии программы, если повезло и это забыли прикрыть.
Только пользователь знает, удобна программа или нет.


 
Anatoly Podgoretsky ©   (2011-02-12 19:04) [32]

> _Юрий  (12.02.2011 18:27:31)  [31]

Но некоторые особо стойкие открыли одну форму, затем вторую, потом десятую и
это все одна и таже форма.


 
Anatoly Podgoretsky ©   (2011-02-12 19:05) [33]

> _Юрий  (12.02.2011 18:27:31)  [31]

Не только пользователь, но еще и _Юрий


 
ВашеИмя   (2011-02-13 02:15) [34]


> Не знаю как других, а меня всегда тошнило от дебильной одноэсной
> терминологии  "журнал" и "табличная часть".

Хорошо, Detail-датасет. Извините, что тошнит :)


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

Форма уже открыта, зачем открывать новую

Вопрос про PostMessage/SendMessage: можно ли помимо сообщения передать свою структуру или класс?


> Anatoly Podgoretsky ©   (12.02.11 19:04) [32]

Я уже писал о том, что если форма с этими данными уже открыта - она должна быть сфокусирована, а не создана заново.


 
_Юрий   (2011-02-13 10:44) [35]


> Anatoly Podgoretsky ©   (12.02.11 19:05) [33]
>
> > _Юрий  (12.02.2011 18:27:31)  [31]
>
> Не только пользователь, но еще и _Юрий
>


Я пересказал то, что мне поведали пользователи


> Вопрос про PostMessage/SendMessage: можно ли помимо сообщения
> передать свою структуру или класс?
>


В качестве параметра сообщения может быть передан указатель на что угодно - хоть на структуру, хоть на класс

отправка:
PostMessage(Handle, WM_USER + 1, 0, Lparam(MyObject));
...

прием:
MyObject = TMyObject(message.Lparam)


 
Anatoly Podgoretsky ©   (2011-02-13 11:11) [36]


> ВашеИмя   (13.02.11 02:15) [34]
> > Anatoly Podgoretsky ©   (12.02.11 19:04) [32]
>
> Я уже писал о том, что если форма с этими данными уже открыта
> - она должна быть сфокусирована, а не создана заново.


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


 
Юрий Зотов ©   (2011-02-13 11:25) [37]


> _Юрий   (12.02.11 18:27) [31]

> Все эти модальные окна и модальные окна из модальных окон
> - ни что иное, как DOS-парадигма. В свое время (т.е при
> царе горохе) она была оправдана, хотя бы тем, что ничего
> другого не было. Когда появился Windows, интерфейс поначалу
> делали в старом стиле, потом слава богу сообразили, что
> можно сделать удобнее. Но некоторые особо стойкие не спешат
> менять веками сложившиеся традиции.

Восхищен глубиной Ваших знаний и точностью оценок как парадигм, так и людей.

Хотя со второй (не процитированной здесь) частью Вашего сообщения можно и согласиться (не для диалогов, конечно).

Но первая, процитированная - это шедевр.


 
ВашеИмя   (2011-02-13 11:50) [38]


> Не убивай идею на корню

Тогда все-таки подскажите, посмотрев на мой код, как манипулировать данными?


 
Anatoly Podgoretsky ©   (2011-02-13 12:13) [39]

> ВашеИмя  (13.02.2011 11:50:38)  [38]

Мне идея не нравится.


 
ВашеИмя   (2011-02-13 12:16) [40]


> Anatoly Podgoretsky ©   (13.02.11 12:13) [39]

Ну я в самом начале спрашивал, а как верно? Но спор идет, а ясности очень мало.


 
Юрий Зотов ©   (2011-02-13 12:27) [41]

> ВашеИмя   (13.02.11 11:50) [38]
> как манипулировать данными?

Мне кажется, что главный недостаток Вашей схемы вот в этом:
> При закрытии формы [2] происходит сохранение в форме [1].

1. Сохранять данные надо не в форме[1], а в БД.
2. Сохранять данные должен тот, кто с ними работает.

То есть, каждая форма [2] должна сохранять СВОИ данные. Если требуется, то при этом она может уведомлять главную форму, а через нее (если надо) - и все остальные, чтобы те могли произвести свое обновление. Само же уведомление может быть реализовано и через посылку сообщения, и в виде обработчика события - как угодно.

Форм у Вас много и они все разные - поэтому только сама форма знает, какие именно данные ей нужны, как их читать и сохранять. Отсюда вытекают ответы на [4]:

> как правильно передавать данные из подчиненной формы в главную.

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

> Кто должен делать инициализацию подчиненной формы?

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

> Кто должен делать сохранение?

Каждая подчиненная форма должна сама сохранять свои данные. Ведь, опять же, только сама подчиненная форма знает, как и какие именно данные ей надо сохранить.


 
Anatoly Podgoretsky ©   (2011-02-13 12:27) [42]

> ВашеИмя  (13.02.2011 12:16:40)  [40]

И не будет, поскольку холивар


 
Игорь Шевченко ©   (2011-02-13 12:29) [43]

про парадигму MVC(Model-View-Controlller) читать


 
ВашеИмя   (2011-02-13 13:16) [44]


> То есть, каждая форма [2] должна сохранять СВОИ данные.

Самое главное, что меня смущает в этом варианте:
1) Если форма[2] изменила данные, она уведомляет об этом форму [1], чтобы последняя обновила, допустим, строчку в гриде - здесь все отлично.
2) Если форма[2] добавила данные, она уведомляет об этом форму [1]. Тогда форма [1] должна перечитать весь датасет целиком и сфокусироваться на новом ID. Но я не хочу перечитывать весь датасет! Он ведь может оказаться и громоздким.


> про парадигму MVC(Model-View-Controlller) читать

Я в курсе MVC, и успешно (ну по крайней мере, мне так кажется) применяю в PHP. Как в Delphi с ней работать - честно говоря, не знаю (ведь DataSet, Grid - это по сути и есть части MVC. Конкретно M и V)


 
ВашеИмя   (2011-02-13 13:34) [45]


> В качестве параметра сообщения может быть передан указатель
> на что угодно - хоть на структуру, хоть на класс

Спасибо за пример. Слишком ли некошерно будет передавать в качестве параметра указать на диалоговое окно? Проверил - работает отлично, наверное как раз как мне надо. Вопрос: не слишком ли извратно?


 
Юрий Зотов ©   (2011-02-13 14:57) [46]

> ВашеИмя   (13.02.11 13:16) [44]

Если датасет сделать ОБЩИМ для обеих форм, то все проблемы исчезают автоматически.


 
Leonid Troyanovsky ©   (2011-02-13 19:20) [47]


> ВашеИмя   (13.02.11 13:34) [45]

> в качестве параметра указать на диалоговое окно?

Send будет валидным, а уж Post - извини.

>  не слишком ли извратно?

Видали и жестче.

--
Regards, LVT.


 
ЗемлюКрестьянамДатасетыФормам   (2011-02-13 21:06) [48]

>>Юрий Зотов ©   (13.02.11 14:57) [46] Если датасет сделать ОБЩИМ для обеих форм, то все проблемы исчезают автоматически.

Исчезает одна проблема. Появляется с десяток новых. И весь этот огород наичнает понемногу заростать. Граблями.


 
ЗемлюКрестьянамДатасетыФормам   (2011-02-13 21:20) [49]

>> ВашеИмя   (13.02.11 13:34) [45] Слишком ли некошерно будет передавать в качестве параметра указать на диалоговое окно?

Обычно достаточно передавать ID измененной записи. Ибо, в общем случае, "диалоговое окно" в процессе эволюции программы может мутировать, плодиться, менять класс, в общем, мало ли чего. Может, в конце концов, изменения будут производиться вообще без использования визуальных компонентов. А ID для отдельно взятой записи и проекта - бессмертен, то есть вечен, потому что бессердечен... или, может быть, наоборот. http://www.youtube.com/watch?v=TGd4xJ0BVV4

>> ВашеИмя   (13.02.11 13:16) [44] (ведь DataSet, Grid - это по сути и есть части MVC. Конкретно M и V)

А DataSource - Controller.
Delphi - Отец, Delphi - Сын, Delphi - Дух святой.
Аминь.


 
KilkennyCat ©   (2011-02-13 21:38) [50]


>  http://www.youtube.com/watch?v=TGd4xJ0BVV4
>

путин какой-то...


 
Юрий Зотов ©   (2011-02-14 00:29) [51]

> ЗемлюКрестьянамДатасетыФормам   (13.02.11 21:06) [48]

1. ЗарАстать. Это называется - чередование гласных в корне. На будущее.

2. Ваша категоричность мне тоже нравится. Особенно потому, что хоть каким-нибудь ее обоснованием Вы даже не удосужились озаботиться.

3. Впрочем, это дело Ваше.


 
Плохиш ©   (2011-02-14 10:09) [52]


> Юрий Зотов ©   (13.02.11 14:57) [46]
> > ВашеИмя   (13.02.11 13:16) [44]
>
> Если датасет сделать ОБЩИМ для обеих форм, то все проблемы
> исчезают автоматически.

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


 
ЗемлюКрестьянамДатасетыФормам   (2011-02-14 11:13) [53]

>>Юрий Зотов ©   (14.02.11 00:29) [51] 1. ЗарАстать. Это называется - чередование гласных в корне. На будущее.

Да мне, как бы это потактичнее сказать... все равно. С чередованием или без. Можно вообще вне очереди. Русский - не мой родной язык. Я и пользуюсь-то им практически только тут, на delphimaster.ru. Познания мои в русском зарАстают травой так же, как и сайт этот. Это про будущее. Впрочем, спасибо.

>>Юрий Зотов ©   (14.02.11 00:29) [51] 2. Ваша категоричность мне тоже нравится<...>

Я вообще весь такой белый и пушистый... э-э, только руками не трогать!

>>Юрий Зотов ©   (14.02.11 00:29) [51] 2. <...> Особенно потому, что хоть каким-нибудь ее обоснованием Вы даже не удосужились озаботиться.

Общий датасет с двумя формами - это как один телевизор в семье из двух человек. Хотя бы просто потому, что может настать момент, когда одному из членов семьи захочется переключить на другой канал, другую запись, то есть. Или громкость увеличить. Или видео посмотреть. Я уже не говорю о ситуации, когда появляется третий член семьи. А потом четвертый. Что, как говорит статистика, сплошь и рядом...

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

А еще если для просмотра используется сложный запрос с join-ами, а для редактирования открываются дополнительные наборы данных.

И т.д., и т.п...

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

Сиречь, котлеты и мухи - по-отдельности.

>>Юрий Зотов ©   (14.02.11 00:29) [51] 3. Впрочем, это дело Ваше.

Хм. Было бы так, [51] не существовало бы вообще. Поэтому 51.3 смотрится неудачно. Из разряда "наступлю-ка я ему на ногу, а потом, так и быть, извинюсь". Такое себе невинное хамство, завуалированное ханжеством.

http://www.youtube.com/watch?v=d-diB65scQU


 
Anatoly Podgoretsky ©   (2011-02-14 12:54) [54]

> ЗемлюКрестьянамДатасетыФормам  (14.02.2011 11:13:53)  [53]

Не бойся бить будем не руками.


 
Юрий Зотов ©   (2011-02-14 12:55) [55]

> ЗемлюКрестьянамДатасетыФормам   (14.02.11 11:13) [53]
>
> Общий датасет с двумя формами - это как один телевизор в
> семье из двух человек. Хотя бы просто потому, что может
> настать момент, когда одному из членов семьи захочется переключить
> на другой канал, другую запись, то есть. Или громкость увеличить.
>  Или видео посмотреть. Я уже не говорю о ситуации, когда
> появляется третий член семьи. А потом четвертый. Что, как
> говорит статистика, сплошь и рядом...

Извините, но это всего лишь беллетристика. Доводом служить не может, посему не принимается.

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

И что? Кто мешает иметь на форме просмотра одни поля, а на форме редактирования - другие?

> А еще если для просмотра используется сложный запрос с join-
> ами, а для редактирования открываются дополнительные наборы
> данных.

Снова - и что? Каким образом это мешает иметь N форм просмотра и M форм редактирования?

> Просто потому, что просмотр и редактирование, по сути -
> совершенно разные действия. Поэтому и выполнять их надо
> по-разному.

И на здоровье. Ничто не мешает выполнять их по-разному, хоть при общем датасете, хоть при разных.

PS
Возможно, я чего-то недопонимаю - разъяснения приветствуются. Только без беллетристики, плз.


 
Dennis I. Komarov ©   (2011-02-14 12:58) [56]

Под столом... Д. Юру обвинили в хамстве...
По теме не буду, ибо масло горит.


 
Anatoly Podgoretsky ©   (2011-02-14 13:40) [57]

> Юрий Зотов  (14.02.2011 12:55:55)  [55]

Да не надо N и M, достаточно только N и настройка формы. Разумеется удобно
при табличной форме отображения, но надо вводить в парадигму понятия
Просмотр и Редактирование. Я так пробовал, пользователи не понимаю и
путаются. В итоге оставил форму Редактирования, она же Просмотра и кнопку
Сохранить и все проблемы сразу исчезли.


 
Anatoly Podgoretsky ©   (2011-02-14 13:41) [58]

> Dennis I. Komarov  (14.02.2011 12:58:56)  [56]

Я когда одновременно, что то жарю и смотрю ДМ, то для жарю это плохо
кончается.


 
DiamondShark ©   (2011-02-14 13:57) [59]


> Dennis I. Komarov ©   (14.02.11 12:58) [56]
> Под столом... Д. Юру обвинили в хамстве...

Новичок, наверное. Пооботрётся, пообвыкнет.


 
DiamondShark ©   (2011-02-14 14:03) [60]


> Юрий Зотов ©   (14.02.11 12:55) [55]

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


 
Anatoly Podgoretsky ©   (2011-02-14 14:03) [61]

> DiamondShark  (14.02.2011 13:57:59)  [59]

Д. Юра не новичек


 
DiamondShark ©   (2011-02-14 14:06) [62]


> Anatoly Podgoretsky ©   (14.02.11 14:03) [61]

Спасибо, кэп!

Новичёк -- обвиняющий в хамстве. Ну, не привык ещё, что это в порядке вещей.

Ваш КО-2.


 
Юрий Зотов ©   (2011-02-14 15:00) [63]

> DiamondShark ©   (14.02.11 14:03) [60]

Если это все, что Вы имеете сказать, то вынужден констатировать, что Вы выступили в своем обычном стиле - ноль по сути, чемпион по склокам.

Ничего нового.


 
Palladin ©   (2011-02-14 15:04) [64]

Первое правило делфимастера - необращать внимания на других делфимастеров.
Второе правило делфимастера - никому не говорить о делфимастере.



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

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

Наверх





Память: 0.66 MB
Время: 0.005 c
3-1259290992
Diplomat
2009-11-27 06:03
2011.05.22
Поиск заданного значения в БД


15-1297114175
Юрий
2011-02-08 00:29
2011.05.22
С днем рождения ! 8 февраля 2011 вторник


1-1254471574
dmitry1208197320
2009-10-02 12:19
2011.05.22
Прокрутка веб-страницы


15-1296566174
oxffff
2011-02-01 16:16
2011.05.22
Есть интересная задача


2-1297715273
Чайник
2011-02-14 23:27
2011.05.22
Настройка Д2010





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский