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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2013, 20:09   #1
VladBallu
Пользователь
 
Аватар для VladBallu
 
Регистрация: 06.04.2013
Сообщений: 13
Вопрос Строки в CheckListBox

В целом дело обстоит так.
Написал небольшую программку, которая находит уязвимости в системе и выносит их список в CheckListBox1.
Как сделать так, чтобы именно выделенные галочкой строчки выполнялись?
Изображения
Тип файла: png Снимок.PNG (4.1 Кб, 60 просмотров)
Тип файла: png Снимок12.PNG (3.5 Кб, 56 просмотров)
Тип файла: jpg Снимок3.jpg (30.3 Кб, 122 просмотров)

Последний раз редактировалось VladBallu; 12.04.2013 в 20:13.
VladBallu вне форума Ответить с цитированием
Старый 12.04.2013, 20:27   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
with CheckListBox do
 for i:=0 to Count-1 do
  if Checked[i] then begin
   item[i] чекнутый
  end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.04.2013, 20:37   #3
VladBallu
Пользователь
 
Аватар для VladBallu
 
Регистрация: 06.04.2013
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
with CheckListBox do
 for i:=0 to Count-1 do
  if Checked[i] then begin
   item[i] чекнутый
  end;
А как примерно будет выглядить это? Допустим у меня 2 строки высветилось, я выделил первую и жму на "исправить". Тогда, что именно мне в кнопке "исправить" нужно прописать?

Цитата:
with CheckListBox do
for i:=0 to Count-1 do
if Checked[i] then begin
item[i] Checked then
begin
reg:= TRegistry.Create;
reg.RootKey:= HKEY_LOCAL_MACHINE;
reg.OpenKey('SYSTEM\CurrentControlS et\Services\Cdrom', True);
reg.WriteInteger('Autorun', 1);
reg.CloseKey;
end else begin
reg:= TRegistry.Create;
reg.RootKey:= HKEY_LOCAL_MACHINE;
reg.OpenKey('SYSTEM\CurrentControlS et\Services\Cdrom', True);
reg.WriteInteger('Autorun', 0);
reg.CloseKey;
Дополню. Количество строк у меня неизвестно, их может быть N количество, все зависит от того, сколько уязвимостей выявит программа в Системе.

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
with CheckListBox do
 for i:=0 to Count-1 do
  if Checked[i] then begin
   item[i] чекнутый
  end;
Точнее куда это прописать?

Последний раз редактировалось Stilet; 12.04.2013 в 21:05.
VladBallu вне форума Ответить с цитированием
Старый 12.04.2013, 21:19   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
я выделил первую и жму на "исправить".
Мдя... Алгоритм у тебя судя по всему гиблый.
Хочешь индокод? Ладно:
Код:

reg:= TRegistry.Create;
reg.RootKey:= HKEY_LOCAL_MACHINE;
reg.OpenKey('SYSTEM\CurrentControlS et\Services\Cdrom', True);

if CheckListBox.Checked[0] then  reg.WriteInteger('Autorun', 1);
else reg.WriteInteger('Autorun', 0);
reg.CloseKey;
А вообще смысл моего кода таков: Пройтись по списку, и если что-то выделено выполнить процедуру, согласно элементу
Список процедур можно хранить в свойстве Objects[] самого компонента. Тогда схема может быть следующей:
Код:
with CheckLB do begin
 AddItem('Автозагрузка',TObject(@Auto));
 AddItem('0-day',TObject(@Zerod));
 AddItem('Репорт ошибко',TObject(@Repa));
end;
Где Auto,Zerod,Repa допустим процедуры типа
Код:
procedure Auto(Checked:Boolean);
begin
with TRegistry.Create do begin
 RootKey:= HKEY_LOCAL_MACHINE;
 OpenKey('SYSTEM\CurrentControlS et\Services\Cdrom', True);
 if Checked then  WriteInteger('Autorun', 1);
 else WriteInteger('Autorun', 0);
 CloseKey; 
free;
end;
end;
Тогда мой пример приобретает следующий смысл:
Код:
type tp=procedure;
var p:tp;
...
with CheckListBox do
 for i:=0 to Count-1 do
  if Checked[i] then begin
   p:=tp(Objects[i]);
   p(Checked[i]);
  end;
Т.е. создать пул процедур-обработчиков, привязать их к списку, и вызывать для чекнутой строки свою привязанную процедуру.

Идея понятна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.04.2013, 22:59   #5
VladBallu
Пользователь
 
Аватар для VladBallu
 
Регистрация: 06.04.2013
Сообщений: 13
По умолчанию

Спасибо большое, буду пробовать.
В целом я понял что да как делать.
VladBallu вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
checklistbox Ackii Компоненты Delphi 3 17.07.2012 09:47
CheckListBox teres Общие вопросы Delphi 0 10.10.2011 18:08
CheckListBox BALLIN Помощь студентам 4 14.04.2010 11:37
CheckListBox jahongir007 Общие вопросы Delphi 4 07.06.2009 12:10
CheckListBox Програмное выделение строки Yuran Общие вопросы Delphi 3 01.08.2008 15:44