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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2009, 18:15   #1
kino
Пользователь
 
Регистрация: 16.12.2009
Сообщений: 13
Лампочка Delphi получение данных из массива?

Здравствуйте! Нужна помощь по массивам

Есть массив типа Arr2: array of TEdit;

Длина массива n. Пользователю предлагается ввести n. Далее массив создает n кол-во TEdit'ов. В них пользователей вводит еще n значений. Так вот эти n значений мне и нужны. Как их извлечь и откуда?

Кто может помочь и показать на примере? очень буду благодарен!
Спасибо!

P.S:
я предполагаю, что нужно создать например 9 (n от 1 до 9) переменных типа real, затем приравнять каждый элемент массива к переменной. Что-то типо
a1:=Arr2[1]; a2:=Arr2[2]; но а1 real, а Arr1[1] Tedit.
Изучаю делфи 3 день
kino вне форума Ответить с цитированием
Старый 16.12.2009, 20:28   #2
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

TEdit - визуальный компонент. Отсюда вывод - нужна форма, на которой они могли быть расположены.
Ответные вопросы.
1. Какой компонент будет отвечать за ввод n?
2. Куда и с какой целью предполагается извлекать n значений из массива TEdit'ов?

Если принять, что ввод значения n будет осуществляться в отдельный TEdit, то тогда на форме размещается этот компонент и кнопка.
После ввода n, нажатие на кнопку создает массив компонентов для ввода значений. Но при этом потребуется с помощью свойств Left и Top компонентов в массиве размещать каждый из них так, чтобы они не закрывали друг друга.

Код:
var 
  Arr2 : array of TEdit;

procedure TForm1.Button1Click(Sender : TObject);
var
  N, I, T, L : Integer;
begin
  //вначале проверяется наличие компонентов, если есть то удаляются с формы
  //такая ситуация может быть, если на кнопку нажали повторно, напр., с другим зн. n
  for I := 0 to High(Arr2) do 
    Arr2[I].Free;
  Arr2 := nil;

  //значение n, введенной пользователем (новое количество компонентов)
  N := StrToInt(Edit1.Text);
  SetLength(Arr2, N);
  T := 0; L := 10;
  for I := 0 to N-1 do begin
    Arr2[I] := TEdit.Create(Self);
    Arr2[I].Parent := Self;
    Arr2[I].Left := L;
    Arr2[I].Top := T * 24 + 50; 
    Inc(T);
    if T * 24 + 50 + Arr2[I].Height > ClientHeight then begin
      T := 0; Inc(L, 130);
    end;
  end;
end;
где, 24 - высота одного компонента + gap (зазор между ними);
50 - смещение первого ряда компонентов от верха формы
130 - ширина компонента + gap
Это эскиз кода, который создает и размещает на форме сверху вниз и слева направо n TEdit'ов.
А что дальше делать с введенными в компоненты TEdit значениями пока никто не знает.
Скандербег вне форума Ответить с цитированием
Старый 16.12.2009, 22:06   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

дополню... при создании массива эдитов назначайте им одно событие, скажем onChange и перечисляемые tag, это и даст вам возможность извлечь текст со знанием в кого ввели при вводе:
Код:
procedure EditChange(Sender: TObject);
var t: string;
begin
 t:= (sender as tedit).Text;
 case (sender as tedit).tag of
  0: ;
  1: ;
 end
end;
кроме того, вы можете узнать в любой момент тексты с эдитов через...
Код:
var arr: array of tedit;
     t: string;
begin
 for i:= low(arr) to high(arr) do
  t:= arr[i].text; // и так далее
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение данных из DBGrid Demien БД в Delphi 14 19.08.2009 13:38
Рандомизационное получение координат массива без повторения. Alex Cones Общие вопросы Delphi 4 08.06.2009 17:38
Получение значений из таблицы в виде массива (Вопрос по MySQL) Linel PHP 5 29.03.2009 11:34
Получение данных с БД. urgu_st SQL, базы данных 5 13.01.2009 15:11