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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2010, 20:08   #1
krikaved
Пользователь
 
Регистрация: 26.02.2010
Сообщений: 66
По умолчанию Параметры cxCheckComboBox1 в INI файл

Как сохранять и загружать параметры компоненты cxCheckComboBox1 с помощью INI файла?
Код:
  with cxCheckComboBox1 do
       begin
         States[0]:=cbsChecked;
         States[1]:=cbsChecked;
         States[2]:=cbsChecked;
         States[3]:=cbsChecked;
         States[4]:=cbsChecked;
       end;
krikaved вне форума Ответить с цитированием
Старый 04.05.2010, 22:28   #2
CraZZZy-GameRRR
Пользователь
 
Регистрация: 15.04.2010
Сообщений: 98
По умолчанию

Работа с INI-файлами в Delphi: http://www.codenet.ru/progr/delphi/stat/ini-files.php
CraZZZy-GameRRR вне форума Ответить с цитированием
Старый 04.05.2010, 22:55   #3
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Никак ! Храни в INI-шке булевский тип, а в проге делай соответствие.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 05.05.2010, 09:46   #4
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

можно например так
на счет "tcxcheckboxstates" могу ошибаться в написании
var
ini:tinifile;
begin
ini.writeinteger('bla','bla',intege r(cxCheckComboBox1.States[0]));
cxCheckComboBox1.States[0]:=tcxcheckboxstates(ini.readinteger ('bla','bla',0));
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Старый 05.05.2010, 21:37   #5
krikaved
Пользователь
 
Регистрация: 26.02.2010
Сообщений: 66
По умолчанию

Код:
...
  public
    DayOfWeek: boolean;
...
В одной процедуре я делаю так:
Код:
DayOfWeek := cxCheckComboBox1.States[0] = cbsChecked;
А в другой процедуре мне нужно сделать вот так:
Код:
(cxCheckComboBox1.States[0] = cbsChecked) := DayOfWeek; // ошибка!!!
Как быть?
krikaved вне форума Ответить с цитированием
Старый 05.05.2010, 22:44   #6
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Код:
if DayOfWeek 
   then cxCheckComboBox1.States[0] := cbsChecked 
   else cxCheckComboBox1.States[0] := cbsUnchecked;
Ты не выжмешь из этих компонентов более того, чем они дают ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 07.05.2010, 04:21   #7
krikaved
Пользователь
 
Регистрация: 26.02.2010
Сообщений: 66
По умолчанию

Можно хранить в INI-шке как булевский тип, так и типа Integer.
У меня есть две процедуры GetData и SetData. Я туда записываю все значения и не только для DayOfWeek. А потом уже загоняю значения в INI файл.
Вопрос: В приведённом ниже коде в INI файл сохраняется именно для DayOfWeek только одно значение. А как сделать, чтобы сохранились несколько выбранных значений для DayOfWeek (например checked Понедельник, Вторник и Среда). Я мог бы использовать 7 переменных DayOfWeek (DayOfWeek1, DayOfWeek2, DayOfWeek3 и т.д.), чтобы хранить для каждой переменной своё значение. Но это нерационально!
Подскажите как можно используя одну переменную DayOfWeek хранить несколько выбранных значений?
Код:
procedure TF_Timer.GetData(Work: TWork);
begin
  with Work do
  begin
    ...
    if cxCheckComboBox1.States[0] = cbsChecked then DayOfWeek := 1;
    if cxCheckComboBox1.States[1] = cbsChecked then DayOfWeek := 2;
    if cxCheckComboBox1.States[2] = cbsChecked then DayOfWeek := 3;
    if cxCheckComboBox1.States[3] = cbsChecked then DayOfWeek := 4;
    if cxCheckComboBox1.States[4] = cbsChecked then DayOfWeek := 5;
    if cxCheckComboBox1.States[5] = cbsChecked then DayOfWeek := 6;
    if cxCheckComboBox1.States[6] = cbsChecked then DayOfWeek := 7;
    ...
    end;
end;

procedure TF_Timer.SetData(Work: TWork);
begin
  with Work do
  begin
    ...
       case DayOfWeek of
      1:
        cxCheckComboBox1.States[0] := cbsChecked;
      2:
        cxCheckComboBox1.States[1] := cbsChecked;
      3:
        cxCheckComboBox1.States[2] := cbsChecked;
      4:
        cxCheckComboBox1.States[3] := cbsChecked;
      5:
        cxCheckComboBox1.States[4] := cbsChecked;
      6:
        cxCheckComboBox1.States[5] := cbsChecked;
      7:
        cxCheckComboBox1.States[6] := cbsChecked;
       end;
    ...
  end;
end; 

procedure TWork.LoadFromIniFile(IniFile: TIniFile; const Section: string);
begin
  with IniFile do
  begin
    DayOfWeek := ReadInteger(Section, 'DayOfWeek', DayOfWeek);
    ...
  end;
end;

procedure TWork.SaveToIniFile(IniFile: TIniFile; const Section: string);
begin
  with IniFile do
  begin
    WriteInteger(Section, 'DayOfWeek', DayOfWeek);
    ...
  end;
end;
krikaved вне форума Ответить с цитированием
Старый 07.05.2010, 07:51   #8
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Цитата:
Подскажите как можно используя одну переменную DayOfWeek хранить несколько выбранных значений?
Если для хранения какого-то значения хватает 2-х состояний (как в boolean типе), то можешь использовать биты. Т.е.:
Код:
var
DayOfWeek: byte; // к примеру
...
...
    if cxCheckComboBox1.States[0] = cbsChecked then DayOfWeek := DayOfWeek and 1; // установили 1-й бит
    if cxCheckComboBox1.States[0] = cbsChecked then DayOfWeek := DayOfWeek and 2; // установили 2-й бит
    if cxCheckComboBox1.States[0] = cbsChecked then DayOfWeek := DayOfWeek and 4; // установили 3-й бит
    if cxCheckComboBox1.States[0] = cbsChecked then DayOfWeek := DayOfWeek and 8; // установили 4-й бит
    if cxCheckComboBox1.States[0] = cbsChecked then DayOfWeek := DayOfWeek and 16; // установили 5-й бит
    if cxCheckComboBox1.States[0] = cbsChecked then DayOfWeek := DayOfWeek and 32; // установили 6-й бит
    if cxCheckComboBox1.States[0] = cbsChecked then DayOfWeek := DayOfWeek and 64; // установили 7-й бит
    if cxCheckComboBox1.States[0] = cbsChecked then DayOfWeek := DayOfWeek and 128; // установили 8-й бит
Итак, у нас сохранено 8 (например) значений (true,false ну или 0,1 - как угодно).
После чтения DayOfWeek из INI можно примерно так :
Код:
    if (DayOfWeek and 1) then cxCheckComboBox1.States[0] = cbsChecked else cxCheckComboBox1.States[0] = cbsUnChecked;
... ну и так далее по аналогии ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
INI файл! Stranger333 Помощь студентам 5 14.03.2010 19:07
Ini файл Baaandit Общие вопросы Delphi 8 23.11.2009 14:30
ini файл cheef Общие вопросы Delphi 5 28.04.2009 07:36
ini файл Simply-Art Общие вопросы Delphi 3 17.06.2007 14:43
сохранить параметры шрифта в текстовый файл Allexandr Общие вопросы Delphi 2 24.02.2007 11:04