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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2010, 03:44   #1
krikaved
Пользователь
 
Регистрация: 26.02.2010
Сообщений: 66
По умолчанию Работа с компонентой RzCheckList1

Есть компонента RzCheckList1. В него добавляю строки дней недели:
Код:
RzCheckList1.Items.Add('Понедельник');
RzCheckList1.Items.Add('Вторник');
RzCheckList1.Items.Add('Среда');
...
Если стоит галочка (checked) на Понедельник и если сегодня Понедельник выполныется какое-то действие, например открывается какая-то программа, если сегодня не понедельник, то ничего не выполняется.
Как это реализовать подскажите пожалуйста?
krikaved вне форума Ответить с цитированием
Старый 16.03.2010, 08:34   #2
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Попробуй так :
Код:
function NumDayOfWeek: integer;// день недели 1..7
var
  AddVal : shortint;
  yyyy, mm, dd:word;
begin
  DecodeDate(Now, yyyy, mm, dd);// "раскладываем" сегодняшнюю дату
  if mm < 3 then AddVal := 1 else AddVal := 0;
  Result := (((4*yyyy-(7*(yyyy+(mm+9) div 12)) div 4+(23*mm) div 9+dd+2+((yyyy-AddVal) div 100+1)*3 div 4-16) mod 7));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  with RzCheckList1 do // делаем наш список
    begin
    Add('Понедельник');
    Add('Вторник');
    Add('Среда');
    Add('Четверг');
    Add('Пятница');
    Add('Суббота');
    Add('Воскресенье');
    end;
end;

procedure TForm1.RzButton1Click(Sender: TObject);
begin
  if RzCheckList1.ItemChecked[NumDayOfWeek-1] then ShowMessage('Опа !   Сегодня - ' + RzCheckList1.Items[NumDayOfWeek-1]);
end;
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 16.03.2010, 20:56   #3
krikaved
Пользователь
 
Регистрация: 26.02.2010
Сообщений: 66
По умолчанию

Спасибо большое Kotofff!!!
А теперь я взял вместо RzCheckList1 и попробовал с помощью компоненты cxCheckComboBox1. Вот только есть одна проблема: почему-то когда в объекте инспекторов ставлю галочки для набранных полей (свойство States) галочки видны, а после компиляции - нет. Как хоты бы по OnCreate сделать checked для одного поля? ItemChecked или что-то подобное у cxCheckComboBox1 нет!
Код:
cxCheckComboBox1.ItemChecked[1]; // неверно
krikaved вне форума Ответить с цитированием
Старый 17.03.2010, 08:02   #4
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Вот так все вроде пашет :
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  cxCheckComboBox1.States[0] := cbsChecked;// выставляем первый элемент
end;
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 17.03.2010, 19:38   #5
krikaved
Пользователь
 
Регистрация: 26.02.2010
Сообщений: 66
По умолчанию

Да спасибо, пашет! А почему когда на другой (главной) форме, где нет cxCheckComboBox1 задаёшь условие, то пишет ошибку Undeclared identifier: 'cbsChecked'?
IF Form2.cxCheckComboBox1.States[NumDayOfWeek-1]=cbsChecked then
BEGIN
...
END;
krikaved вне форума Ответить с цитированием
Старый 17.03.2010, 20:16   #6
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

А потому что на этой форме нет чекбокса. нужно тогда писать:

Код:
IF Form1.cxCheckComboBox1.States[NumDayOfWeek-1]=cbsChecked then
BEGIN
...
END;
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 17.03.2010, 20:26   #7
krikaved
Пользователь
 
Регистрация: 26.02.2010
Сообщений: 66
По умолчанию

Цитата:
Сообщение от Marsel737 Посмотреть сообщение
А потому что на этой форме нет чекбокса. нужно тогда писать:

Код:
IF Form1.cxCheckComboBox1.States[NumDayOfWeek-1]=cbsChecked then
BEGIN
...
END;

Я всё правильно написал по поводу какой формы, cxCheckComboBox1 у меня на Form2! Form1 - главная форма!
krikaved вне форума Ответить с цитированием
Старый 05.04.2010, 19:56   #8
krikaved
Пользователь
 
Регистрация: 26.02.2010
Сообщений: 66
По умолчанию

Цитата:
Сообщение от Kotofff Посмотреть сообщение
Попробуй так :
Код:
function NumDayOfWeek: integer;// день недели 1..7
var
  AddVal : shortint;
  yyyy, mm, dd:word;
begin
  DecodeDate(Now, yyyy, mm, dd);// "раскладываем" сегодняшнюю дату
  if mm < 3 then AddVal := 1 else AddVal := 0;
  Result := (((4*yyyy-(7*(yyyy+(mm+9) div 12)) div 4+(23*mm) div 9+dd+2+((yyyy-AddVal) div 100+1)*3 div 4-16) mod 7));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  with RzCheckList1 do // делаем наш список
    begin
    Add('Понедельник');
    Add('Вторник');
    Add('Среда');
    Add('Четверг');
    Add('Пятница');
    Add('Суббота');
    Add('Воскресенье');
    end;
end;

procedure TForm1.RzButton1Click(Sender: TObject);
begin
  if RzCheckList1.ItemChecked[NumDayOfWeek-1] then ShowMessage('Опа !   Сегодня - ' + RzCheckList1.Items[NumDayOfWeek-1]);
end;
Когда реальный день недели Воскресенье, то при нажатии на RzButton1 происходит такая ошибка:
Индекс списка вышел за границы (-1).
В чём причина?
krikaved вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при работе с компонентой Нюська Компоненты Delphi 12 27.05.2009 00:35
Помогите с компонентой Panel Ellita Компоненты Delphi 8 28.09.2007 11:35
Какой компонентой можно загрузить Tif RafKil Общие вопросы Delphi 0 30.03.2007 08:12
Проблемма с компонентой TMainMenu Nik_K Компоненты Delphi 2 05.02.2007 22:25