Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Goldkeyomsk
0 / 0 / 0
Регистрация: 27.04.2015
Сообщений: 26
#1

Управление св-вом ComboBox.Enabled через RadioButton'ы - Delphi

28.07.2015, 14:09. Просмотров 666. Ответов 25
Метки нет (Все метки)

Добрый день.
Есть такая у меня проблема.

В программе есть 2 кнопки (RadioButton)
хотелось бы с помощью их реализовать переключатель активного/неактивного окна ComboBox

Задача следующая

Имеется выбор из 2-х значений кнопками RadioButton
при нажатии на одну из кнопок нужно что бы список ComboBox был неактивным
и наоборот

вот код программы, поправьте, пожалуйста

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Printers, Math, StdCtrls, jpeg, ExtCtrls, Menus, XPMan, ExtDlgs;
 
type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edit2: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Edit3: TEdit;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    ComboBox2: TComboBox;
    Edit1: TEdit;
    Label11: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Edit4: TEdit;
    Label16: TLabel;
    Label17: TLabel;
    Button1: TButton;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    Label29: TLabel;
    Button2: TButton;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    Label12: TLabel;
    Label18: TLabel;
    Label20: TLabel;
    Timer1: TTimer;
    XPManifest1: TXPManifest;
    Label19: TLabel;
    Label30: TLabel;
    Image2: TImage;
    Bevel1: TBevel;
    Bevel3: TBevel;
    Bevel4: TBevel;
    Bevel5: TBevel;
    N6: TMenuItem;
    PrintDialog1: TPrintDialog;
    N8: TMenuItem;
    N7: TMenuItem;
    Label31: TLabel;
    Image1: TImage;
    Label32: TLabel;
    Label33: TLabel;
    Edit5: TEdit;
    Label34: TLabel;
    Bevel6: TBevel;
    Label35: TLabel;
    Label36: TLabel;
    ComboBox3: TComboBox;
    Label37: TLabel;
    Label38: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Splitter1: TSplitter;
    Splitter2: TSplitter;
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
 
    procedure N3Click(Sender: TObject);
    //procedure Timer1Timer(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    //procedure Label37Click(Sender: TObject);
    procedure ComboBox3Change(Sender: TObject);
    //procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
 
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
uses Unit2, Unit3;
 
{$R *.dfm}
 
//создание списка настенного громкоговорителя
procedure TForm1.FormCreate(Sender: TObject);
begin
with ComboBox1.Items do
  begin
    AddObject('Соната-ТЛ-100-5/3Вт (5Вт)', TObject(100));
    AddObject('Соната-ТЛ-100-5/3Вт (3Вт)', TObject(97));
    AddObject('Соната-ТЛ-100-3/1Вт (3Вт)', TObject(96));
    AddObject('Соната-ТЛ-100-3/1Вт (1Вт)', TObject(91));
    AddObject('Соната-ТЛ-100-3/1Вт MINI (3Вт)', TObject(96));
    AddObject('Соната-ТЛ-100-3/1Вт MINI (1Вт)', TObject(91))
    end;
 
 //создание списка потолочного громкоговорителя
 
with ComboBox3.Items do
  begin
    AddObject('Соната-ТЛ-100-5/3Вт исп.2 (5Вт)', TObject(100));
    AddObject('Соната-ТЛ-100-5/3Вт исп.2 (3Вт)', TObject(97));
    AddObject('Соната-ТЛ-100-3/1Вт исп.2 (3Вт)', TObject(96));
    AddObject('Соната-ТЛ-100-3/1Вт исп.2 (1Вт)', TObject(91));
    AddObject('Соната-ТЛ-100-3/1Вт MINI исп.2 (3Вт)', TObject(96));
    AddObject('Соната-ТЛ-100-3/1Вт MINI исп.2 (1Вт)', TObject(91));
end;
 
//создание списка шума
with ComboBox2.Items do
  begin
    AddObject('Больница (40дБ)', TObject(40));
    AddObject('Магазин (30дБ)', TObject(30));
    AddObject('Учебные заведения (40дБ)', TObject(40));
    AddObject('Административные здания (50дБ)', TObject(50));
    AddObject('Предприятия торговли (60дБ)', TObject(60));
    AddObject('Вокзал / Аэропорт (60дБ)', TObject(60));
    AddObject('Спортивные залы (60дБ)', TObject(60));
    AddObject('Зрительные залы клубы/кинотеатры (40дБ)', TObject(40));
    AddObject('Фойе театров/кинотеатров (55дБ)', TObject(55));
    AddObject('Залы кафе/ресторанов/столовых (55дБ)', TObject(55));
    AddObject('Жилые помещения (50дБ)', TObject(50));
    AddObject('Культовые здания (40дБ)', TObject(40));
    AddObject('Автостоянка (крытая)(70дБ)', TObject(70));
    AddObject('Другое... (дб)', TObject(0));
  end;
end;
 
//Мигалка
 
//procedure TForm1.Timer1Timer(Sender: TObject);
//begin
 
  //Label12.Visible:=not Label12.Visible;
  //Label18.Visible:=not Label18.Visible;
 
//end;
 
//Выборка громкоговорителя настенного
 
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
Label1.Caption:=IntToStr(Integer(Combobox1.Items.Objects[Combobox1.ItemIndex]));
end;
 
//Выборка громкоговорителя потолочного
 
procedure TForm1.ComboBox3Change(Sender: TObject);
begin
Label37.Caption:=IntToStr(Integer(Combobox3.Items.Objects[Combobox3.ItemIndex]));
end;
 
//Выбор общего шума
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
Edit1.Text:=IntToStr(15+Integer(Combobox2.Items.Objects[Combobox2.ItemIndex]));
end;
 
// тип громкоговорителя
 
// потолочный
 
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
if RadioButton1.Enabled then
begin
ComboBox1.Hide
end;
end;
 
// настенный
 
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
if RadioButton2.Enabled then
begin
ComboBox3.Hide
end;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2015, 14:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Управление св-вом ComboBox.Enabled через RadioButton'ы (Delphi):

Управление кол-вом цифр после запятой в StringGrid - Delphi
Скажите, как управлять кол-вом цифр после запятой в ячейке компонента StringGrid?

Combobox и enabled - Delphi
Что-то я не вдуплил. Как скрыть или запретить некоторые пункты combobox? Подобие Combobox.items.enabled:=false;

Сохранить значение свойства Enabled Combobox в ini-файл - Delphi
драсти как сохранить настройки в ини файл enabled:=true? дайте соурс пожалуйста...

Управление скайпом через делфи - Delphi
вот пишу прогу которая должна смотреть за чатом..ну тоесть я хочу сделать так что если кто то меня добавит в конференцию когда открыта...

Управление CMD через Windows Form - Delphi
Здравствуйте, подскажите как реализовать управление консольным приложением через Windows Form... что-то я вообще въехать не могу как такое...

Управление программой delphi через командную строку - Delphi
Нужно написать программу которая будет принимать комманд щелчков например ~/project1.exe 600 800 (x:600, y:800), чтобы кликал по (600;800)

25
taras atavin
3883 / 1757 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
28.07.2015, 14:25 #2
Свойство enabled.
0
Goldkeyomsk
0 / 0 / 0
Регистрация: 27.04.2015
Сообщений: 26
28.07.2015, 14:34  [ТС] #3
где использовать это свойство?
0
Puporev
Модератор
53013 / 40824 / 14068
Регистрация: 18.05.2008
Сообщений: 94,958
28.07.2015, 14:43 #4
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
RadioButton2.Checked:=false;
Combobox1.Enabled:=true;
Combobox2.Enabled:=false;
end;
 
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
RadioButton1.Checked:=false;
Combobox2.Enabled:=true;
Combobox1.Enabled:=false;
end;
0
Goldkeyomsk
0 / 0 / 0
Регистрация: 27.04.2015
Сообщений: 26
28.07.2015, 15:01  [ТС] #5
что то как то не так.
я попробовал. значение меняется только для кнопки № 2

и то меняется в обратную сторону
0
Puporev
Модератор
53013 / 40824 / 14068
Регистрация: 18.05.2008
Сообщений: 94,958
28.07.2015, 15:09 #6
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.RadioButton1Click(Sender: TObject);//жмем первую кнопку
begin
RadioButton2.Checked:=false;//вторую выключаем
Combobox1.Enabled:=true;//первый комбобокс активен
Combobox2.Enabled:=false;//второй нет
end;
 
procedure TForm1.RadioButton2Click(Sender: TObject);//жмем вторую кнопу
begin
RadioButton1.Checked:=false;//первую выключаем
Combobox2.Enabled:=true;//второй комбобокс активен(опечатался первый раз)
Combobox1.Enabled:=false;//первый нет
end;
Что еще нужно?
0
taras atavin
3883 / 1757 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
28.07.2015, 16:11 #7
Цитата Сообщение от Goldkeyomsk Посмотреть сообщение
что то как то не так.
я попробовал. значение меняется только для кнопки № 2
и то меняется в обратную сторону
true - это активно, менять не у радиокнопок, а у самого комбобокса в обработчике радиокнопки.

Добавлено через 3 минуты
Цитата Сообщение от Puporev Посмотреть сообщение
RadioButton1.Checked:=false;
Это автоматизировано в самом классе радиокнопки: какую бы пользователь ни зачекил, а остальные отчекятся. Если часть радиокнопок в радокнопкогруппе, то именно они реагируют только друг на друга. В остальных случаях все на все.
0
Puporev
Модератор
53013 / 40824 / 14068
Регистрация: 18.05.2008
Сообщений: 94,958
28.07.2015, 16:13 #8
Цитата Сообщение от taras atavin Посмотреть сообщение
менять не у радиокнопок
У кнопок просто снимаю выделение, так как оно само, как в Radiogroup, не снимается.

Добавлено через 54 секунды
Цитата Сообщение от taras atavin Посмотреть сообщение
Это автоматизировано в самом классе радиокнопки: какую бы пользователь ни зачекил, а остальные отчекятся.
А вот и нет.
0
taras atavin
3883 / 1757 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
28.07.2015, 16:18 #9
Цитата Сообщение от Puporev Посмотреть сообщение
У кнопок просто снимаю выделение
Процитированное Вами - ответ ТСу.
Цитата Сообщение от Puporev Посмотреть сообщение
так как оно само, как в Radiogroup, не снимается.
Снимается и на панели и просто на форме.

Добавлено через 1 минуту
Цитата Сообщение от Puporev Посмотреть сообщение
А вот и нет.
Откуда же я об этом знаю? И почему тогда вообще нужны радиокнопки? Если отчекивать в обработчике, то можно обойтись обычным чекбоксом.

.
0
Puporev
Модератор
53013 / 40824 / 14068
Регистрация: 18.05.2008
Сообщений: 94,958
28.07.2015, 16:21 #10
taras atavin, Извини, был не прав. Что-то чекбоксы в голову залезли...
0
Goldkeyomsk
0 / 0 / 0
Регистрация: 27.04.2015
Сообщений: 26
29.07.2015, 06:35  [ТС] #11
Так то работает, но. Переключение возможно только 1 раз. несколько раз переключать невозможно
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
RadioButton2.Checked:=false;
Combobox1.Enabled:=false;
Combobox2.Enabled:=true;
end;
 
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
RadioButton1.Checked:=false;
Combobox2.Enabled:=true;
Combobox1.Enabled:=false;
end;
0
Puporev
Модератор
53013 / 40824 / 14068
Регистрация: 18.05.2008
Сообщений: 94,958
29.07.2015, 06:41 #12
Во первых написать нужно так
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
Combobox1.Enabled:=true;
Combobox2.Enabled:=false;
end;
 
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
Combobox2.Enabled:=true;
Combobox1.Enabled:=false;
end;
А во вторых переключается хоть 100500 раз...
0
Goldkeyomsk
0 / 0 / 0
Регистрация: 27.04.2015
Сообщений: 26
29.07.2015, 06:45  [ТС] #13
вот хоть убей. не переключается.
и в данном случае вообще radiobutton1 не работает
0
taras atavin
3883 / 1757 / 92
Регистрация: 24.11.2009
Сообщений: 27,566
29.07.2015, 06:48 #14
Покажи видео.
0
Puporev
Модератор
53013 / 40824 / 14068
Регистрация: 18.05.2008
Сообщений: 94,958
29.07.2015, 06:52 #15
Цитата Сообщение от taras atavin Посмотреть сообщение
Покажи видео.
Я не киномеханник...
Вот посмотри мой проектик.
0
Вложения
Тип файла: rar Радиобаттон.rar (164.7 Кб, 2 просмотров)
29.07.2015, 06:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2015, 06:52
Привет! Вот еще темы с ответами:

Управление непосредственно через элементы TreeView'а. Как? - Delphi
Здравствуйте) Я совсем недавно занимаюсь программированием на Delphi. Стоит задача написания "программы-справочника". Конкретно...

Дата через ComboBox - Delphi
привет, форумчане! на этом сайте нашел много интересного для себя и своей курсовой) но, появилась проблема, которую не могу никак...

Управление отдельного окна программы через свою программу - Delphi
Всем привет, у меня есть программа очень схожая с Delphi хочу попробовать как нибудь через свою программу управлять этой программой а это...

Написать код через ComboBox - Delphi
Cостатьве программу поиска в списке заданного слова Х (Делфи)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru