Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.51 MB
Время: 0.033 c
1-1109683663
emfw
2005-03-01 16:27
2005.03.13
Мноострочный список


1-1109279193
akvilon
2005-02-25 00:06
2005.03.13
один TStrings


14-1108996975
infom
2005-02-21 17:42
2005.03.13
Юношеский максимализм.....


1-1109494266
Guitar
2005-02-27 11:51
2005.03.13
Цифровая фильтрация сглаживание в примерах Delphi


1-1109618333
Bloody-Wolf
2005-02-28 22:18
2005.03.13
Перевод числа





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский