|
Вопрос # 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);
- begin
- if 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]:
Вадим, спасибо Вам большое - как всегда выручаете!
Относись к людям так, как хотел бы, чтобы они к тебе относились!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|