| 
| 
 | Вопрос # 2 565/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!
 Вопрос такой:
 
 Я создаю динамически "радиобатоны", caption к ним подгружаю из ini файла, потом мне нужно узнать caption той кнопти которая cheked, помогите плз!
 
 В этом коде все нормально загружается, вот пытаюсь определить текст выбраной кнопки и все)) в переменной my остается только последнее значение!
 Приложение:Переключить в обычный режим unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls,inifiles; type  TForm1 = class(TForm)    Button1: TButton;    Button2: TButton;    Label1: TLabel;    procedure Button1Click(Sender: TObject);    procedure Button2Click(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end; var  Form1: TForm1;  mybut : TRadioButton;  ini   : TIniFile;  i     : Integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);begin ini:=TIniFile.Create('C:1.ini');  for i:=0 to 3 do begin   mybut:=TRadioButton.Create(Self);   mybut.Parent:=Form1;   mybut.Left:=10;   mybut.Top:=i*25;   mybut.Caption:=ini.ReadString(IntToStr(i),'var', mybut.Caption); end;end; procedure TForm1.Button2Click(Sender: TObject);beginif mybut.Checked then Label1.Caption:=mybut.Caption;end; end. 
|  |   Вопрос задал: unl0K (статус: Посетитель)Вопрос отправлен: 26 марта 2009, 00:54
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 6; последнее сообщение — 26 марта 2009, 11:46; участников в обсуждении: 3. 
|   | Мережников Андрей (статус: Абитуриент), 26 марта 2009, 05:53 [#1]:А чего Вы хотели, если информация о предыдущих кнопках просто напросто теряется? В переменной myBut хранится ссылка только на последнюю кнопку. Либо создавайте массив для хранения кнопок, либо в цикле перебирайте контролы на форме, проверяйте являются ли они TRadioButton, если да, то проверяйте Checked  и т.д. |  
|   | unl0K (статус: Посетитель), 26 марта 2009, 10:37 [#2]:Вся проблема в том - что, я немогу реализовать не одного варианта сказанного вами, если не трудно покажите как это делается! Относись к людям так, как хотел бы, чтобы они к тебе относились! |  
|   | Вадим К (статус: Академик), 26 марта 2009, 10:57 [#3]:А где в Вашем коде переменная my, которой Вы присваиваете значение? Галочка "подтверждения прочтения" - вселенское зло. |  
|   | unl0K (статус: Посетитель), 26 марта 2009, 11:20 [#4]:Извените, ощибся - она mybut Относись к людям так, как хотел бы, чтобы они к тебе относились! |  
|   | Вадим К (статус: Академик), 26 марта 2009, 11:34 [#5]:у Вас есть несколько вариантов. первое - создать динамический массив (а ещё лучше что то типа TList) и туда всё записывать. А можно просто искать по имени компоненты.
 Первый вариант для Вас наверно будет проще.
 
  private
    { Private declarations }
    List:TList;
  public
    { Public declarations }
  end;
.....
procedure ... FormCreate.....
begin
List := TList.Create;
end;
......
procedure TForm1.Button1Click(Sender: TObject);
begin
 ini:=TIniFile.Create('C:1.ini');
 
 for i:=0 to 3 do
 begin
   mybut:=TRadioButton.Create(Form1);
   mybut.Parent:=Form1;
   mybut.Left:=10;
   mybut.Top:=i*25;
   mybut.Caption:=ini.ReadString(IntToStr(i),'var', mybut.Caption);
   list.add(mybut); //<< добавили в массив
 end;
end;
.....
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
for i := 0 to list.count -1 do
if TRadioButton(list[i]).Checked then Label1.Caption:=Label1.Caption + TRadioButton(list[i]).Caption;
end;
....
procedure ....FormDestroy....;
begin
  list.free;
end;удалять компоненты, которые мы в список забросили не нужно (это будет ошибкой) - при создании мы написали строки
 mybut:=TRadioButton.Create(Form1);
   mybut.Parent:=Form1;Благодаря этому, форма есть хозяином этих компонентов и сама их удалит по своему удалению. 
 P.S. Аккуратно переписывайте код. я немного поменял. Полные имена процедур допишите сами
   Галочка "подтверждения прочтения" - вселенское зло. |  
|   | unl0K (статус: Посетитель), 26 марта 2009, 11:46 [#6]:Вадим, спасибо Вам большое - как всегда выручаете! Относись к людям так, как хотел бы, чтобы они к тебе относились! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |