![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как динамически создавать однотипные формы? [D5, WinXP]
Новая © (2005-03-02 11:22:00)Нужно по нажатию юзера на определенной записи при работе программы создавать форму, поля которой заполняются данными этой записи. Записей много, соответственно можно открыть одновременно много таких форм. Поля в них одинаковы, кнопки тоже. Кто-нибудь может направить на правильное решение?
Новая (2005-03-02 12:49:00) [1]спасибо
begin...end (2005-03-02 12:49:00) [2]> Vlad © (02.03.05 12:23) [19]
Ой, да - в [18] я какую-то чушь понёс. Извиняюсь. Меньше курить надо, однозначно.
Vlad (2005-03-02 12:34:00) [3]
> Новая © (02.03.05 12:30) [20]
Тогда читайте
http://www.ibase.ru/
там есть FAQ, много статей и другой полезной информации.
Или ищите книгу в электронном виде.
Новая (2005-03-02 12:30:00) [4]Книгу Мир IB я заказала еще год назад, спасибо хоть наложенным платежом. Мне приходили всякие там письма о подтверждении заказа, я его, естественно, подтверждала. И все - ни книги, ни писем. Она так и не пришла. А у меня в городе в свободной продаже ее нет. Вот потому и куча вопросов.
Vlad (2005-03-02 12:23:00) [5]
> begin...end © (02.03.05 12:22) [18]
> Вот именно. Методы формы должны работать с полями, а не
> с глобальными или локальными переменными.
Почему это метод формы не должен работать с локальными переменными? Другое дело, что в данном случае, это практически бессмысленно.
begin...end (2005-03-02 12:22:00) [6]> ЮЮ © (02.03.05 12:09) [13]
> Методы формы должны раблтать тольк со своими полями, а
> никак не с глобальными переменными.
Вот именно. Методы формы должны работать с полями, а не с глобальными или локальными переменными.
Vlad (2005-03-02 12:21:00) [7]
> Новая © (02.03.05 12:15) [15]
> В каких случаях используется ТDataSource? У меня он пока
> нигде не используется, а все работает, например, много-много
> запросов TIBQuery.
Вобще-то книжку бы неплохо почитать.
TDataSource нужен например для связи вашего IBQuery с DB-контролами (которые вы видимо не используете, а зря)
> Если приложение должно работать на нескольких машинах, как-то
> надо транзакции контролировать?
Надо. Советую почитать по поводу транзакций книгу "Мир Interbase" Востриков, Ковязин.
> На клиентской машине обращение идет напрямую к базе данных
> на сервер, или создается локальная копия базы? СУБД - Interbase.
Локальной копии базыне создается. Создается локальная копия таблицыиз вашей БД, в памяти клиентского компьютера. Это, собственно, и есть IBQuery
begin...end (2005-03-02 12:16:00) [8]> ЮЮ © (02.03.05 12:09) [13]
Я просто не понял, зачем там вообще переменная, если она при выходе оттуда потеряется. Потом форму можно будет найти в списке Components собственника (если его, конечно, указать при создании).
Новая (2005-03-02 12:15:00) [9]Есть еще непонятные моменты:
В каких случаях используется ТDataSource? У меня он пока нигде не используется, а все работает, например, много-много запросов TIBQuery.
Если приложение должно работать на нескольких машинах, как-то надо транзакции контролировать? То есть у меня пока только один компонент TTransaction, привязанный к базе данных.
На клиентской машине обращение идет напрямую к базе данных на сервер, или создается локальная копия базы? СУБД - Interbase.
Юрий Зотов (2005-03-02 12:12:00) [10]> ЮЮ © (02.03.05 12:09) [13]
> если создается несколько экземпляров формы, то глобальная
> переменная бессмыслена и вредна...
... а локальная просто не нужна.
:о)
Юрий Зотов (2005-03-02 12:09:00) [11]> Новая © (02.03.05 11:43) [7]
> номер каждый раз нужен другой, а сколько их всего м.б. -
> неизвестно.
Активная запись в датасете одна - по которой кликнули в гриде. И создавайте по этим кликам хоть сто форм - каждая получит свои данные, из активной записи.
> Vlad © (02.03.05 11:47) [8]
> Для представления списка газетных объявлений TDBGrid врядли
> сгодится.
Смотря, в каком виде они сидят в базе. Если все объявление сидит, как единое текстовое поле - то, наверное, да. А если данные из объявления уже разложены по полям - то в самый раз.
ЮЮ (2005-03-02 12:09:00) [12]>В каком смысле "локальная"?
В том смысле, что если создается несколько экземпляров формы, то глобальная переменная бессмыслена и вредна. Посмотри MDIChild форму в MDI Application, её там нет. Методы формы должны раблтать тольк со своими полями, а никак не с глобальными переменными.
DesWind (2005-03-02 12:05:00) [13]Я бы исспользовал массив TMyForm, а у TMyFrom сделал бы поле UnID, куда писал уникальный идентификатор записи в БД
begin...end (2005-03-02 11:53:00) [14]> ЮЮ © (02.03.05 11:51) [9]
> myFrm: TMyfrm; //локальная переменная
В каком смысле "локальная"?
ЮЮ (2005-03-02 11:51:00) [15]var
myFrm: TMyfrm; //локальная переменная
begin
myFrm := TMyfrm.Create(...)
...
end;
Vlad (2005-03-02 11:47:00) [16]Для представления списка газетных объявлений TDBGrid врядли сгодится.
Думаю, более оптимальным вариантом будет использование TDBCtrlGrid с размещенным на нем TDBMemo
Новая (2005-03-02 11:43:00) [17]а если можно держать открытыми, скажем 10, форм, то как задать Myfrm[1] := TMyfrm.Create - номер каждый раз нужен другой, а сколько их всего м.б. - неизвестно. Может быть использовать номер записи в базе?
Erik1 (2005-03-02 11:38:00) [18]With TMyForm.Create do
begin
MyEdit1.Text := ....
MyDbEdit.DataSource := ....
...... все что угодно
Show;
end;
На OnClose поставить освобождение формы
DoClose(var Action: TCloseAction)
Action := caFree;
atruhin (2005-03-02 11:37:00) [19]Ну в чем проблема? По нажатию кнопки создавай форму Myfrm[1] := TMyfrm.Create(IDRec); в форму передаешь ID записи, в OnCreate формы читаешь эту запись
ЮЮ (2005-03-02 11:37:00) [20]>В каком виде выводить список записей - тоже не знаю
>Запись из базы данных
А про DBGrid слышала?
А про MDI формы?