Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.04.2010, 22:33
dixa dixa вне форума
Прохожий
 
Регистрация: 13.04.2010
Сообщения: 3
Репутация: 10
По умолчанию подстановка значения в созданный тип

Здравствуйте уважаемые! Есть вопрос, который я не могу решить, замучился уже искать, если поможете буду очень рад:
Пользователь выбирает значение(предположим из listbox) и дальше мне нужно определить в каком значении это искать:
Код:
    MyRec = record
    Name: string[100];
    property1: integer;
    property2: integer;
    property3: integer;
    end;
var
  kurs: MyRec;
Забили какими-то значениями(kurs.name:=бла бла бла,kurs.property1:=10, kurs.property2:=25, kurs.property3:=55) затем запустили прогу, пользователь выбрал значение например "property1"
Теперь мне надо достать значение из listbox :
Код:
Listbox1.Items[Listbox1.ItemIndex]
Достаю, теперь мне надо выдать значение предположим kurs.property1
То есть мне надо выдернуть значение "10".
Как это сделать?...
Ответить с цитированием
  #2  
Старый 13.04.2010, 23:12
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Так можно попробовать:

Код:
Type
 TMystr = Packed Record
  Name: String;
  Property1: Integer;
  Property2: Integer;
  Property3: Integer;
 end;

Var
  Mystr: Array [0..4] of TMystr;

procedure TForm1.FormActivate(Sender: TObject);
var
 i: Integer;
begin
Randomize;
 For i:=0 To 4 Do
  begin
   Mystr[i].Name:= IntToStr(i)+') Строка.';
   Mystr[i].Property1:= Random(100);
   Mystr[i].Property2:= Random(200);
   Mystr[i].Property3:= Random(300);
   Listbox1.Items.Add(Mystr[i].Name);
  end;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
Var
 Property1, Property2, Property3: Integer;
begin
Property1:= Mystr[Listbox1.ItemIndex].Property1;
Property2:= Mystr[Listbox1.ItemIndex].Property2;
Property3:= Mystr[Listbox1.ItemIndex].Property3;
end;
Ответить с цитированием
  #3  
Старый 13.04.2010, 23:24
dixa dixa вне форума
Прохожий
 
Регистрация: 13.04.2010
Сообщения: 3
Репутация: 10
По умолчанию

нет, можно конечно вручную это сделать как вы предлагаете, но хотелось бы автоматизировать это(вдруг у меня свойств будет не 3, а 50), то бишь хочу чтобы было что-то вроде:
n:=kurs.Listbox1.Items[Listbox1.ItemIndex];
но так он собака не работает, ругается на ошибку...
Ответить с цитированием
  #4  
Старый 13.04.2010, 23:28
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,037
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Читай про RTTI.
Только вот не помню, работает ли это с записями. С классами точно работает.
Ответить с цитированием
  #5  
Старый 13.04.2010, 23:34
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Первое что пришло в голову при большом колличестве Property:
(Массив можно сохр и загружать из файла).

Код:
Type
 TMystr = Packed Record
  Name: String;
  PropertyX: Array [1..50] of Integer;
 end;

Var
  Mystr: Array [0..4] of TMystr;

procedure TForm1.FormActivate(Sender: TObject);
var
 i,j: Integer;
begin
Randomize;
 For i:=0 To 4 Do
  begin
   Mystr[i].Name:= IntToStr(i)+') Ñòðîêà.';
   For j:=1 To 50 Do
    begin
     Mystr[i].PropertyX[j]:= Random(100);
    end;
   Listbox1.Items.Add(Mystr[i].Name);
  end;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
Var
 PropertyX: Array [1..50] of Integer;
 i: Integer;
begin
 For i:= 1 To 50 Do
  begin
   PropertyX[i]:= Mystr[Listbox1.ItemIndex].PropertyX[i];
  end;
end;
Ответить с цитированием
  #6  
Старый 15.04.2010, 20:25
dixa dixa вне форума
Прохожий
 
Регистрация: 13.04.2010
Сообщения: 3
Репутация: 10
По умолчанию

Спасибо большое, в особенности AND_Ray...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter