Форум: Форум C++Разное
Новые темы: 00
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Строка из динамического объекта (Edit)
 
 автор: mehelson   (29.11.2007 в 22:47)   письмо автору
 
 

Здравствуйте!

Создаю объекты :
(Builder 6)

//конструкторы
TEdit ***MyEdit;
TLabel ***MyLabel;
....

MyEdit = new TEdit **[n];
MyLabel = new TLabel **[n];

for(int i=0; i<2; i++)
   {
      MyEdit[i] = new TEdit*[n];
      MyLabel[i] = new TLabel*[n];
   }

   for(int i=0; i<2; i++)
   {
      for(int j=0; j<n; j++)
      {
         MyLabel[i][j] = new TLabel(this);
         MyEdit[i][j] = new TEdit(this);

         MyLabel[i][j]->Parent = Form1;
         MyEdit[i][j]->Parent = Form1;

         MyLabel[i][j]->AutoSize = true;
         MyLabel[i][j]->Top = j*Form1->Height/n/1.5 + 65;
         MyLabel[i][j]->Left = 20;
         MyEdit[i][j]->Top = x = MyLabel[i][j]->Top + 15;
         MyEdit[i][j]->Left = i*Form1->Width/2 + 20;
         MyEdit[i][j]->Width = 50;
         MyEdit[i][j]->Height = 17; 
         MyEdit[i][j]->MaxLength = 3; 
      }
    }

Добраться до строк, введенных в эти объекты я так понимаю нужно определив обработчик, типа

MyEdit[i][j]->OnChange = MyEdChange;
...

потом функцию void __fastcall...
вроде все так... !?
Но не пойму как функцию описать,
как в этой функции обращаться к этим объектам ( MyEdit[i][j] ) ?
Подскажите, очень прошу :) растолкуйте...научите...

Спасибо!

  Ответить  
 
 автор: cheops   (30.11.2007 в 03:05)   письмо автору
 
   для: mehelson   (29.11.2007 в 22:47)
 

У всех объектов имеется свойствов Tag в который обычно помещают уникальный номер динамического объекта и идентифицируют объект имеено по нему.

  Ответить  
 
 автор: cheops   (30.11.2007 в 03:06)   письмо автору
 
   для: mehelson   (29.11.2007 в 22:47)
 

Кроме того, в обработчике вам по прежнему будут доступны многомерные массивы MyLabel и MyEdit.

  Ответить  
 
 автор: mehelson   (30.11.2007 в 04:00)   письмо автору
 
   для: cheops   (30.11.2007 в 03:06)
 

Спасибо !
ну все-таки не совсем понятно
вот к примеру так...

void __fastcall Form1::Change(TObject *Sender)
{
   AnsiString param += ((TEdit*)->Sender)->Text; // только для примера
}

каким образом обратиться к конкретному объекту ?
не совсем понимаю...
т.е. нужно обратиться к свойству Tag вместо Техт ?
...помошник кода в этом случае не помогает :)


Спасибо!

  Ответить  
 
 автор: cheops   (01.12.2007 в 04:38)   письмо автору
 
   для: mehelson   (30.11.2007 в 04:00)
 

Преобразуйте двумерный массив в MyEdit в одномерный - будет посложнее, но не очень сильно. В цикле назначте параметру Tag каждого из динамических объектов его индекс
MyEdit[i]->Top = i; 

Так как указатель MyEdit у вас глобальный - вы можете обратиться к нему и в обработчике
void __fastcall Form1::Change(TObject *Sender)
{
    // ((TEdit*)->Sender)->Tag - содержит индекс
   AnsiString param +=  MyEdit[((TEdit*)->Sender)->Tag]->Text; 
}

Можно и двумерный массив оставить, изменив логику формирования Tag так, чтобы по нему всегда можно было однозначно узнать оба индекса.

  Ответить  
 
 автор: mehelson   (01.12.2007 в 14:18)   письмо автору
 
   для: cheops   (01.12.2007 в 04:38)
 

Ясно!
Спасибо!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования