Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2009, 21:19   #11
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Я так понимаю тут не предусматривается удаление самих обьектов.
Удалить ведь не проблема , проблема в том , что обьект с таким именем уже остаётся , но принадлежит он другому элементу Tabs[] ...
А создаю я их какраз с константным именем и переменной кол-ва самих элементов.

Код:
ns.Name := 'tabsheet'+ inttostr(TabsCount);
syn.Name := 'syn'+ inttostr(TabsCount);
Как я уже сказал , выход вижу один , ввести ещё переменную которая предотвратит создание обьектов с таким же именем.

к тому-же события
Код:
syn.OnChange := CustomSynChange;
Происходят в других компонентах. Тоесть сдвиг.

Последний раз редактировалось Lime; 13.07.2009 в 21:23.
Lime вне форума Ответить с цитированием
Старый 14.07.2009, 02:21   #12
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Цитата:
А перед удалением записи объекты уничтожаешь?
Хм, я предложил ТС сделать это самому, можно было и догадатся, ведь не только этими двумя компонентами взможно ограничится запись.
Цитата:
А создаю я их какраз с константным именем и переменной кол-ва самих элементов.
Странно, но имя можно и не задавать - ведь обращаться можно через запись зная id и т.д.
Кстати насчет эвентов, создайте компоненту, потом эвент и удалите компоненту а эвент останется. Ничего опасного нет, в качестве эвента подойдет любая процедура с описанием Sender:TObject;
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 14.07.2009, 02:37   #13
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Цитата:
Сообщение от Dj_smart Посмотреть сообщение
Хм, я предложил ТС сделать это самому, можно было и догадатся, ведь не только этими двумя компонентами взможно ограничится запись.

Странно, но имя можно и не задавать - ведь обращаться можно через запись зная id и т.д.
Кстати насчет эвентов, создайте компоненту, потом эвент и удалите компоненту а эвент останется. Ничего опасного нет, в качестве эвента подойдет любая процедура с описанием Sender:TObject;
По примеру я понял что компоненты не уничтожаются а данные сдвигаются на 1 в перёд начиная с "удаляемой" ячейки.
Я так полагаю при создании компонента он должен иметь имя. , никогда не пробовал создать компонент без имени.. да обращяюсь к нему через массив , НО всёже.
На счёт "эвентов" я так и сделал. Но при некоторых обстоятельствах события одних компонентов действуют на другие ... ( эту проблему вроде уже решил.)
Вот немного наваял ...
Проблема с сохранением .. иногда закрывается то , что не должно закрываття ..( вкладки )
В атаче ехе.
Вложения
Тип файла: rar AFiller.rar (295.0 Кб, 10 просмотров)

Последний раз редактировалось Lime; 14.07.2009 в 02:43.
Lime вне форума Ответить с цитированием
Старый 14.07.2009, 02:39   #14
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Цитата:
Я так полагаю при создании компонента он должен иметь имя. , никогда не пробовал создать компонент без имени.. да обращяюсь к нему через массив , НО всёже.
Имхо нет смысла, т.к. ты даже небудеш к небу обращатся по имени ища компонент...
Цитата:
На счёт "эвентов" я так и сделал. Но при некоторых обстоятельствах события одних компонентов действуют на другие ... ( эту проблему вроде уже решил.)
например
(Sender as TSynEdit).Tag чтоб узнать id эдита и дельше манипулировать с ним...
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 14.07.2009, 02:47   #15
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Код:
syn.OnChange := CustomSynChange;

procedure TForm1.CustomSynChange(Sender: TObject);
begin
TabChange;
end;

Procedure TabChange;
begin
tabs[ActivetabNum].Compiled := false;
tabs[ActivetabNum].Tab.ImageIndex := 1;
end;
Сейчас работает нормально.
При уничтожении обьектов влияет на то что нужно.

Код:
//ns.Name := 'tabsheet'+ inttostr(TabCrNum);
Как ни странно работает (имхо не должно)
Lime вне форума Ответить с цитированием
Старый 14.07.2009, 11:39   #16
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Цитата:
Как ни странно работает (имхо не должно)
Чего тут странного?
Свойство name совсем не readonly. И вроде имеет простой тип string.
Я полностью согласен с Dj_smart, надо в свойство Tag записывать индекс в массиве и все. А заморачиваться с именами совсем не надо.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 14.07.2009, 14:14   #17
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Цитата:
Сообщение от Neeter Посмотреть сообщение
Чего тут странного?
Свойство name совсем не readonly. И вроде имеет простой тип string.
Я полностью согласен с Dj_smart, надо в свойство Tag записывать индекс в массиве и все. А заморачиваться с именами совсем не надо.
Приведу простой пример из жизни , как бы Вам жилось не имея имени? А лиш своё место в "калонии" под каким-то номером ?
//Всеголиш пример "здравого" смысла.
Так вот и я думаю что компоненту нужно имя. иначе как ( по другому) к нему обращатся ...
Lime вне форума Ответить с цитированием
Старый 14.07.2009, 14:24   #18
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Цитата:
Так вот и я думаю что компоненту нужно имя. иначе как ( по другому) к нему обращатся ...
Очень просто - лиш зная id, т.к. компонент в пределах записи может иметь лиш одно имя (физическое, не свойство name а то что описано в var).
Куча примеров
Цитата:
Tabs[id].Edit.блаблабла:=1;
if Tebs[(sender as TSynEdit].Tag].Edit.Text='' then exit;
и тд..
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 14.07.2009, 14:30   #19
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Цитата:
Приведу простой пример из жизни , как бы Вам жилось не имея имени? А лиш своё место в "калонии" под каким-то номером ?
//Всеголиш пример "здравого" смысла.
Так вот и я думаю что компоненту нужно имя. иначе как ( по другому) к нему обращатся ...
Ох, посмеялся )

А как вы будете обращаться по имени, если все компоненты находятся в массиве? там нужен id, index или как хотите так и называйте.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 14.07.2009, 16:39   #20
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Я и обращаюсь к компонентам по номеру в массиве .
Я ведь написал (по другому) - тобиш другой вариант кроме как из массива.
Мне в данном примере другово варианта не нужно , но опять-же как я уже писал , он по здравому смыслу должен быть.
По крайней мере создавая 2 компонента с одинаковым именем получаем ошибку , значит имя всёже имеет значение.

Вы конечно можете посмеятся с высоты вашего птичьего полёта , но я пишу что думаю , и что вижу при работе.

Покачто проблема почти не качается работы с обращением к динамически созданным компонентом. Всё делается через массив и id . тоесть номером. А на счёт имени - это другое дело.
Lime вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
доступ к виз компонентам созданным в рантайме amandra Общие вопросы Delphi 1 09.05.2009 22:17
Подробная литература по всем компонентам dimonbest Свободное общение 10 21.11.2008 16:51
Присвоение процедур компонентам N!ckeL Компоненты Delphi 4 26.04.2008 18:22
Обращение к компонентам из цикла satana Общие вопросы Delphi 4 16.07.2007 12:16