Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 1000 форм и всё такое... массив форм =) 
:(
    Опции темы
Bibimij
Дата 15.11.2005, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 19.8.2005

Репутация: нет
Всего: нет



Допустим, есть вот такая шняга в type:
Код

mine=record
   form:tform;
   opponent:string;
  end;

Далее в общем var'e пишем:
Код

  baran:array[0..999] of mine; :rolleyes 
  opponents:integer=0; {количество окон}

А ещё есть заранее заготовленная форма form2. Так вот! Надо написать такой код, чтобы при нажатии на button1 в массив baran помещалась form2, выводилась на экран, в переменную opponents при занесении нового окна в массив увеличивалось на единицу, а при закрыти уменьшалось!
ЗЫ form2- дочерняя форма! smile Помимо неё есть и главная form1! smile
ВАШИ ПРЕДЛОЖЕНИЯ! smile
PM MAIL   Вверх
Albinos_x
Дата 15.11.2005, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Цитата(Bibimij @ 15.11.2005, 20:52)
а button1 в массив baran помещалась form2, выводилась на экран,

эт приблизительно так будет выглядить
Код
..
type
   mine=record    
      form:tform;    
      opponent:string;    
    end;

baran = array of mine; 

...

var    
  opponents:integer=0; {количество окон}   // глобальные переменные
  baran1: baran;
...
// в обработчике кнопки
if (opponents+1)<=1000 then
   begin 
   opponents:=opponents+1;
   SetLength(baran1,opponents);
   baran1[opponents-1].form:=Tform2.Create(application);
   baran1[opponents-1].form.show;
   baran1[opponents-1].form.ubdate;
   end;
...

Цитата(Bibimij @ 15.11.2005, 20:52)
а при закрыти уменьшалось!

эт будет приблизительно так:
Код

uses Unit1;
...
procedure Tform2.formclose(Sender: TObject; var Action: TCloseAction);
begin
opponents:=opponents-1;
SetLength(baran1,opponents);
end;
...


Это сообщение отредактировал(а) Albinos_x - 15.11.2005, 22:31


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Poseidon
Дата 15.11.2005, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Не вовсем понятно для чего это нужно. И н совсем ясно вырисовывается что нужно. Опиши что ты хочешь получить, а мы попробуем тебе подсказать как.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
FRAGNATIC
Дата 15.11.2005, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: 6
Всего: 11



лучше не opponents:=opponents+1;
а inc() юзать а для уменьшения dec()
PM MAIL   Вверх
Albinos_x
Дата 15.11.2005, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Цитата(FRAGNATIC @ 15.11.2005, 23:01)
а inc() юзать а для уменьшения dec()

без разницы... тот же .... только вид сбоку...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Albinos_x
Дата 16.11.2005, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Цитата(Albinos_x @ 15.11.2005, 22:28)
...
procedure Tform2.formclose(Sender: TObject; var Action: TCloseAction);
begin
opponents:=opponents-1;
SetLength(baran1,opponents);
end;
...

упс... косяк... бывает... так просто нельзя...т.к. убивать формы можно и не в той последовательности в которой создавал... поправлюсь:
Код

..    
type    
   mine=record     
      form:tform;     
      opponent:string;     
    end;    
baran = array of mine;    
...    
var     
  opponents:integer=0; {количество окон}   // глобальные переменные    
  baran1: baran;    
...    
// в обработчике кнопки    
if (opponents+1)<=1000 then    {если использовать  inc(), то здесь ничего не изменяем}
   begin    
   opponents:=opponents+1;    {вот сюда можно записать inc(opponents);}
   SetLength(baran1,opponents);    
   baran1[opponents-1].form:=Tform2.Create(application);    
   baran1[opponents-1].form.show;    
   baran1[opponents-1].form.ubdate;
   baran1[opponents-1].form.tag:=opponents-1; // сюда запишем индефикатор, чтоб знать какую надо убивать    
   end;    
...

Код

uses Unit1;    
...    
procedure Tform2.formclose(Sender: TObject; var Action: TCloseAction);    
begin    
opponents:=opponents-1;       {если использовать dec(), то сюда пишем dec(opponents);}
// переписываем на место закрываемой формы последнюю из массива
baran1[tag].form:=baran1[length(baran1)-1].form; 
// а вот теперь сокращяем массив    
SetLength(baran1,opponents);    
end;    
...



--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
FRAGNATIC
Дата 16.11.2005, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: 6
Всего: 11



Albinos_x
не без разницы
инк и дек работают быстреею Но если включён режим оптимизации разницы нет вообщем) а он всегда включён вообщем) но вдруг)

Это сообщение отредактировал(а) FRAGNATIC - 16.11.2005, 01:29
PM MAIL   Вверх
Bibimij
Дата 18.11.2005, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 19.8.2005

Репутация: нет
Всего: нет



Ага! smile smile Работает!

PM MAIL   Вверх
<Spawn>
Дата 18.11.2005, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Непонятно, зачем это нужно, если есть Screen.Forms...


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Bibimij
Дата 21.11.2005, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 19.8.2005

Репутация: нет
Всего: нет



Цитата
Непонятно, зачем это нужно, если есть Screen.Forms...

В смысле? Знаешь другой способ? smile smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1732 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.