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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать имя компонента, создан-, ного в RealTime 
:(
    Опции темы
-Сергей-
Дата 24.6.2004, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Компоненты создаю так:
Код

var stop:boolean;
procedure TForm1.Button1Click(Sender: TObject);
var
 I: Integer;
Count, cv:integer;
begin
 cv := StrToInt(Edit1.Text);//кол. вкладок.
 Stop := False;
 ProgressBar1.Max := cv;
 with Form2.PageControl1 do
   for Count := 1 to cv do
    begin
      Application.ProcessMessages;
      if Stop=True then exit;
      ProgressBar1.Position := count;
      with TTabSheet.Create(Self) do
       begin
         PageControl := Form2.PageControl1;
         TabVisible := True;
         Caption := '№ ' + IntToStr(PageIndex);
       end;// with TTabSheet.Create(Self) do
    end;// for Count := 1 to cv do
 Form2.PageControl1.ActivePage := Form2.TabSheet1;
 Form2.Show;
end;


--------------------
Для утвердительного ответа достаточно лишь одного слова - "да". Все прочие слова придуманы, чтобы сказать "нет".
PM MAIL WWW ICQ MSN   Вверх
_hunter
Дата 24.6.2004, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



ну вопервых ты не компонент создаеш smile.gif
а во вторых чем тебе Name не нравится ( или ты под именем что-то другое подразумеваеш? )?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
-Сергей-
Дата 25.6.2004, 06:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Как раз мне Name и нужен. Как я потом к ним обращаться буду?. Только через FindComponent.
--------------------
Для утвердительного ответа достаточно лишь одного слова - "да". Все прочие слова придуманы, чтобы сказать "нет".
PM MAIL WWW ICQ MSN   Вверх
Illusion Dolphin
Дата 25.6.2004, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



А если приблизительно так:

TabSheets = array of TTabSheet;

...

Setlength(TabSheets , cv)

TabSheets [i-1]:= TTabSheet.Create(Self);
With TabSheets [i-1] do
begin
PageControl := Form2.PageControl1;
TabVisible := True;
Caption := '№ ' + IntToStr(PageIndex);
end;

...
А потом обращаешься как к элементу массива...

P.S. А можно и в том же With... do у тебя влепить что-то вроде
Name:='MyTabSheet'+inttostr(cv)...

Это сообщение отредактировал(а) Illusion Dolphin - 25.6.2004, 09:16


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
-Сергей-
Дата 25.6.2004, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата
А можно и в том же With... do у тебя влепить что-то вроде
Name:='MyTabSheet'+inttostr(cv)...

Я уже так пробовал. Не помогает.
Цитата
А потом обращаешься как к элементу массива...

Тоже не помогает.
--------------------
Для утвердительного ответа достаточно лишь одного слова - "да". Все прочие слова придуманы, чтобы сказать "нет".
PM MAIL WWW ICQ MSN   Вверх
_hunter
Дата 25.6.2004, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



чем тебе массив не подходит? что значит не помогает?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
-Сергей-
Дата 26.6.2004, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Допустим так:
TabSheets [1].Caption:='Вкладка';
Не работает.
А если ShowMessage(TabSheets [1].Name);
То вылетает ошибка.
--------------------
Для утвердительного ответа достаточно лишь одного слова - "да". Все прочие слова придуманы, чтобы сказать "нет".
PM MAIL WWW ICQ MSN   Вверх
z-END
Дата 26.6.2004, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


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

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



-Сергей-
Какая ошибка-то? и причем здесь Caption и Name? это же разные вещи... Caption - это есть заголовок, а Name - имя компонента.
Код
ты попробуй так:
TabSheets[1].Name:='My_tabsheet1';
ShowMessage (TabSheets[1].Name);



--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
_hunter
Дата 26.6.2004, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



он имеет в вид, что обращение к элементу массива не эквивалентно обращению к объекту ( устновка / чтение свойств не прходит )

-Сергей-, не помню как с этим в Delphi дело обстоит, но в Buiolder' e для этих целей нужно было массив указателей на объекты создавать а не масив объектов
может поможет


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
-Сергей-
Дата 26.6.2004, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



nJIaKca.spb, ты не правильно понял.
Код

ShowMessage(TabSheets [1].Name);//Так я хочу узнать имя по умолчанию, которое присваивается в процессе создания, а так как его нет то и выдаёт Exception.

И так тоже выдаёт Exception.
Код

With TabSheets [i-1] do
begin
PageControl := Form2.PageControl1;
TabVisible := True;
Caption := '№ ' + IntToStr(PageIndex);
Name := 'Tab' + IntToStr(PageIndex);
end;
ShowMessage (TabSheets[1].Name);// в этом месте Exception (Acces violation at addres...)


Это сообщение отредактировал(а) -Сергей- - 26.6.2004, 11:24
--------------------
Для утвердительного ответа достаточно лишь одного слова - "да". Все прочие слова придуманы, чтобы сказать "нет".
PM MAIL WWW ICQ MSN   Вверх
_hunter
Дата 26.6.2004, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



причем тут Exception при отсутствии имени? отсутсвие имени это просто пустая строка и она без проблем выводится.
смотри мой предыдущийй пост


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
z-END
  Дата 26.6.2004, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


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

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



Толи у меня лыжи не едут, толи не сезон простоsmile.gif
Объясните мне плиз, в чем проблемма-то, Зачем вообще к TabSheet'ам обращаться через FindComponent (ИМХО через сию ф-цию его никогда и ненайдешь, т.к. искать надо у предка в Controls[xx]) ?! Ведь к ним можно обращаться просто так:
Код
ShowMessage (PageControl1.Pages [PageControl1.ActivePageIndex].Name);


И чего там неработает?! сделал как посоветовал Illusion Dolphin:
Код

var Tabs: Array of TTabSheet;
...
procedure TForm1.Button1Click (Sender: TObject);
var cv, i: Integer;
begin
cv := 15;
Setlength (Tabs , cv);
for i := 0 to cv - 1 do
begin
 Tabs [i] := TTabSheet.Create (PageControl1);
  With Tabs [i] do
   begin
     PageControl := Form2.PageControl1;
     TabVisible := True;
     Caption :=  '№ ' + IntToStr (PageIndex);
     Name :=  'TAB_'+inttostr (PageIndex);
   end;
end;
end;
// ... активной вкладке присваиваем заголовок
procedure TForm1.Button2Click (Sender: TObject);
begin
Tabs[PageControl.ActivePageIndex].Caption := 'лыжи НЕ едут!!!';
end;
//... смотрим название Tab номер 3
procedure TForm1.Button3Click (Sender: TObject);
begin
ShowMesage (Tabs[3].Name);
end;

Или я совсем не про то?



--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
_hunter
Дата 26.6.2004, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



про то smile.gif


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Marriage
Дата 26.6.2004, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я могу ошибаться, но ...
Когда создается компонент на форме, его можно узнать его имя так :

Form1.Components[Form1.ComponentCount-1].Name; (если создаешь на форме)
Или я чего то не понял ... withstupid.gif



--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
-Сергей-
Дата 27.6.2004, 05:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



nJIaKca.spb , вот это что надо:
Код

ShowMessage (PageControl1.Pages [PageControl1.ActivePageIndex].Name);


Добавлено @ 05:12
Всем спасибо за участие!
Тема закрыта.
--------------------
Для утвердительного ответа достаточно лишь одного слова - "да". Все прочие слова придуманы, чтобы сказать "нет".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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