Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно
MKN MKN вне форума

Ветеран


Сообщения: 2355
Благодарности: 557

Профиль | Отправить PM | Цитировать


Цитата BuZzOFF:
На NSD можно сделать? »
Можно. Навскидку - так :

Код: Выделить весь код
!include "MUI2.nsh"
!include "CommCtrl.nsh"  ; из Спрвочника !
OutFile "LISTVIEW-CHECKBOXES.exe"
RequestExecutionLevel user
Page custom CreatePage
!insertmacro MUI_LANGUAGE "English"

Function CreatePage
!insertmacro MUI_HEADER_TEXT "LISTVIEW-CHECKBOXES" "LISTVIEW-CHECKBOXES"
nsDialogs::Create 1018
Pop $0
${NSD_CreateListView} 0u 0u 300u 120u "ListView"
Pop $1
SendMessage $1 ${LVM_SETBKCOLOR}     0 0xC7EDCC
SendMessage $1 ${LVM_SETTEXTBKCOLOR} 0 0xC7EDCC 
${NSD_LV_InsertColumn} $1 0 150 "Заголовок  - Столбец 1"
!define /math _LISTVIEW_TEMP_STYLE ${LVS_EX_CHECKBOXES} | ${LVS_EX_FULLROWSELECT}  
SendMessage $1 ${LVM_SETEXTENDEDLISTVIEWSTYLE} 0 ${_LISTVIEW_TEMP_STYLE} 
!undef _LISTVIEW_TEMP_STYLE
; =========================================================================
FileOpen $4 "$EXEDIR\myfile.txt" r
loop:
FileRead $4 $9 ; в $9 заносится содержимое строк из файла $4 ( построчно, с каждым циклом)
IntOp $R3 $R3 + 1  ; счетчик Item_ов
${NSD_LV_InsertItem} $1 $R3 "$9"  ; создание Item_ов в ListView
IfErrors +1 loop
FileClose $4
; =================================================================
  ; Установить состояние чекбоксов
  ${NSD_LV_SetCheckState} $1 0 1  ; отмечен
  ${NSD_LV_SetCheckState} $1 1 0  ; не отмечен
  ${NSD_LV_SetCheckState} $1 2 1  ; отмечен
  ; и т.д.
  ; кнопка контроля состояния чекбоксов
  ${NSD_CreateButton} 0u 124u 300u 15u "Проверка состояния чекбоксов" ;  
  Pop $2
  ${NSD_OnClick} $2 CheckItemState
  nsDialogs::Show
  System::Call `comctl32::ImageList_Destroy(iR0)`
FunctionEnd

Function CheckItemState
  ${NSD_LV_GetCheckState} $1 0 $R0
  ${NSD_LV_GetCheckState} $1 1 $R1
  ${NSD_LV_GetCheckState} $1 2 $R2
    ; и т.д.
  IntCmp $R0 1 0 +2
  StrCpy $R4 "$R4$\r$\n  отмечен 0"
  IntCmp $R1 1 0 +2
  StrCpy $R4 "$R4$\r$\n  отмечен 1"
  IntCmp $R2 1 0 +2
  StrCpy $R4 "$R4$\r$\n  отмечен 2"
    ; и т.д.
  MessageBox MB_OK|MB_ICONINFORMATION "$R4"
FunctionEnd

Section
SectionEnd
CheckItemState наверняка можно сделать универсальной для любого кол-ва Item_ов. Неохота заморачиваться...
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:24, 17-07-2015 | #1681