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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 16.02.2011, 23:51   #1
m0dE^
Пользователь
 
Регистрация: 29.07.2009
Сообщений: 48
По умолчанию Нужна ваша подсказка! :(

Код:
...
var Grid: TDBGrid;
     Source: TDataSource;
     Query: TADOQuery;
Вобщем есть такая процедура:
Код:
procedure TForm1.NewGrid(aGrid: TDBGrid; aDataSource: TDataSource; aADOQuery: TADOQuery);
begin
  aADOQuery:=TADOQuery.Create(Form1);
  aDataSource:=TDataSource.Create(Form1);
  aGrid:=TDBGrid.Create(Form1);
  aGrid.Parent:=Form1;

  aGrid.DataSource:=aDataSource;
  aDataSource.DataSet:=aADOQuery;
  aADOQuery.Connection:=ADOConnection1;
end;
Происходит какая-то ошибка по нажатию кнопки:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
    NewGrid(Grid1, Source1, Query1);
    Query1.Active:=False; //Что-то тут не нравится
end;
Подскажите, пожалуйста, из-за чего и как можно исправить?
http://fmbot.ru - ICQ-боты, ICQ-чаты, HTML редакторы, статьи и исходники по Delphi
m0dE^ вне форума
Старый 17.02.2011, 08:16   #2
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Ошибка из-за того, что передача компонентов в параметрах "по значению" не приводит к желаемому результату: параметры после возврата из вызванной процедуры не ссылаются на созданные компоненты (значения параметров - nil).
В приведенном случае параметры в объявлении процедуры нужно предварять ключевым словом var (передача параметров "по ссылке").
Код:
    procedure NewGrid(var aGrid: TDBGrid; var aDataSource: TDataSource; var aADOQuery: TADOQuery);
P.S. А не заметно, что в объявлении переменных и в вызове процедуры компоненты называются по-разному (Grid и Grid1, ...).

Да, еще. Не понятно из приведенного кода важно это или нет, но устанавливать в только что "испеченном" TADOQuery свойство Active = False не имеет никакого смысла.

Последний раз редактировалось Скандербег; 17.02.2011 в 08:23.
Скандербег вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна небольшая подсказка. BobBarker Microsoft Office Excel 3 04.02.2011 23:18
нужна подсказка по MYSQL!!! Noor Помощь студентам 5 03.04.2007 10:52