Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 22.08.2009, 10:50   #1
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Адрес: Россия, Екатеринбург
Сообщений: 382
Репутация: 51
Вопрос Как вывести несколько одинаковых форм одновременно

То есть у меня есть форма с инфой, и она может выводится несколько раз, может один, а может и не разу. Так вот, как мне вывести форму несколько раз? Помогите!
k1r1ch вне форума   Ответить с цитированием
Старый 22.08.2009, 11:30   #2
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 21,003
Репутация: 3436

icq: 446843180
skype: phoenix_proger
По умолчанию

обьявляешь еще переменных для форм и создаешь/показываешь их динамически
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Старый 22.08.2009, 12:33   #3
vovk
!=
Профессионал
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,762
Репутация: 424
По умолчанию

Код:
var
  Form1: TForm1;
   flist:TList;
...........
..........

procedure TForm1.Button1Click(Sender: TObject);
begin
flist.Add(TForm2.Create(nil));
With Tform2(flist.Items[flist.Count-1]) do
begin
Caption:='Форма номер '+Inttostr(flist.Count);
Left:=(flist.Count-1)* 15;
top:=(flist.Count-1)* 15;
show;
end;
end;

только надо будеть озаботится созданием (до того как применять)
Код:
flist:=TList.Create;
а потом уничтожением объектов
Код:
 for i := 0 to flist.Count - 1 do Tform(flist[i]).Free;
и самого листа
Код:
flist.Free;
вроде так если ничего не напутал (в автобусе набивал)
vovk вне форума   Ответить с цитированием
Старый 22.08.2009, 16:18   #4
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Адрес: Россия, Екатеринбург
Сообщений: 382
Репутация: 51
Печаль

Странно, но сейчас вообще ни одной формы не показывается. Вот переделанный под себя код:
Код:
procedure TMainForm.NotificationTimerTimer(Sender: TObject);
var i: integer;
begin
  NotifyList := TList.Create;
  DBForm.Table.First;
  for i := 1 to DBForm.Table.RecordCount do
    begin
      if DBForm.TableHDate.AsDateTime = Date then
        begin
          NotifyList.Add(TNotificationForm.Create(nil));
          with TNotificationForm(NotifyList.Items[NotifyList.Count-1]) do
            begin
              Notify.Caption := 'Сегодня ' + DBForm.TableTypeStr.AsString +
               ' у ' + DBForm.TableHName.AsString;
              Show;
            end;
        end;
      DBForm.Table.Next;
    end;
  DBForm.Table.First;
  for i := 0 to NotifyList.Count - 1 do TNotificationForm(NotifyList[i]).Free;
  NotifyList.Free;
end;
Что неправильно, где я затупил?
И кстати, объясните, что значит конструкция типа TNotificationForm(NotifyList.Items[NotifyList.Count-1])? Что за параметры у типа?
k1r1ch вне форума   Ответить с цитированием
Старый 22.08.2009, 16:45   #5
vovk
!=
Профессионал
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,762
Репутация: 424
По умолчанию

это значит что к обьекту указаннаму в скобках нужно относится как к классу TNotificationForm (это ваш класс) кстати он наследник от Tform, так что можно писать просто
Код:
TForm(NotifyList.Items[NotifyList.Count-1])
NotifyList.Items[NotifyList.Count-1]ну а это просто указатель на обьект последний в листе.

Только зачем вы их сразу уничтожаете? Но отображатся они всё равно должны вроде..

и ещё кто такой Notify ? вот тут
Цитата:
Notify.Caption := 'Сегодня ' + DBForm.TableTypeStr.AsString +
' у ' + DBForm.TableHName.AsString;

Последний раз редактировалось vovk; 22.08.2009 в 16:49.
vovk вне форума   Ответить с цитированием
Старый 22.08.2009, 17:26   #6
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Адрес: Россия, Екатеринбург
Сообщений: 382
Репутация: 51
Радость

Все! Спасибо! Действительно, я просто сразу же уничтожал формы, сейчас все работает. Notify - TLabel.
k1r1ch вне форума   Ответить с цитированием
Старый 22.08.2009, 17:37   #7
vovk
!=
Профессионал
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,762
Репутация: 424
По умолчанию

не забудте, что при слудующей попытке создать NotifyList будет ошибка.. надо либо предусмотреть условие по которому будет проверятся существование объекта, либо если нужен в течении работы какойлибо формы, (или другово объекта) предусмотреть инициализацию сразу после создания формы (или.. ну вы поняли), и не забыть всё это уничтожить когда отпадёт надобность.. в вашем же приложении не нужны утечки памяти..
vovk вне форума   Ответить с цитированием
Старый 22.08.2009, 17:39   #8
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Адрес: Россия, Екатеринбург
Сообщений: 382
Репутация: 51
Вопрос

Эмм... А если я сейчас в начале процедуры создаю его, а в конце уничтожаю? Ошибки же быть не должно?

И еще вопрос: почему, когда я сворачиваю главную форму, эти формы тоже сворачиваются?
k1r1ch вне форума   Ответить с цитированием
Старый 22.08.2009, 17:44   #9
vovk
!=
Профессионал
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,762
Репутация: 424
По умолчанию

Цитата:
Сообщение от k1r1ch Посмотреть сообщение
Эмм... А если я сейчас в начале процедуры создаю его, а в конце уничтожаю? Ошибки же быть не должно?

И еще вопрос: почему, когда я сворачиваю главную форму, эти формы тоже сворачиваются?
Нет конечно.. если в 1 процедуре всё и создаётся и уничтожается ... только это же вроде формы.. с ними какбэээ ну работу закончить надо а потом уничтожать..
vovk вне форума   Ответить с цитированием
Старый 22.08.2009, 17:50   #10
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Адрес: Россия, Екатеринбург
Сообщений: 382
Репутация: 51
Вопрос

Ну а почему они сворачиваются? Типа MainForm - их родительская форма, поэтому? А как этого избежать?
k1r1ch вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
несколько одновременно работающих копий программы - ? Evgenii Общие вопросы Delphi 3 06.07.2009 09:38
Подскажите, как сделать что бы перетягивание форм происходило одновременно! •ScReam•™ Помощь студентам 1 19.06.2009 00:45
Сведение одинаковых баз (форм) IFRSoff Microsoft Office Access 4 06.04.2009 14:14
Как вывести один столбец в несколько??? M&Ms Microsoft Office Excel 9 21.07.2008 14:19
Вставка даты в несколько DBDateTimeEditEh одновременно!? John_chek Компоненты Delphi 3 12.02.2007 17:34


12:48.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.