• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 608
  • Last Modified:

Highlight list box when not focused in Delphi

In my Delphi 7 app I have a listbox and buttons to enable the user to move items up or down in the listbox. However, as soon as either button is clicked the highlight in the list box disappears. I would like to keep the highlight and have tried using SendMessge with the LB_SETCARETINDEX message but this does not work. The code is below and I would like to know how to get this to work.

procedure TfrmMain.cmdMoveUpClick(Sender: TObject);
var CurrIndex: integer;
begin
  with lstSelectedImages do
    if ItemIndex > 0 then begin
      CurrIndex:=ItemIndex;
      Items.Move(ItemIndex, (CurrIndex - 1));
      ItemIndex:=CurrIndex-1;
      SendMessage(lstSelectedImages.Handle, LB_SETCARETINDEX, ItemIndex, 0);
    end;
end;

Open in new window

0
galcott1
Asked:
galcott1
1 Solution
 
SteveBayCommented:
Try this. It works well for me.
procedure TForm1.btnMoveUpClick(Sender: TObject);
var Index : Integer;
begin
     if lst1.ItemIndex > 1 then
          begin
          Index := lst1.ItemIndex  -1;
          lst1.Items.Move(lst1.ItemIndex, Index);
          lst1.ItemIndex := Index;
          lst1.Selected[Index] := True;
          lst1.SetFocus
          end;
 
end;
 
procedure TForm1.btnMoveDnClick(Sender: TObject);
var Index : Integer;
begin
     if (lst1.ItemIndex > 0) and (lst1.ItemIndex < lst1.Items.Count -1) then
          begin
          Index := lst1.ItemIndex  +1;
          lst1.Items.Move(lst1.ItemIndex, Index);
          lst1.ItemIndex := Index;
          lst1.Selected[Index] := True;
          lst1.SetFocus
          end;
end;

Open in new window

0

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now