42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
|
||||||||||||||||
1 | ||||||||||||||||
Динамический массив, перемещение элемента02.07.2012, 11:05. Показов 1652. Ответов 18
Метки нет (Все метки)
В общем есть динамический массив форм.
Получается что FormsList[0].Form , FormsList[1].Form, FormsList[2].Form - начинают существование. Вопрос в том, что при закрытии не последней формы, например 1й, последняя форма вставала на место закрытой формы (то есть 1й), а последний элемент массива освобождался. Пробовал так, но где то не верно
Вопрос : Как поставить последнюю форму на место закрытой ?
0
|
02.07.2012, 11:05 | |
Ответы с готовыми решениями:
18
Вставка элемента в одномерный динамический массив Добавление элемента в динамический массив - как описать проверку необходимости расширения массива Динамический массив. Инвертировать часть массива с элемента, номер которого задан, до последнего элемента Используя динамический массив выполнить перемещение всех цифровых символов в начало заданной строки |
422 / 352 / 19
Регистрация: 14.05.2012
Сообщений: 1,437
|
||||||
02.07.2012, 11:24 | 2 | |||||
0
|
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
|
||||||||||||||||
02.07.2012, 11:28 [ТС] | 3 | |||||||||||||||
Нет, все равно при закрытии первой формы закрывает последнюю
Добавлено через 1 минуту Я даже так делал
0
|
422 / 352 / 19
Регистрация: 14.05.2012
Сообщений: 1,437
|
|
02.07.2012, 11:37 | 4 |
а так у тебя дело в том что первая форма задана главной. Тебе надо сделать главной другую форму. Погугли я не знаю как это делается...
1
|
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
|
|
02.07.2012, 11:42 [ТС] | 5 |
Ну они вроде все равнозначны? Главная BDForm дочерняя EDForm
Или вы имели ввиду главная форма в динамически созданных формах?
0
|
422 / 352 / 19
Регистрация: 14.05.2012
Сообщений: 1,437
|
|
02.07.2012, 12:40 | 6 |
зачем закрывать первую ты же ей присваиваешь значение последней... Присвоил значение и закрыл последнюю... И покажи как ты закрываешь форму, может быть ты этим методом вырубаешь все формы разом...
0
|
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
|
||||||
02.07.2012, 12:55 [ТС] | 7 | |||||
Немного грязно
0
|
61 / 44 / 6
Регистрация: 15.01.2012
Сообщений: 167
|
|
02.07.2012, 13:03 | 8 |
Тебе нужно делать цикл.
Код писать не буду ибо некогда. Смотри, суть в том что тебе нужен цикл, ты знаешь индекс закрываемой формы и количество форм вообще, берешь цикл фор от "индекс закрываемой формы" до "количество форм вообше" и последовательно присваиваешь каждой предыдущей форме следующую, тем самым сдвигаешь все формы в массиве. А после самую последнюю форму освобождаем.
0
|
422 / 352 / 19
Регистрация: 14.05.2012
Сообщений: 1,437
|
|
02.07.2012, 13:03 | 9 |
Почитай здесь может поможет...Как удалить динамически созданные объекты??
0
|
61 / 44 / 6
Регистрация: 15.01.2012
Сообщений: 167
|
|||||||||||
02.07.2012, 13:06 | 10 | ||||||||||
удалять просто
либо
0
|
422 / 352 / 19
Регистрация: 14.05.2012
Сообщений: 1,437
|
|
02.07.2012, 13:07 | 11 |
duhar, а если использовать Destroy; в чем разница между вашими методами и этим?..
0
|
61 / 44 / 6
Регистрация: 15.01.2012
Сообщений: 167
|
|
02.07.2012, 13:08 | 12 |
Destroy подходит только для форм. То есть выполняется процедура OnDestroy, а после выполняется то что я написал =)
1
|
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
|
|
02.07.2012, 13:09 [ТС] | 13 |
Этот вариант уже рассматривался, но например будет не 5 форм а 10000 и на закрытие формы потребуется секунда, то это не рационально. Надо бы последнюю форму переместить на место закрывающейся а последнюю free
0
|
61 / 44 / 6
Регистрация: 15.01.2012
Сообщений: 167
|
||||||
02.07.2012, 13:15 | 14 | |||||
ну а в чем проблема та
Добавлено через 1 минуту
0
|
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
|
|
02.07.2012, 13:18 [ТС] | 15 |
duhar, я третий день борюсь с этим, он последнюю форму не перемещает. И закрывается сразу две формы
0
|
61 / 44 / 6
Регистрация: 15.01.2012
Сообщений: 167
|
||||||
02.07.2012, 13:25 | 16 | |||||
ААААА=))))
Туплю. тут надо проявить находчивость, щас у себя в проге над таким же косяком бился, надо вот так
Добавлено через 3 минуты проблема в том что при присвоении одной формы другой присваивается только адрес в памяти, и получается что две формы имеют один и тот же адрес, при попытке освобождения памяти этот адрес в памяти освобождается и сразу две формы перестают существовать.
1
|
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
|
|
02.07.2012, 13:25 [ТС] | 17 |
duhar, отлично закрывает теперь только по одной) щас если ошибок с закрытием и сворачиванием не будет, то отлично)
0
|
61 / 44 / 6
Регистрация: 15.01.2012
Сообщений: 167
|
|
02.07.2012, 13:27 | 18 |
смотри, а жизнь то налаживается
1
|
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
|
||||||
02.07.2012, 13:31 [ТС] | 19 | |||||
РЕШЕНО!
0
|
02.07.2012, 13:31 | |
02.07.2012, 13:31 | |
Помогаю со студенческими работами здесь
19
Создать динамический массив (Если чётных чисел больше, то массив должен быть укорочен на 2 элемента) Добавления элемента в динамический массив Массив: Добавление элемента в динамический массив Ошибка записи элемента в динамический массив Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |