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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2011, 00:43   #1
3BEPOBOY
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 82
По умолчанию Как дизактивировать объекты в зависимости от положения RadioButton

Доброй ночи, уважаемые знатоки.

Решил сделать следующую вещь:
чтобы при положении радио в 1ом и 2ом положении GroupBox с Editами был неактивный и серенький. Написалил действия, засунул под кнопочку, все работает. Стал думать куда их засунуть, чтобы активация/дезактивация происходила сразу при переключении RadioButton в RadioGroup и... дальше не сообразил пока(

А еще только что глянул на дерево формы, заметил что у меня все три RadioButton лежат не внутри Radiogroup, а все вместе прямо на форме. Это не очень хорошо, да?

Помогите пожалуйста разобраться.

P.S. А еще в названии темы ошибку грамматическую допустил.
Изображения
Тип файла: jpg Снимок.JPG (41.1 Кб, 102 просмотров)

Последний раз редактировалось 3BEPOBOY; 28.03.2011 в 00:46.
3BEPOBOY вне форума Ответить с цитированием
Старый 28.03.2011, 01:18   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

у RadioButton есть событие OnClick

Но в вашем случаее предпочтительно испротзовать RadioGroup + его событие OnChange в котором выполняется:
Код:
case RadioGroup1.Itemindex of
0:
begin
//Событие при тыке на 1 радиобатон
end; 
1:
begin
//Событие при тыке на 2 радиобатон
end; 
2:
begin
//Событие при тыке на 3 радиобатон
end; 
end;
Человек_Борща вне форума Ответить с цитированием
Старый 28.03.2011, 02:13   #3
Lem-ON
Пользователь
 
Аватар для Lem-ON
 
Регистрация: 18.05.2010
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
у RadioButton есть событие OnClick

Но в вашем случаее предпочтительно испротзовать RadioGroup + его событие OnChange в котором выполняется:
Код:
case RadioGroup1.Itemindex of
0:
begin
//Событие при тыке на 1 радиобатон
end; 
1:
begin
//Событие при тыке на 2 радиобатон
end; 
2:
begin
//Событие при тыке на 3 радиобатон
end; 
end;
ага, стандартное применение case)
Lem-ON вне форума Ответить с цитированием
Старый 29.03.2011, 13:30   #4
3BEPOBOY
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 82
Печаль

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Но в вашем случаее предпочтительно испротзовать RadioGroup + его событие OnChange в котором выполняется:
Я что-то не нашел у Radiogroup OnChange...
На удачу сунул в OnClick, не повезло)
Ну Case ни Case не принципиально. Мне как-то привычнее деревья if раскладывать.

Может все-таки в этом дело?
Цитата:
глянул на дерево формы, заметил что у меня все три RadioButton лежат не внутри Radiogroup, а все вместе прямо на форме.
3BEPOBOY вне форума Ответить с цитированием
Старый 29.03.2011, 14:24   #5
3BEPOBOY
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 82
По умолчанию

Вопрос конечно я свой решил, просто создал 3 штуки RadioButtonClick.

Но это не правильно как-то мне кажется... С GroupBox так и не разобрался. Зачем он мне вообще? хотя убирать не стал, рамочка. Симпатично.
3BEPOBOY вне форума Ответить с цитированием
Старый 29.03.2011, 17:15   #6
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
По умолчанию

Для тестирования проблемы полчаса назад набросал модуль для Form1, на ней radiogroup с тремя radiobutton'ами и groupbox с двумя Edit'ами. Суть в том, что при выборе radiobutton1 и radiobutton2 невозможно редактировать Edit'ы, а выбор radiobutton3 позволяет это делать:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    RadioGroup1: TRadioGroup;
    GroupBox1: TGroupBox;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure RadioGroup1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 groupbox1.Enabled:=false;
 radiogroup1.ItemIndex:=0;
end;

procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
 case radiogroup1.ItemIndex of
  0,1: begin
       groupbox1.Enabled:=false;
       end
 else
       begin
       groupbox1.Enabled:=true;
       end;
 end;
end;

end.
А сделать чего-то там сереньким можно и врукопашную...
Программирую по необходимости

Последний раз редактировалось tsar_; 29.03.2011 в 17:19.
tsar_ вне форума Ответить с цитированием
Старый 29.03.2011, 19:34   #7
3BEPOBOY
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 82
По умолчанию

эээ... Я не могу догнать что-то... А где в коде RadioButtonы? они как-то уже включены в Radiogroup что-ли?

У меня так получилось:
Код:
unit main;

interface

uses
  Unit1, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    RadioGroup1: TRadioGroup;
    RadioButton3: TRadioButton;
    Label1: TLabel;
    GroupBox1: TGroupBox;
    Label2: TLabel;
    Edit1: TEdit;
    Label3: TLabel;
    Edit2: TEdit;
    Button3: TButton;
    RadioButton2: TRadioButton;
    RadioButton1: TRadioButton;
    procedure RadioButton2Click(Sender: TObject);
    procedure RadioButton3Click(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

  procedure TForm1.Button3Click(Sender: TObject);
  begin
    go;
  end;
//-------------------------------------------------------
// Процедуры для обесцвечивания и дезактивации Radibutton
//-------------------------------------------------------
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
    GroupBox1.Enabled := false;
    GroupBox1.Font.Color:=clInactiveCaption;
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
    GroupBox1.Enabled := false;
    GroupBox1.Font.Color:=clInactiveCaption;
end;
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
    GroupBox1.Enabled := true;
    GroupBox1.Font.Color:=clblack;
end;
3BEPOBOY вне форума Ответить с цитированием
Старый 30.03.2011, 10:14   #8
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
По умолчанию

Я так понял, у тебя radiobutton'ы существуют отдельно, а radiogroup для красивой рамочки... А между тем radiogroup должен являться контейнером для radiobutton'ов и через него должен осуществляться доступ к ним.
Слушай же:
1) Создаешь radiogroup1;
2) Лезешь в Object Inspector, находишь свойство Items и тыкаешь по |...|;
3) В появившемся текстовом редакторе задаешь названия самих radiobutton'ов. Помни: название для одного radiobutton'а располагай на одной строке. Таким образом, сколько строк сделаешь, столько и будет у тебя radiobutton'ов.
4) radiobutton'ы нумеруются с нуля. Доступ к ним через radiogroup осуществляется его свойством ItemIndex;
5) Если необходимо, чтобы при создании формы какой-либо из radiobutton'ов (например, первый) был уже помечен, нужно в обработчике события OnCreate для формы написать
Код:
radiogroup1.ItemIndex:=0;
если же нужно, чтобы ни один radiobutton не был помечен, нужно в этом коде нолик заменить на (-1).
Вроде описал базовое. Пересмотри еще раз приеденный мной код.
Программирую по необходимости
tsar_ вне форума Ответить с цитированием
Старый 30.03.2011, 10:49   #9
3BEPOBOY
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 82
По умолчанию

Воот! я 3 раза переспрашивал насчет того что radiobuttonы лежат отдельно, никто внимания не обратил)
Спасибо большой за подробный ответ!
3BEPOBOY вне форума Ответить с цитированием
Старый 30.03.2011, 10:54   #10
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
По умолчанию

Рад, что помогло
Программирую по необходимости
tsar_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача текста в textarea в зависимости от выбора radiobutton AndreiN JavaScript, Ajax 2 24.03.2011 19:19
Как связать 3 кнопки, Radiobutton и Access GrMouse Общие вопросы Delphi 2 21.03.2011 02:24
Формировать DataSource и DataField динамически в зависимости от RadioButton (Delphi) Gover Помощь студентам 0 28.03.2010 21:18
Как программно выделить нужный RadioButton? bafy Компоненты Delphi 1 17.02.2009 11:38
Delphi. RadioButton. Как оно работает? :) R11 Помощь студентам 20 10.01.2008 11:10