Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.13;
Скачать: CL | DM;

Вниз

Как динамически создавать однотипные формы?   Найти похожие ветки 

 
Новая ©   (2005-03-02 11:22) [0]

Нужно по нажатию юзера на определенной записи при работе программы создавать форму, поля которой заполняются данными этой записи. Записей много, соответственно можно открыть одновременно много таких форм. Поля в них одинаковы, кнопки тоже. Кто-нибудь может направить на правильное решение?


 
evvcom   (2005-03-02 11:25) [1]

Что это за определенная запись? Запись БД? Тогда одно решение.
Если это массив, тогда другое.
Если это еще что-то, то, возможно, третье решение будет.


 
Новая ©   (2005-03-02 11:29) [2]

Запись из базы данных, газетное объявление. Список записей формируется по условиям юзера. Например, поиск всех объявлений по недвижимости. В каком виде выводить список записей - тоже не знаю, что выбрать. Посоветовали TMemo, но я с ним только и не работала.


 
Юрий Зотов ©   (2005-03-02 11:36) [3]

> Новая ©   (02.03.05 11:29) [2]

> В каком виде выводить список записей - тоже не знаю, что
> выбрать. Посоветовали TMemo...

?????????????
Вроде бы, именно это и делает TDBGrid, притом легко и просто.

> по сабжу
вариант: TForm2.Create(DataSet)


 
ЮЮ ©   (2005-03-02 11:37) [4]

>В каком виде выводить список записей - тоже не знаю
>Запись из базы данных

А про DBGrid слышала?

А про MDI формы?


 
atruhin ©   (2005-03-02 11:37) [5]

Ну в чем проблема? По нажатию кнопки создавай форму Myfrm[1] := TMyfrm.Create(IDRec); в форму передаешь ID записи, в OnCreate формы читаешь эту запись


 
Erik1 ©   (2005-03-02 11:38) [6]

With TMyForm.Create do
begin
 MyEdit1.Text := ....
 MyDbEdit.DataSource := ....
 ...... все что угодно
 Show;
end;
На OnClose поставить освобождение формы
DoClose(var Action: TCloseAction)
Action := caFree;


 
Новая ©   (2005-03-02 11:43) [7]

а если можно держать открытыми, скажем 10, форм, то как задать Myfrm[1] := TMyfrm.Create - номер каждый раз нужен другой, а сколько их всего м.б. - неизвестно. Может быть использовать номер записи в базе?


 
Vlad ©   (2005-03-02 11:47) [8]

Для представления списка газетных объявлений TDBGrid врядли сгодится.
Думаю, более оптимальным вариантом будет использование TDBCtrlGrid с размещенным на нем TDBMemo


 
ЮЮ ©   (2005-03-02 11:51) [9]

var
 myFrm: TMyfrm; //локальная переменная
begin
 myFrm := TMyfrm.Create(...)
 ...
end;


 
begin...end ©   (2005-03-02 11:53) [10]

> ЮЮ ©   (02.03.05 11:51) [9]
> myFrm: TMyfrm; //локальная переменная

В каком смысле "локальная"?


 
DesWind ©   (2005-03-02 12:05) [11]

Я бы исспользовал массив TMyForm, а у TMyFrom сделал бы поле UnID, куда писал уникальный идентификатор записи в БД


 
Юрий Зотов ©   (2005-03-02 12:09) [12]

> Новая ©   (02.03.05 11:43) [7]

> номер каждый раз нужен другой, а сколько их всего м.б. -
> неизвестно.

Активная запись в датасете одна - по которой кликнули в гриде. И создавайте по этим кликам хоть сто форм - каждая получит свои данные, из активной записи.

> Vlad ©   (02.03.05 11:47) [8]

> Для представления списка газетных объявлений TDBGrid врядли
> сгодится.

Смотря, в каком виде они сидят в базе. Если все объявление сидит, как единое текстовое поле - то, наверное, да. А если данные из объявления уже разложены по полям - то в самый раз.


 
ЮЮ ©   (2005-03-02 12:09) [13]

>В каком смысле "локальная"?

В том смысле, что если создается несколько экземпляров формы, то глобальная переменная бессмыслена и вредна. Посмотри MDIChild форму в MDI Application, её там нет. Методы формы должны раблтать тольк со своими полями, а никак не с глобальными переменными.


 
Юрий Зотов ©   (2005-03-02 12:12) [14]

> ЮЮ ©   (02.03.05 12:09) [13]

> если создается несколько экземпляров формы, то глобальная
> переменная бессмыслена и вредна...

... а локальная просто не нужна.
:о)


 
Новая ©   (2005-03-02 12:15) [15]

Есть еще непонятные моменты:
В каких случаях используется ТDataSource? У меня он пока нигде не используется, а все работает, например, много-много запросов TIBQuery.
Если приложение должно работать на нескольких машинах, как-то надо транзакции контролировать? То есть у меня пока только один компонент TTransaction, привязанный к базе данных.
На клиентской машине обращение идет напрямую к базе данных на сервер, или создается локальная копия базы? СУБД - Interbase.


 
begin...end ©   (2005-03-02 12:16) [16]

> ЮЮ ©   (02.03.05 12:09) [13]

Я просто не понял, зачем там вообще переменная, если она при выходе оттуда потеряется. Потом форму можно будет найти в списке Components собственника (если его, конечно, указать при создании).


 
Vlad ©   (2005-03-02 12:21) [17]


> Новая ©   (02.03.05 12:15) [15]


> В каких случаях используется ТDataSource? У меня он пока
> нигде не используется, а все работает, например, много-много
> запросов TIBQuery.

Вобще-то книжку бы неплохо почитать.
TDataSource нужен например для связи вашего IBQuery с DB-контролами (которые вы видимо не используете, а зря)

> Если приложение должно работать на нескольких машинах, как-то
> надо транзакции контролировать?

Надо. Советую почитать по поводу транзакций книгу "Мир Interbase" Востриков, Ковязин.


> На клиентской машине обращение идет напрямую к базе данных
> на сервер, или создается локальная копия базы? СУБД - Interbase.

Локальной копии базы не создается. Создается локальная копия таблицы из вашей БД, в памяти клиентского компьютера. Это, собственно, и есть IBQuery


 
begin...end ©   (2005-03-02 12:22) [18]

> ЮЮ ©   (02.03.05 12:09) [13]

> Методы формы должны раблтать тольк со своими полями, а
> никак не с глобальными переменными.

Вот именно. Методы формы должны работать с полями, а не с глобальными или локальными переменными.


 
Vlad ©   (2005-03-02 12:23) [19]


> begin...end ©   (02.03.05 12:22) [18]


> Вот именно. Методы формы должны работать с полями, а не
> с глобальными или локальными переменными.

Почему это метод формы не должен работать с локальными переменными? Другое дело, что в данном случае, это практически бессмысленно.


 
Новая ©   (2005-03-02 12:30) [20]

Книгу Мир IB я заказала еще год назад, спасибо хоть наложенным платежом. Мне приходили всякие там письма о подтверждении заказа, я его, естественно, подтверждала. И все - ни книги, ни писем. Она так и не пришла. А у меня в городе в свободной продаже ее нет. Вот потому и куча вопросов.


 
Vlad ©   (2005-03-02 12:34) [21]


> Новая ©   (02.03.05 12:30) [20]

Тогда читайте
http://www.ibase.ru/
там есть FAQ, много статей и другой полезной информации.
Или ищите книгу в электронном виде.


 
begin...end ©   (2005-03-02 12:49) [22]

> Vlad ©   (02.03.05 12:23) [19]

Ой, да - в [18] я какую-то чушь понёс. Извиняюсь. Меньше курить надо, однозначно.


 
Новая ©   (2005-03-02 12:49) [23]

спасибо



Страницы: 1 вся ветка

Текущий архив: 2005.03.13;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.041 c
14-1107430238
Ломброзо
2005-02-03 14:30
2005.03.13
А что там Жириновский такого про Казахстан ляпнул?...


3-1108021049
denis24
2005-02-10 10:37
2005.03.13
вы зов процедуры в запросе


6-1105344825
ctranik
2005-01-10 11:13
2005.03.13
Вопрос по TIdHttp


3-1108024003
REA
2005-02-10 11:26
2005.03.13
SQL Запрос


1-1109370824
Германн
2005-02-26 01:33
2005.03.13
EInOutError - Прав ли я, что оно "малополезно"?