Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2015, 11:32   #1
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию Подставить данные из DBGrid в edit

Есть форма, на ней несколько едитов. По двойному клику к примеру на первом из едитов (edit1) открывается форма на которой располагается dbgrid с данными. Двойной клик на гриде и и данные выбранной строки заполняют edit1 на первой форме. Форма с гридом закрывается. Далее: двойной клик на edit2, опять открывается таже форма с гридом. Жмем дважды и данные строки получается заполняют и edit1 и edit2 одинаковыми данными. Как этого избежать?
вот мой код по переносу в один едит.

Код:
procedure TSetupF.Edit1DblClick(Sender: TObject);
begin
Vybor_komF.showmodal;
end;
Код:
procedure TVybor_komF.DBGrid1CellClick(Column: TColumn);
begin
SetupF.edit1.Text:=dbgrid1.DataSource.DataSet.FieldByName('fio').AsString;
end;
Scorpuha вне форума Ответить с цитированием
Старый 12.11.2015, 12:27   #2
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Код:
SetupF.edit1.Text:={ Ваши -->}ADO_Query.FieldByName('fio').AsString;

Последний раз редактировалось xxbesoxx; 12.11.2015 в 12:31.
xxbesoxx вне форума Ответить с цитированием
Старый 12.11.2015, 12:46   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
procedure TVybor_komF.DBGrid1CellClick(Column: TColumn);
begin
///ПОДЧИНЕННАЯ ФОРМА НЕ ДОЛЖНА ЗНАТЬ ЗАРАНЕЕ ЗНАТЬ КОМУ ОНА ВОЗВРАШАЕТ РЕЗУЛЬТАТЫ
//// SetupF.edit1.Text:=dbgrid1.DataSource.DataSet.FieldByName('fio').AsString;
  modalresult:=mrok; /// ВСЕ ХОРОШО можно возврашаться!!!! (Закончить показ ShowModal;
end;
Код:
procedure TSetupF.Edit1DblClick(Sender: TObject);
var
  wed: Tedit;
begin
  wed:=sender as TEdit; // едит по которому жмакнули
if mrok =Vybor_komF.showmodal then 
begin //Теперь мы точно знаем что там (vybor_komF) жмакнули куда надо

// А ВОТ ГЛАВНАЯ ФОРМА ВСЕ РАВНО ЗНАЕТ КОГО ОНА ОПРАШИВАЕТ и может узнать ответ
 wed.Text:=Vybor_komF.dbgrid1.DataSource.DataSet.FieldByName('fio').AsString;
end
else // а что будем делать если там решено было не жмакать ???
end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 12.11.2015 в 12:51.
evg_m вне форума Ответить с цитированием
Старый 12.11.2015, 12:49   #4
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

либо я вас не понял либо вы меня.
вот смотрите, если добавить заполнение edit2 на первой форме данными из грида на второй форме, вот что получается.
Код:
procedure TVybor_komF.DBGrid1CellClick(Column: TColumn);
begin
SetupF.edit1.Text:=dbgrid1.DataSource.DataSet.FieldByName('fio').AsString;
SetupF.edit2.Text:=dbgrid1.DataSource.DataSet.FieldByName('fio').AsString;
end;
т.е. данные будут одинаковые в двух едитах.

Я представляю как, в процедуре TVybor_komF.DBGrid1CellClick задать условие на каком из едитов было событие двойного клика тот и заполнять. Как это сделать я не знаю.

вот блин пока писал, появился ответ, буду читать.

Последний раз редактировалось Аватар; 12.11.2015 в 13:00.
Scorpuha вне форума Ответить с цитированием
Старый 12.11.2015, 13:07   #5
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

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

evg_m, можно усложнить задачку? Сейчас заполняется за один присест едит из одного поля, а как сделать что бы дополнительно к первому едиту заполнялось и еще второй едит из поля в гриде к примеру с названием professiya
Scorpuha вне форума Ответить с цитированием
Старый 12.11.2015, 13:41   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

1. всем "одновременно" заполняемым Edit-ам назначаем свои единые для каждой такой группы теги свойство(property) tag
Делать можно в инспекторе Inspertor Objects

wed:=sender as Tedit;
showModal ....

ВАр1.
Код:
case wed.tag of
1: begin 
  edit1.text:=...
  edit2.text:=...
end;
2: begin 
  edit3.text:=....
  edit4.text:=....
end;
ВАр 2
Код:
if edi1.tag =wd.tag then edit1.text:=...
if edit2.tag =wd.tag then edit2.text:=....
if edit3.tag =wd.tag then edit3.text:=...
if edit4.tag =wd.tag then edit4.text:=...
Вар 3. изощрённый!
как понимаю есть несколько ОДИНАКОВЫХ групп Edit-ов , которые ОДИНАКОВО заполняются каждая (группа) из своей записи.

1. оформляем эту группу(ОДНУ!!!) в виде фрейма (TFrame).
2. пишем код выбора и заполнения ВСЕХ Edit-ов в ЭТОМ фрейме.
3. на форму кладем НУЖНО число таких фреймов. ("допиливаем" изображения (названия) )
И ВСЕ... (весь код уже есть и даже с работой по группам)
P.S. о создании и работе с фреймами есть на форме (в т.ч. мои посты)
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 12.11.2015 в 13:54.
evg_m вне форума Ответить с цитированием
Старый 12.11.2015, 13:45   #7
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

ух, как всё... интересно
но я пошел другим путем
добавил строчку
Код:
procedure TSetupF.Edit3DblClick(Sender: TObject);
var
  wed: Tedit;
begin
  wed:=sender as TEdit;
if mrok =Vybor_komF.showmodal then
begin 

 wed.Text:=Vybor_komF.dbgrid1.DataSource.DataSet.FieldByName('fio').AsString;
 edit7.Text:=Vybor_komF.dbgrid1.DataSource.DataSet.FieldByName('professiya').AsString;
end
else
end;
Scorpuha вне форума Ответить с цитированием
Старый 12.11.2015, 14:07   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
добавил строчку
она решает твою задачу?
ну значит, все отлично!
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 12.11.2015, 14:15   #9
Scorpuha
Форумчанин
 
Регистрация: 10.10.2013
Сообщений: 177
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
она решает твою задачу?
ну значит, все отлично!
Да задача решена. Спасибо.
Scorpuha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как подставить данные bize Microsoft Office Excel 2 20.01.2013 00:34
как подставить в запрос данные из другой таблицы на update SovereignSun SQL, базы данных 2 25.06.2012 11:09
Edit и DBGrid TaYgA БД в Delphi 8 17.09.2010 16:42
DBGrid и Edit Irina_87 БД в Delphi 2 26.03.2010 23:27
DBGrid и Edit-ы (*_*) Общие вопросы C/C++ 0 05.07.2009 17:25