Auf die Änderung der Auswahl einer Listbox reagieren


Hier benutzen wir wieder die Nachricht "WM_COMMAND". Im höherwertigen Wort von wParam befindet sich die Listbox-Nachricht "LBN_SELCHANGE", die ausgelöst wird wenn die Auswahl des Listenfeldes ändert. (Andere Benachrichtigungscodes finden Sie in der Hilfe und im MSDN.) Im niederwertigen Wort von wParam befindet sich der Bezeichner des betreffenden Listenfeldes.

WM_COMMAND:
  case hiword(wParam) of
    LBN_SELCHANGE:
      case LoWord(wParam) of
        IDC_LB:
          begin
          end;
      end;
  end;


Zu Demonstrationszwecken benutze ich hier einmal "LB_GETSEL" um den Status eines Eintrages abzufragen. Die Alternative wäre wieder "LB_GETSELCOUNT".

Items := SendMessage(hwndListbox, LB_GETCOUNT, 0, 0);
for i := 0 to Items do
  if SendMessage(hwndListbox, LB_GETSEL, i, 0) > 0 then
  begin
    Inc(SelItems);
    wvsprintf(buffer1, 'davon markiert: %d', PChar(@SelItems));
    lstrcpy(buffer, buffer1);
  end;