Results 1 to 6 of 6

Thread: Easylistview KeyAction

  1. #1
    Win32.Trojan.Heur.Herby
    Join Date
    Dec 2003
    Location
    Nuenen of all places
    Posts
    289

    Easylistview KeyAction

    Hoi

    Ik gebruik EasyListView, deze vul ik met items en middels muis click (ItemDblCLick) werkt dit prima.
    Nu wil ik dit ook dat deze reageert op enter toets, maar ik heb geen idee hoe ik dit moet doen.
    KeyAction is de enige Key mogelijkheid die er is, geen KeyPress/KeyUp/KeyDown etc.

    Kan iemand me een zetje in de juiste richting geven?
    Alvast bedankt


    Code:
    procedure TDirecFrame.FileListviewItemDblClick(Sender: TCustomEasyListview; Button: TCommonMouseButton; MousePos: TPoint; HitInfo: TEasyHitInfoItem);
    var
      SelectedItem : TEasyItem;
    begin
      SelectedItem := HitInfo.Item;
      if SelectedItem = nil then                                                           
        exit
      else
        begin
           do stuff;
        end;
    
    
    procedure TDirecFrame.FileListviewKeyAction(Sender: TCustomEasyListview; var CharCode: Word; var Shift: TShiftState; var DoDefault: Boolean);
    begin
      case CharCode of
        vk_Return     : DblClick; <-- deze kan ik zonder problemen toevoegen maar dat wil ik niet
        vk_Return     : ItemDblClick <-- hoe doe ik dit?
    
      end;
    
    end;

  2. #2
    Is de EasyListView een 3rd party component? Ik wil wel eens kijken

  3. #3
    Win32.Trojan.Heur.Herby
    Join Date
    Dec 2003
    Location
    Nuenen of all places
    Posts
    289
    ja is van TurboPack en staat in GetIt, gebruik de Community Edition hier.
    Kan eventueel wel even een test zipje maken als dat makkelijk is?

    Bedankt

  4. #4
    Win32.Trojan.Heur.Herby
    Join Date
    Dec 2003
    Location
    Nuenen of all places
    Posts
    289
    Heb even een test zipje gemaakt en toegevoegd.

    TestELV.zip

  5. #5
    Nou je Enter key capture je netjes daar. Alleen probeer je de event van de DoubleClick direct uit te voeren zonder de juiste variabelen mee te geven. Ik weet niet of er zoiets als een "selected" property is op die listview (neem aan van wel) dan zou je zoiets kunnen doen:
    Delphi Code:
    1. unit uTestELV;
    2.  
    3. interface
    4.  
    5. uses
    6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    7.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, MPCommonObjects, MPCommonUtilities, EasyListview;
    8.  
    9. type
    10.   TForm1 = class(TForm)
    11.     ELV: TEasyListview;
    12.     Memo: TMemo;
    13.     procedure FormCreate(Sender: TObject);
    14.     procedure ELVItemDblClick(Sender: TCustomEasyListview; Button: TCommonMouseButton; MousePos: TPoint; HitInfo: TEasyHitInfoItem);
    15.     procedure ELVKeyAction(Sender: TCustomEasyListview; var CharCode: Word; var Shift: TShiftState; var DoDefault: Boolean);
    16.   private
    17.     { Private declarations }
    18.   public
    19.     { Public declarations }
    20.     procedure DoOnSelectItem(SelectedItem: TEasyItem);
    21.   end;
    22.  
    23. var
    24.   Form1: TForm1;
    25.  
    26. implementation
    27.  
    28. {$R *.dfm}
    29.  
    30. procedure TForm1.DoOnSelectItem(SelectedItem: TEasyItem);
    31. begin
    32.   Memo.Lines.Add( 'Selected : ' +
    33.                   SelectedItem.Captions[0] + '    ' +
    34.                   SelectedItem.Captions[1]
    35.                 );
    36. end;
    37.  
    38. procedure TForm1.ELVItemDblClick(Sender: TCustomEasyListview; Button: TCommonMouseButton; MousePos: TPoint; HitInfo: TEasyHitInfoItem);
    39. begin
    40.   if Assigned(HitInfo.Item) then
    41.     DoOnSelectItem(HitInfo.Item);
    42. end;
    43.  
    44. procedure TForm1.ELVKeyAction(Sender: TCustomEasyListview; var CharCode: Word; var Shift: TShiftState; var DoDefault: Boolean);
    45. begin
    46.   if CharCode = VK_RETURN then
    47.   if Assigned(ELV.Selected) then
    48.   DoOnSelectItem(ELV.Selected);
    49. end;
    50.  
    51. procedure TForm1.FormCreate(Sender: TObject);
    52. var
    53.   i : integer;
    54. begin
    55.   for i := 0 to 25 do
    56.     with ELV.Items.Add do
    57.       begin
    58.         Captions[0] := 'COL1 - Item ' + IntToStr (I);
    59.         Captions[1] := 'COL2 - Item ' + IntToStr (I);
    60.       end;
    61. end;
    62.  
    63. end.

    Ik heb deze components zelf niet geinstalleerd en krijg die zo snel niet erin hehe, maar als je een property hebt waar de selected item in staat kan je die uitlezen en meegeven vanuit de ELVKeyAction.

  6. #6
    Win32.Trojan.Heur.Herby
    Join Date
    Dec 2003
    Location
    Nuenen of all places
    Posts
    289
    Kleine aanpassing doorgevoerd in de OnKeyAction.
    Geen idee of dit zo hufterproof is maar het werkt wel ;-)

    Code:
    unit uTestELV;
    
    interface
    
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, MPCommonObjects, MPCommonUtilities, EasyListview;
    
    type
      TForm1 = class(TForm)
        ELV: TEasyListview;
        Memo: TMemo;
        procedure FormCreate(Sender: TObject);
        procedure ELVItemDblClick(Sender: TCustomEasyListview; Button: TCommonMouseButton; MousePos: TPoint; HitInfo: TEasyHitInfoItem);
        procedure ELVKeyAction(Sender: TCustomEasyListview; var CharCode: Word; var Shift: TShiftState; var DoDefault: Boolean);
      private
        { Private declarations }
      public
        { Public declarations }
        procedure DoOnSelectItem(SelectedItem: TEasyItem);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.ELVItemDblClick(Sender: TCustomEasyListview; Button: TCommonMouseButton; MousePos: TPoint; HitInfo: TEasyHitInfoItem);
    
    begin
      if Assigned(HitInfo.Item) then
        DoOnSelectItem(HitInfo.Item);
    end;
    
    procedure TForm1.DoOnSelectItem(SelectedItem: TEasyItem);
    begin
      Memo.Lines.Add( 'Selected : ' +
                      SelectedItem.Captions[0] + '    ' +
                      SelectedItem.Captions[1]
                    );
    end;
    
    procedure TForm1.ELVKeyAction(Sender: TCustomEasyListview; var CharCode: Word; var Shift: TShiftState; var DoDefault: Boolean);
    var
      Selected : TEasyItem;
    begin
      Selected := TEasyListview (Sender).Selection.First;
    
      if CharCode = VK_RETURN then
        if Assigned(Selected) then
          DoOnSelectItem(Selected);
    
    
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    var
      i : integer;
    begin
      for i := 0 to 25 do
        with ELV.Items.Add do
          begin
            Captions[0] := 'COL1 - Item ' + IntToStr (I);
            Captions[1] := 'COL2 - Item ' + IntToStr (I);
          end;
    end;
    
    end.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •