Вопрос № 121975: Уважаемые эксперты, вопрос у меня такой:
мне необходимо запускать моё приложение в моменты, когда пользователи входятвыходят и блокируютсяразблокируются на компьютере(ОС Windows 2000), как это реализовать?
заранее спасибо....Вопрос № 122079: Здраствуйте.
Каким образом можно отловить изменения checked у элементов (ListItem) TlistView, и получить этот самый элемент ListItem?...
Вопрос № 121.975
Уважаемые эксперты, вопрос у меня такой:
мне необходимо запускать моё приложение в моменты, когда пользователи входятвыходят и блокируютсяразблокируются на компьютере(ОС Windows 2000), как это реализовать?
заранее спасибо.
Отправлен: 06.02.2008, 17:57
Вопрос задал: Mauve (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: PavelGM
Здравствуйте, Mauve!
Для контроля на входе - прописаться в автозагрузку.
Для контроля на выходе - отлавливать WM_QUERYENDSESSION и, может быть, WM_POWERBROADCAST, если надо отследить самовыключение в StandBy.
Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 06.02.2008, 18:16 Оценка за ответ: 4
Вопрос № 122.079
Здраствуйте.
Каким образом можно отловить изменения checked у элементов (ListItem) TlistView, и получить этот самый элемент ListItem?
Отправлен: 07.02.2008, 13:06
Вопрос задал: Yujin (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Denisss
Здравствуйте, Yujin!
Хочу предложить Вам следующий способ:
Если какие-то значения ListView заполняются при редактировании формы в дизайнере, то сначала пропишите следующий код:
// Событие Form1.OnCreate procedure TForm1.FormCreate(Sender: TObject); var
i: Integer; begin with ListView1.Items do
for i:= 0 to Pred(Count) do
Item[i].Data:= Pointer(Item[i].Checked); end;
- данный код прописывает в переменную Data каждого пункта списка (TListItem) текущее значение Checked.
Добавление новых пунктов меню при выполнении программы (runtime) производите следующим образом:
ListView1.AddItem('newItem', TObject(False));
- данный код добавляет новый элемент (TListItem) в список и присваивает его переменной Data значение false.
Теперь остается только воспользоваться событием ListView.OnChange:
// Событие ListView1.OnChange procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem;
Change: TItemChange); begin
if (Change = ctState) then
if (Boolean(Item.Data) <> Item.Checked) then
begin
// Работаем с элементом, у которого изменилось свойство Checked
Label1.Caption:= Item.Caption;
// Меняем значение переменной Data
Item.Data:= Pointer(Item.Checked); end;
end;
Прим.:
Data пришлось использовать, т.к. событие ListView.OnChange с Change равным ctState происходит также и при выделении элементов списка.
Удачи! --------- Будь осторожен, когда молишься ради чего-то, потому что можешь это получить...
Ответ отправил: Denisss (статус: Профессионал) Россия, Москва ---- Ответ отправлен: 07.02.2008, 20:07 Оценка за ответ: 5 Комментарий оценки: Спасибо, за хороший ответ ps: другого способа я не нашел