проблема с редактором свойств

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

проблема с редактором свойств

Сообщение sunrider » 07.06.2006 20:13:17

Использую DataModule или главную форму для хранения например
TIBConnection. Но несмотря на то, что ссылка на Datamodule или главную форму прописана в uses, в редаторе свойств для например того же TSQLQuery ссылок на на эти компоненты нет, как в Delphi. Если пробовать прописывать свойство вручную - Frm_main.IBConnection1, то выдается ошибка - Неверное значение свойства.
Если же прописать свойство в редакторе кода, то все компилируется без проблем.
Может быть кто то уже с этим боролся?
sunrider
новенький
 
Сообщения: 15
Зарегистрирован: 06.06.2006 22:28:57

Сообщение alexs » 08.06.2006 00:28:02

Пока ни как
в рантайме явно ручками указывай подключение
Лазарь пока не умеет делать связку между формами в режиме дизайна
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение sunrider » 08.06.2006 02:26:08

Это я уже понял, спасибо :-). Но есть еще заскок. Я пробовал в рантайме создать TSQLQuery. При его открытии возникает ошибка в коде LCLProc - procedure RaiseGDBException(const Msg: string);
Если удалить strip-ом следы отладчика, то в результате выдается сообщение - Деление на ноль.
Но ошибки нет, если все создается в дизайнере.
Не могу врубиться в чем дело.
sunrider
новенький
 
Сообщения: 15
Зарегистрирован: 06.06.2006 22:28:57

Сообщение DMA » 08.06.2006 12:10:54

Покажи как создаешь TSQLQuery.
Я для этого использую вот такую процедуру:

procedure TComObj.CreateIBSQL(gdb: TIBConnection; var itr: TSQLTransaction; var isql:TSQLQuery);
begin
itr:=TSQLTransaction.Create(gdb);
itr.DataBase:=gdb;
itr.Action:=caCommit;
itr.Params.Add('read_committed');
itr.Params.Add('rec_version');
itr.Params.Add('nowait');
isql:=TSQLQuery.Create(gdb);
isql.Database:=gdb;
isql.Transaction:=itr;
end;

И, соответственно, использование:
...
var
ibsql: TSQLQuery;
ibtrs: TSQLTransaction;
begin
CreateIBSQL(DM.IBConnection, ibtrs, ibsql);
...
что-то делаем
...
ibsql.Free;
ibtrs.Free;
end;
У меня все работает.
DMA
новенький
 
Сообщения: 10
Зарегистрирован: 24.05.2005 18:59:19

Сообщение sunrider » 08.06.2006 13:36:05

Выглядит это у меня вот так :
SQL_Reg:=TSQLQuery.Create(Frm_main.IBConnection1);
SQL_Reg.DataBase:=Frm_main.IBConnection1;
SQL_Reg.Transaction:=Frm_main.SQLTransaction1;
SQL_Reg.SQL.Text:='select * from users';
DTSource1:=TDatasource.Create(TheOwner);
DTSource1.DataSet:=SQL_Reg;
...
SQL_Reg.Active:=True;
//здесь правда я Open тоже использовал
Компоненты IBConnection1 и SQLTransaction1 лежат на главной форме, путь к которой прописан в uses. В отладчик точно отлавливает где-то деление на ноль.
sunrider
новенький
 
Сообщения: 15
Зарегистрирован: 06.06.2006 22:28:57

Сообщение sunrider » 15.06.2006 01:57:45

Если кому интересно - решение проблемы я нашел.
Из-за того, что одну форму в другую вложить не удалось, я сделал компонент наследник TPanel куда привязал DBGrid, DataSource и SQLQuery. В конструкторе после создания компонентов я и вызывал метод SQLQuery.Open. В результате отладчик отлавливал деление на ноль. Я убрал из конструктора, и все заработало
sunrider
новенький
 
Сообщения: 15
Зарегистрирован: 06.06.2006 22:28:57


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

Рейтинг@Mail.ru