Форум: "Основная";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
ВнизКак динамически создавать однотипные формы? Найти похожие ветки
← →
Новая © (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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.048 c