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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2014, 14:31   #1
kabardinec
Пользователь
 
Регистрация: 10.01.2014
Сообщений: 59
Восклицание Вывод ключей реестра в виде checkbox'в

Люди, помогите разобраться..
Есть код, который выводит ключи реестра в столбик.. т.е.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var reg:tregistry;
 
begin
  reg:= tregistry.create;
    reg.Access:= KEY_WOW64_64KEY or KEY_ALL_ACCESS;
 
Begin
 reg := TRegistry.Create;
 With reg Do
 Begin
   Rootkey := HKEY_Current_User;
   If OpenKey('\Console', True) Then
   Begin
     GetValueNames(Form1.ListBox1.Items);
   End;
   CloseKey;
 End;
end;
 end;
Вопрос: как сделать так, чтобы эти ключи выводились с checkbox'ами в списке?
Сколько не рылся в Яндексе и Гугле, ниче похожего и близкого не нашел, и сам не могу додуматься

Последний раз редактировалось Stilet; 10.01.2014 в 17:17.
kabardinec вне форума Ответить с цитированием
Старый 10.01.2014, 14:54   #2
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
По умолчанию

Вместо ListBox использовать CheckListBox.
Программирую по необходимости
tsar_ вне форума Ответить с цитированием
Старый 10.01.2014, 15:07   #3
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,051
По умолчанию

1. Оформляйте сообщение как полагается, а именно - вставляйте код в [ CODE] [ /CODE]
2. GetValueNames(Form1.CheckListBox1.I tems) ;
Noor вне форума Ответить с цитированием
Старый 10.01.2014, 15:30   #4
kabardinec
Пользователь
 
Регистрация: 10.01.2014
Сообщений: 59
По умолчанию

О люди добрые... сколько я мучился....с этим..ппц просто...прям гора с плеч..спасибо!
Пользуясь случаем.. скажите пожалуйста...
А как эти Чеки запрограммировать, если заранее не известно сколько их там будет?
Просто код будет использоваться на нескольких ветках реестра и на разных компах..
В программировании я новичок-самоучка, поэтому такие простые глупые вопросы..

Цитата:
Сообщение от kabardinec Посмотреть сообщение
О люди добрые... сколько я мучился....с этим..ппц просто...прям гора с плеч..спасибо!
Пользуясь случаем.. скажите пожалуйста...
А как эти Чеки запрограммировать, если заранее не известно сколько их там будет?
Просто код будет использоваться на нескольких ветках реестра и на разных компах..
В программировании я новичок-самоучка, поэтому такие простые глупые вопросы..
Вопрос снимаю... разобрался!!!!!!

Цитата:
Сообщение от Noor Посмотреть сообщение
1. Оформляйте сообщение как полагается, а именно - вставляйте код в [ CODE] [ /CODE]
2. GetValueNames(Form1.CheckListBox1.I tems) ;
Подскажите пожалуйста.. Не могу разобраться с циклом во второй процедуре.. Нужно, чтобы выделенные чеки (это параметры реестра) по нажатию batton2 удалялись. А щас по нажатию удаляется только последний по счету выбранный, если выбрано несколько...

Код:
procedure TForm1.Button1Click(Sender: TObject);
const KEY_WOW64_64KEY = $0100;
var
    regOS: tregistry;


  begin
   CheckListBox1.Clear;
    regOS := tregistry.create;
    regOS.Access:= KEY_WOW64_64KEY or KEY_ALL_ACCESS;
 begin
 regOS := TRegistry.Create;
 With regOS Do
 Begin
      regOS.RootKey:=HKEY_CURRENT_USER;
      regOS.OpenKey('Test',true);
      GetValueNames(Form1.CheckListBox1.Items);
  end;
End;
 end;


 procedure TForm1.Button2Click(Sender: TObject);
 var  Str:string;
      i : integer;
      reg:Tregistry;

begin
reg := tregistry.create;
  try
  reg.RootKey:=HKEY_CURRENT_USER;
  reg.OpenKey('Test',true);
         begin
            for i:=0 to CheckListBox1.Items.Count-1 do    { Запускается цикл}
            if CheckListBox1.Checked[i] then        {Если i-й элемент выделен то …}
            Str:=CheckListBox1.Items[i];    {Добавить в строку Str текст элемента}
            reg.DeleteValue (Str);

          end;

  finally
    reg.free;
  end;
end;

Последний раз редактировалось Stilet; 10.01.2014 в 22:28.
kabardinec вне форума Ответить с цитированием
Старый 10.01.2014, 18:51   #5
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,051
По умолчанию

Вы проверяли, что у вас передается в переменную Srt ?
Noor вне форума Ответить с цитированием
Старый 10.01.2014, 18:56   #6
kabardinec
Пользователь
 
Регистрация: 10.01.2014
Сообщений: 59
По умолчанию

судя по тому, как программа работает, передается только последний отмеченный...

Цитата:
Сообщение от kabardinec Посмотреть сообщение
судя по тому, как программа работает, передается только последний отмеченный...
ох..сорри.. выбирается наименьший.. если параметры 1, 2, 3 отмечены, выберет 1 и только его.

Цитата:
Сообщение от kabardinec Посмотреть сообщение
судя по тому, как программа работает, передается только последний отмеченный...
Если в цикле более одной инструкции, тело цикла следует заключать в рамки begin..end

все! от души братан!

Цитата:
Сообщение от northener Посмотреть сообщение
Если в цикле более одной инструкции, тело цикла следует заключать в рамки begin..end
Спасибо! Работает! а вопрос такой.. можно ли как-нибудь совместить stringGrid и checklistbox? точнее...нужно чтобы в stringGrid выводился параметры реестра в виде checkbox'ов.. думаю с GetValueName реализовать не выйдет..а с помощью задания цикла, который каждый раз будет обращаться в реестр и будет добавлять в StringGrid параметры по одиночке и в виде CheckBox'ов.. Вопрос: КАК?

Последний раз редактировалось Stilet; 10.01.2014 в 22:33.
kabardinec вне форума Ответить с цитированием
Старый 10.01.2014, 21:40   #7
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Сообщение от kabardinec Посмотреть сообщение
Спасибо! Работает! а вопрос такой.. можно ли как-нибудь совместить stringGrid и checklistbox? точнее...нужно чтобы в stringGrid выводился параметры реестра в виде checkbox'ов.. думаю с GetValueName реализовать не выйдет..а с помощью задания цикла, который каждый раз будет обращаться в реестр и будет добавлять в StringGrid параметры по одиночке и в виде CheckBox'ов.. Вопрос: КАК?
TStringGrid рекомендуется заменить на TListView в режиме ViewStyle = vsReport. Чекбоксы в нем свои родные.
northener вне форума Ответить с цитированием
Старый 10.01.2014, 21:49   #8
kabardinec
Пользователь
 
Регистрация: 10.01.2014
Сообщений: 59
По умолчанию

а..там вариант потом будет к элементам списка по одиночке обратиться? просто хочу так сделать... есть 2 колонки.. в первой параметры реестра, во второй ее значение...
kabardinec вне форума Ответить с цитированием
Старый 10.01.2014, 22:22   #9
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Сообщение от kabardinec Посмотреть сообщение
а..там вариант потом будет к элементам списка по одиночке обратиться? просто хочу так сделать... есть 2 колонки.. в первой параметры реестра, во второй ее значение...
Будет. Всё будет (кроме коньяка и девок в ажурных чулках
northener вне форума Ответить с цитированием
Старый 10.01.2014, 23:26   #10
kabardinec
Пользователь
 
Регистрация: 10.01.2014
Сообщений: 59
По умолчанию

Упсо братишка
kabardinec вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование ключей реестра {Shadowevil} Общие вопросы Delphi 7 11.04.2019 22:44
Вывод CheckBox в DBGrid ramsesjol БД в Delphi 0 14.06.2013 14:25
Checkbox в виде кнопки S@fer Компоненты Delphi 4 02.07.2009 13:30
Требуется программным путём считать несколько ключей с реестра из одного раздела. Air Общие вопросы Delphi 6 11.09.2008 11:33
Удаление ключей и параметров из реестра... Altera Общие вопросы Delphi 1 06.05.2008 20:32