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

Показать сообщение отдельно

Аватара для K.A.V.

Ленивый кусок мяса


Contributor


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

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


Цитата BuZzOFF:
А ещё можно сделать так чтоб при выделении элемента отмечался/снимался CheckBox? »
Если хотите творить на NSIS "по-настоящему" - углубляйтесь в познание WinAPI (что такое сообщения/уведомления и т.д.) и будет вам счастье

Код: Выделить весь код
!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

${NSD_OnNotify} $1 OnClickListView

; =========================================================================
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




Function OnClickListView
  System::Store SR2R1R0
  ${Select} $R1
     ${Case} ${NM_CLICK} ; если событие - клик мыши
      SendMessage $R2 ${LVM_GETHOTITEM} 0 0 $0 ; узнаём, на какой элемент пользователь нажал
      ${NSD_LV_GetCheckState} $1 $0 $2  ; узнаём статус галочки - стоит или не стоит
      ${If} $2 == "1" ; если галочка стоит
          ${NSD_LV_SetCheckState} $1 $0 0 ; снимаем галочку
       ${Else}
          ${NSD_LV_SetCheckState} $1 $0 1 ; ставим галочку, если не стоит
      ${EndIf}   
  ${EndSelect}
  System::Store L
FunctionEnd



Section
SectionEnd

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:50, 17-07-2015 | #1690