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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2014, 08:26   #1
Luchfan12
Пользователь
 
Регистрация: 01.03.2014
Сообщений: 37
По умолчанию Задача по delphi: изменять цвет формы и чтобы при снятии флажка с checkbox1 цвет формы был по умолчанию

Код:
unit U3_4;

interface

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

type
  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    procedure CheckBox1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure RadioButton1DblClick(Sender: TObject);
    procedure RadioButton3Click(Sender: TObject);
    procedure RadioButton4Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
RadioButton1.Enabled := True;
RadioButton2.Enabled := True;
RadioButton3.Enabled := True;
RadioButton4.Enabled := True;

if CheckBox1.Checked = False then
RadioButton1.Enabled := False;
if CheckBox1.Checked = False then
RadioButton2.Enabled := False;
if CheckBox1.Checked = False then
RadioButton3.Enabled := False;
if CheckBox1.Checked = False then
RadioButton4.Enabled := False;
end;




procedure TForm1.RadioButton1DblClick(Sender: TObject);
begin

  if CheckBox1.Checked = True then
   Form1.Color := clBtnFace;
end;

procedure TForm1.RadioButton2Click(Sender: TObject);
begin

  if CheckBox1.Checked = True then
  Form1.Color := clRed;

end;

procedure TForm1.RadioButton3Click(Sender: TObject);
begin

if CheckBox1.Checked = True then
   Form1.Color := clYellow;
end;

procedure TForm1.RadioButton4Click(Sender: TObject);
begin

if CheckBox1.Checked = True then
   Form1.Color := clGreen;
end;

end.
ВОПРОС: Как сделать так, чтобы только при значении checked = true цвет формы менялся. То есть мне нужно сделать так, чтобы при снятии флажка с checkbox1 цвет формы был по умолчанию




___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 13.03.2014 в 08:53.
Luchfan12 вне форума Ответить с цитированием
Старый 13.03.2014, 08:58   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так?
Код:
  if CheckBox1.Checked then
     Form1.Color := НужныйЦвет
  else
     Form1.Color :=  clBtnFace;  {цвет формы по умолчанию}
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.03.2014, 09:08   #3
Luchfan12
Пользователь
 
Регистрация: 01.03.2014
Сообщений: 37
По умолчанию

Не работает. При снятии галочки цвет формы не становится по умолчанию
Luchfan12 вне форума Ответить с цитированием
Старый 13.03.2014, 09:30   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Luchfan12 Посмотреть сообщение
Не работает. При снятии галочки цвет формы не становится по умолчанию
лень проект создавать с нуля!
Выложите архив с проектом (минимально достаточно архив с файлами U3_4.pas, U3_4.dfm)
посмотрим, что там не работает...


и можете с простым примером поиграться:
Project1source.rar
Project1exe.rar

Последний раз редактировалось Serge_Bliznykov; 13.03.2014 в 09:32.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.03.2014, 09:30   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

если все эти занимаются одним и тем же (меняют цвет) то для них логично написать общую процедуру
это может общий обработчик (см далее) либо одна процедура которя БУДЕТ вызываться изо всех заинтересованных(!) обработчиков.

1. назначаем всем заинтересованным (Checkbox1, RadioButton1, ..., RadioButtonN) один обработчик события OnClick
1.1. выделяем все вышеперечисленные
1.1.1. открываем форму (F12 показать/скрыть форму)
1.1.2. с зажатым Ctrl кликаем по перечисленным (check..., radio...)
1.2. назначаем всем один обработчик
1.2.1. переходим к ObjectInspector (F11)
1.2.2. находим на вкладке Events событие OnClick
1.2.3. задаем процедуру обработки события
1.2.3.1. выбираем из списка или создаем заново (DblClick)
1.3. редактируем данную процедуру

В ней мы проверяем ВСЕ перечисленные объекты и принимаем решение о цвете.
Код:
if checkbox1.checked then form1.color:=clBtnFace
else if radiobutton1.checked then form1.color:=clRed
else if ...
else form1.color:=clyellow; // на пользователя никогда нельзя полагаться вдруг он не отметит ничего
Вычислять цвет надо на основе ВСЕХ заинтересованных (!) и желательно это делать в одном месте программы!
один общий обработчик/ одна процедура

или функция form1.color:=CalcCheckedColor
вычисляем в одном месте (в функции СalccheckedColor !)
используем в о всех нужных обработчиках (т.е. там где возможно изменение наших отметок)
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 13.03.2014 в 09:42.
evg_m вне форума Ответить с цитированием
Старый 13.03.2014, 09:44   #6
Luchfan12
Пользователь
 
Регистрация: 01.03.2014
Сообщений: 37
По умолчанию

Можете посмотреть в чем проблема?
Вложения
Тип файла: rar 3_4.rar (173.3 Кб, 7 просмотров)
Luchfan12 вне форума Ответить с цитированием
Старый 13.03.2014, 10:04   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы на RadioButton1 (значение "по умолчанию") назначили ДВОЙНОЙ клик
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.03.2014, 10:09   #8
Luchfan12
Пользователь
 
Регистрация: 01.03.2014
Сообщений: 37
По умолчанию

Понял!Спасибо большое!
Luchfan12 вне форума Ответить с цитированием
Старый 13.03.2014, 10:14   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я бы ваш проект немножко изменил!


например, так: Pr3_4.rar
суть изменения:

Код:
unit U3_4;

interface

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

type
  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    procedure CheckBox1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure RadioButton3Click(Sender: TObject);
    procedure RadioButton4Click(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);

  private
    { Private declarations }
    FormColor : TColor;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  RadioButton1.Enabled := CheckBox1.Checked;
  RadioButton2.Enabled := CheckBox1.Checked;
  RadioButton3.Enabled := CheckBox1.Checked;
  RadioButton4.Enabled := CheckBox1.Checked;
  if CheckBox1.Checked then Form1.Color := FormColor
  else Form1.Color := clBtnFace;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FormColor := clBtnFace;
end;

procedure TForm1.RadioButton1Click(Sender: TObject);
begin
   FormColor := clBtnFace;
   Form1.Color :=  FormColor;
end;


procedure TForm1.RadioButton2Click(Sender: TObject);
begin
   FormColor := clRed;
   Form1.Color :=  FormColor;
end;

procedure TForm1.RadioButton3Click(Sender: TObject);
begin
  FormColor := clYellow;
  Form1.Color :=  FormColor;
end;

procedure TForm1.RadioButton4Click(Sender: TObject);
begin
  FormColor := clGreen;
  Form1.Color :=  FormColor;
end;


end.


p.s. а можно и в один обработчик все RadioButtonClick свести, как выше предлагалось.. Это обычно и проще и надежнее и удобнее!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
var Key Press Delphi - при нажатии на клавиши менять цвет формы Grimnir Помощь студентам 6 29.03.2013 12:00
Цвет шапки формы при изменении активности! carlozzz Компоненты Delphi 1 09.01.2012 15:58
Как задать для формы произвольный цвет фона, который отличается от установленного по умолчанию на С# phabion Общие вопросы .NET 2 21.04.2010 16:29
Заголовок Child формы имеет цвет неактивной формы, хотя форма активна? PrimaryPro Общие вопросы Delphi 0 12.03.2010 11:12
Каким образом можно изменять цвет фона и цвет шрифта в Label? jungle Win Api 17 21.09.2009 00:38