![]() |
|
|
![]()
|
|
| kabanoff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 20.4.2008 Репутация: нет Всего: нет |
Друзья!
У меня БД в SQL Server, использую ADO (связку ADOConnection, ADOTable, DataSource). Ситуация следующая: на Форме1 есть Эдит1. При выборе Эдит1 создается и открывается Форма2 с возможными вариантами выбора. Хочу, чтобы выбор нужного значения на Форме2 закрывал Форму2 и помещал в Форма1.Эдит1 значение нужной колонки выбранной строки (ну вообщем, как в 1С 7.7 (да и 8.0), кто знаком). 1) Все формы в памяти не держу, создаю по мере необходимости. 2) Назначить вручную свой обработчик форме2 уже пробовал, сработал он только на OnClose (впринципе, понятно почему). ... procedure FormOnDblClisk(Sender: TObject); begin ... end; ... begin AChangeForm:=TChangeForm.Create(Self); AChangeForm.OnDblClick:=FormOnDblClick; ... Есть другие варианты? |
|||
|
||||
| Rodman |
|
|||
|
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 22 Всего: 122 |
а если просто создать глобальную переменную и через нее передавать инфу?!
|
|||
|
||||
| kabanoff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 20.4.2008 Репутация: нет Всего: нет |
Это выход для частного случая, когда проектируешь каждый раз новую форму и знаешь, куда возвращать результат.
А если идти нормальным методом и создать одну "универсальную" форму? Существуют ли способы передачи значения от одной форме - другой и обратно без явного их указания? может WinAPI? Передавать значение по ссылке пробовал, вот кусок кода: *** //форма-родитель ... AChangeForm:=TChangeForm.Create(Self); AChangeForm.InitMyField(Edit2.Text); //моя процеура ... AChangeForm.Show; //открываемая форма ... interface type TChangeForm = class(TForm) ... DBGrid1: TDBGrid; DataSource1: TDataSource; ADOQuery1: TADOQuery; procedure DBGrid1DblClick(Sender: TObject); private ... MyField: ^string; public ... procedure InitMyField(str: string); end; implementation .... procedure TChangeForm.InitMyField(str: string); begin MyField:=@str; end; procedure TChangeForm.DBGrid1DblClick(Sender: TObject); begin MyField^:=ADOQuery1.FieldByName('Наименование').AsString; Close; end; *** Данный метод работает, но в Edit значение не возвращается. Если поставить TChangeForm.InitMyField(VAR str: string); то компилятор выругается, мол передаваемый Edit2.Text не идентифицирован ([Pascal Error] CreateDoc.pas(112): E2033 Types of actual and formal var parameters must be identical). Как быть? |
|||
|
||||
| pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
Это сообщение отредактировал(а) pseud - 21.4.2008, 10:21 -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
| kabanoff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 20.4.2008 Репутация: нет Всего: нет |
Спасибо за ответ!
А если форма MDIChild (ShowModal не прокатит)? |
|||
|
||||
| pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
ну тогда готовься:
конечно, код сырой. но куда копать - видно )) Это сообщение отредактировал(а) pseud - 21.4.2008, 14:01 -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
| kabanoff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 20.4.2008 Репутация: нет Всего: нет |
WOW! Выглядит ужасающе!
Впервые слышу про процедуру SetDataHolder! Век живи - век учись. Спасибо большое pseud!!! Добавлено через 1 минуту и 24 секунды Тема закрыта. Всем спасибо |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |