Здравствуйте! Такой вопрос. Как мне сделать так, чтобы когда я нажимаю на клавиатуре клавишу вверх или вниз, то послать на speedbutton1.click и speedbutton2.click соответственно? Мне нужно отследить нажатия на ListBox. А именно, когда пользователь выделяет какой-то элемент в списке и хочет перенести его вверх или вниз, то он просто нажимает клавишу вверх или вниз и удерживает её. У меня код для передвижения написан в обработчике щелчка Speedbutton1 и SpeedButton2. Вот код для перемещения:
| Код | private procedure DoMoveListItem(AKind: Boolean); . . . procedure TMainForm.DoMoveListItem(AKind: Boolean); var lIndex: Integer; begin lIndex := personslist.ItemIndex; if (lIndex >= 0) and (lIndex < personslist.Count) then begin case AKind of True: begin if lIndex > 0 then personslist.Items.Exchange(lIndex, lIndex - 1) else begin if MessageBox(handle,PChar('Переместить на последнюю строку?'), PChar('Master Codes'), 36) = mrYes then begin personslist.Items.Move(lIndex, personslist.Count - 1); personslist.ItemIndex := personslist.Count - 1; end; end; end; False: begin if lIndex < personslist.Count - 1 then personslist.Items.Exchange(lIndex, lIndex + 1) else begin if MessageBox(handle,PChar('Переместить на первую строку?'), PChar('Master Codes'), 36) = mrYes then begin personslist.Items.Move(lIndex, 0); personslist.ItemIndex := 0; end; end; end; end; end;
procedure TMainForm.SpeedButton1Click(Sender: TObject); begin DoMoveListItem(True); end;
procedure TMainForm.SpeedButton2Click(Sender: TObject); begin DoMoveListItem(false); end;
|
Заранее спасибо. |