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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2010, 10:54   #1
insense
Пользователь
 
Регистрация: 22.10.2009
Сообщений: 27
Восклицание Создание новой формы по клику на стору в DBGrid

может этот вопрос уже обсуждался, но всё же,

столкнулся с проблемой:
бд подключена к DBGrid, DBGrid отображена в Form1, необходимо чтобы по клику на строку из таблицы открывалась Form2...
как это реализовать??!

и каким образом сделать так чтобы на Form2 в бд-едитах отображалась вся инфа строки из бд на которую я кликнул...

надеюсь на вашу помощь
и заранее благодарен!
insense вне форума Ответить с цитированием
Старый 13.06.2010, 11:24   #2
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

передавать в переменнуй нужную инфу, и при создании формы её грузить. Тогда Создание второй формы, надо описывать в самом клике.
Код:
Application.CreateForm(TForm2,Form2);
Form2.Visible:= true;
А в клоусе второй формы соответственно уничтожать
Код:
Destroy;
alexprey вне форума Ответить с цитированием
Старый 13.06.2010, 11:44   #3
insense
Пользователь
 
Регистрация: 22.10.2009
Сообщений: 27
По умолчанию

Цитата:
Сообщение от alexprey Посмотреть сообщение
передавать в переменнуй нужную инфу, и при создании формы её грузить. Тогда Создание второй формы, надо описывать в самом клике.
Код:
Application.CreateForm(TForm2,Form2);
Form2.Visible:= true;
А в клоусе второй формы соответственно уничтожать
Код:
Destroy;

вторая форма уже создана...
клика на DBGrid нет...
т.е. кликая на DBGrid ничего не происходит (запущено приложение или нет)...
при нажатие на строку из DBGrid форма должна открываться (а не создаваться)
insense вне форума Ответить с цитированием
Старый 13.06.2010, 12:28   #4
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

В принципе разницы не какой нет. Ну тогда не создавай форму. Обрабатывай переменную с инфой в onActivate вроде, а в клике пишите
Код:
Form2.Close;
Form2.Visible:= true;
alexprey вне форума Ответить с цитированием
Старый 13.06.2010, 13:04   #5
insense
Пользователь
 
Регистрация: 22.10.2009
Сообщений: 27
По умолчанию

Цитата:
Сообщение от alexprey Посмотреть сообщение
В принципе разницы не какой нет. Ну тогда не создавай форму. Обрабатывай переменную с инфой в onActivate вроде, а в клике пишите
Код:
Form2.Close;
Form2.Visible:= true;
мне несовсем понятно в каком клике?!
ведь DBGrid не баттон, и кликом на нее процедуру не создашь..
плюс форма должна открываться кликом на строку в таблице, а не на DBGrid
как будет выглядеть сама процедура?

если возможно напишите примерный код начиная с
procedure

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

очень очень нужно!!!!
полииииз

Последний раз редактировалось Stilet; 14.06.2010 в 09:32.
insense вне форума Ответить с цитированием
Старый 14.06.2010, 09:36   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Создаешь форму, на нее кидаешь DB компоненты, связываешь их с тем же DataSource что и грид.
В клике эту форму показываешь Форма.ShowModal; DB компоненты, на ней сами подхватят информацию из записи. на которой случится переход по клику мышки
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.06.2010, 10:36   #7
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

Код:
 procedure TForm1.DBGrid1DblClick (sender:TObject);
  begin
    form2:=Tform2.create(self);
    form2.showmodal;
  end;
данная процедура отобразит туформу которую ты создашь, при условии что имя её будет form2. Во время проэктирования формы накидай компонентов и свяжи так как описал Stilet в предыдущем посте.

на событие формы form2, onClose можно повесить такой код:
Код:
 action:=cafree;
Тяжело быть бестолковым.....

Последний раз редактировалось Dark_Spirit; 14.06.2010 в 10:40.
Dark_Spirit вне форума Ответить с цитированием
Старый 14.06.2010, 10:56   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Я обычно это вешал на события OnAfterInsert и OnAfterEdit соответствующего TDataSet (TTable, TQuery,...).
т.е. код, приведенный Dark_Spirit'ом, помещаем в обработчики этих событий.
Что даёт именно такая связка?
1) При использовании DBNavigator'a не нужно совершать никаких телодвижений. При создании/редактировании записи форма появится "автоматически";
2) Оставляем в DBGrid'e возможность редактирования, но устанавливаем выделение всей строки. Двойной клик по строке приведет к редактированию записи, т.е. вызовется все тот же OnAfterEdit и появится окошко.
3) При обработке OnDblClick нужно учитывать, что двойной клик можно совершить по пустому месту и тогда вылетит ошибка или будет непонятное поведение. Частный случай: двойной клик при пустом наборе данных. Редактировать нечего, а будет попытка редактирования записи. В моём подходе этого недостатка нет.
pu4koff вне форума Ответить с цитированием
Старый 14.06.2010, 11:47   #9
insense
Пользователь
 
Регистрация: 22.10.2009
Сообщений: 27
По умолчанию

Огромное всем спасибо за помощь...
Stilet, Dark Spirit всё отлично работает...
2 Пучков: идею я понял, это действительно удобней, но повесил процедуры на указаные события и форма не открывается
буду признателен более глубоким подробностям

и вопрос оффтоп:
как можно очистить все dbeditы, dbcomboboxы, dbmemo, короче все поля на форме, нажатием на баттон?
т.е. кнопка на одной форме открывает 2ую форму с пустыми компонентами...

Последний раз редактировалось insense; 14.06.2010 в 13:24.
insense вне форума Ответить с цитированием
Старый 14.06.2010, 13:28   #10
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

Цитата:
3) При обработке OnDblClick нужно учитывать, что двойной клик можно совершить по пустому месту и тогда вылетит ошибка или будет непонятное поведение. Частный случай: двойной клик при пустом наборе данных. Редактировать нечего, а будет попытка редактирования записи. В моём подходе этого недостатка нет.
это можно избежать если перед отображением формы встроить вот такую проверку:
Код:
 procedure TForm1.DBGrid1DblClick (sender:TObject);
  begin
   
    if not (dbgrid1.datasourse.dataset.isempty)
     then
      begin
  
       form2:=Tform2.create(self);
       form2.showmodal;
     end;
  end;
это поможет избежать ошибки для пустого набора.
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание новой формы с нужным количеством строк. konistra Microsoft Office Excel 13 01.06.2010 23:28
Из DBGrid одной формы отразить в ListBox на другой формы VenZell БД в Delphi 2 28.05.2010 07:27
Появление новой формы при нажатии на кнопку. vedro-compota Общие вопросы Delphi 14 11.05.2010 15:08
Открытие новой формы в VB byte916 Помощь студентам 1 04.03.2008 19:10
Создание новой записи Gerox БД в Delphi 3 30.12.2007 14:22