Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ДГрид ДублКлик вызываю модальную форму и тут не то что надо [D7]


Alik$ ©   (2003-08-25 12:09:00) 

С ДБГрида вызываю модальную форму SHowModal т.е. окно редактирования и мне надо что форма открывало текущую запись а моя форма открывает первую строку ДБГрида как быть?


Alik$   (2003-08-26 07:58:00) [1]

Спасибо ребята получилось
Я сделал так

в модальной форме обявил uses mydodule
потом процедуре обявил
мастерсорс и все получилось :)
а при закрытии формы создал кнопку с процедурой

procedure TForm1.Button1Click(Sender: TObject);
begin
MainForm.DataSource1.Edit;
Form1.Close;
end;
и все Ок
Спасибо.


Dred2k   (2003-08-25 20:59:00) [2]

> Alik$ © (25.08.03 15:01) [6]
> и Ещё ведь мне надо вызвать с ДБгрида мадальную и чтоб где
> строка просмотра кликает клиент выводился форма для редактирования.


Просто не создавай в модальной форме TTable или TQuery. Кинь на форму TDataSource, его и поставь всем компонентам редактирования. А перед ShowModal просто присвой набор данных текущего окна просмотра этому DataSource. Что-то типа:

Form1.DataSource1.DataSet := Table1;
Form1.ShowModal;

Набор данных должен быть изменяемым. И все. Форма начнет редактировать то, что ты видишь ;)


Hawk2   (2003-08-25 17:03:00) [3]

>ЗЫ. Хочется верить, что Вами руководит здоровое любопытство, а не желание постебаться.

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


MsGuns   (2003-08-25 16:45:00) [4]

>Hawk2 © (25.08.03 16:40) [11]

Наверное, я плохо излагаю ;((( Ессно, таблицы, отображаемые в гриде основной формы и в гриде модальной - разные. Именно поэтому я употребил слово "справочник", чтобы с одной стороны, явно разделить эти таблицы, а с другой - подчеркнуть их зависимость
ЗЫ. Хочется верить, что Вами руководит здоровое любопытство, а не желание постебаться.


Hawk2   (2003-08-25 16:40:00) [5]

MsGuns © (25.08.03 16:19) [10]
Пречитав Ваше предидущее сообщения еще раз 5 (наверное плохо соображаю), я так понял что открывается та самая таблица еще раз, только во время открытия производится переход на нужную запись, но зачем все эти муки? Ведь для автора вопроса в том и есть проблема как осуществить переход. И вообще он уже куда-то пропал.


MsGuns   (2003-08-25 16:19:00) [6]

>Hawk2 © (25.08.03 15:25) [9]
>А разве автор вопроса спрашивал о редактировании справочников? Причем здесь они?

Понятие "справочник" употреблено как средство отличить таблицы в контексте данной проблемы (основная и дополнительная в мод.окне)
То, что между этими таблицами существует некая связь (даже только логическая), ИМХО, из сабжа видно достаточно отчетливо.


Hawk2   (2003-08-25 15:25:00) [7]

А разве автор вопроса спрашивал о редактировании справочников? Причем здесь они?


MsGuns   (2003-08-25 15:13:00) [8]

Делеашь так:
При клике на гриде основного НД, делаешь:
1) В глоб.переменную записываешь значение поля - указателя на справочник или 0, если НД пустой
2) Даешь ShowModal форме, на которой грид с НД справочника.
3) В событии OnShow формы со справочником:
- переоткрываешь датасет справочника
- анализируешь переменную (см.п.1). Если ноль, то ничего не делаешь, если >0, то Locate по полю идентификатора справочника
4) В гриде справочника разрешаешь редактирование/вставку/удаление одиночнойзаписи. Лучше всего это делать по спец.кнопкам, а редактить давать не в гриде, а в контролах, не связанных с DB, и расположенных на отд.панельке, "высвечиваемой" при нажатии узером соотв. кнопки ("Добавить", "Править"). При добавлении (узер ввел и нажал соотв.кнопку на панели ввода-редакт-я) делаешь все необходимые проверки новой записи, затем в блоке Try Except добавляешь запись и, если Ok, то новый идентификатор помещаещь в ту же глоб.переменную, где было "стартовое" значение, а форму закрываешь.

По такой схемке можно стряпать даже правку иерархических справочных зависимостей.

Хотя, ИМХО, для справочников лучше использовать MDI-форму с возможностью редактить любой справочник в любой момент времени. (По типу окон в вордах)


Hawk2   (2003-08-25 15:05:00) [9]

Alik$ © (25.08.03 15:00) [5]> Вручную неоченьто удобно для пользователя вернее нет смысла открывать модальную форму.
Смысл есть, в форме удобнее редактировать, есть подсказки, можно контролировать вводимые данные и т.д., а в Гриде можно запретить редактирование и все.

>А вот как програмно реализовать проблема с Locate пробовал что-то не переходит.
Как-то не приходилось сталкиваться.


Alik$   (2003-08-25 15:01:00) [10]

и Ещё ведь мне надо вызвать с ДБгрида мадальную и чтоб где строка просмотра кликает клиент выводился форма для редактирования.


Alik$   (2003-08-25 15:00:00) [11]

Вручную неоченьто удобно для пользователя вернее нет смысла открывать модальную форму. А вот как програмно реализовать проблема с Locate пробовал что-то не переходит.


Hawk2   (2003-08-25 14:22:00) [12]

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


Alik$   (2003-08-25 14:05:00) [13]

На первой строке так ведь при вызове форма открывает только с первой строки...


stud   (2003-08-25 12:47:00) [14]

так у тебя курсор на какой записи при открытии формы?


Алексей Петухов   (2003-08-25 12:15:00) [15]

Если разные наборы, то Locate


Наверх

Титульная страница Поиск, карта сайта Написать письмо