2017-07-04 1 views
1

Toggle Design mode in FMX Listview give you thisTListView FMX événement onclick avec bascule design

La mise en œuvre est la suivante:

ds.first; 
    while not(ds.Eof) do 
    begin 
     L := LV1.Items.Add; 
     L.Data['Part_No'] := ds.FieldByName('Part_no').AsString; 
     L.Data['Part_Name'] := ds.FieldByName('Part_name').AsString; 
     L.Data['LocNo']  := ds.FieldByName('Loc_No').AsString; 
     L.Data['Qty']  := ds.FieldByName('BAL').AsFloat; 
     ds.Next; 
    end; 

j'ajouter des articles du code dynamiquement à l'aide

Comment OnItemClick feu d'événement pour détecter quel élément a été cliqué. Très frustrant de trouver une chose simple.

Toute aide appréciée.

+0

'AItem' est l'objet de l'élément cliqué. Ou que veux-tu précisément? Peut-être que j'ai juste mal compris .. – Victoria

Répondre

1

un peu jeté ensemble, mais il devrait avoir commencer:

function GetClickedDrawable(const AItem: TListViewItem; APoint: TPointF): TListItemDrawable; 
var 
    I: Integer; 
begin 
    Result := nil; 
    // Fudge for statusbar height if using iOS. Should be done properly 
    APoint := PointF(APoint.X, APoint.Y - 20); 
    for I := 0 to AItem.Objects.ViewList.Count - 1 do 
    begin 
    if AItem.Objects.ViewList[I].InLocalRect(APoint) then 
    begin 
     Result := AItem.Objects.ViewList[I]; 
     Break; 
    end; 
    end; 
end; 

procedure TForm1.ListViewItemClick(const Sender: TObject; const AItem: TListViewItem); 
var 
    LDrawable: TListItemDrawable; 
begin 
    LDrawable := GetClickedDrawable(AItem, ListView.AbsoluteToLocal(Screen.MousePos)); 
    if LDrawable <> nil then 
    ShowMessage(LDrawable.Name); 
end; 

Vous devrez ajuster GetClickedDrawable en fonction de ce que la plate-forme que vous êtes. PS: Merci de demander; Je vais avoir besoin de faire quelque chose de très bien comme ça, finalement :-)

EDIT:

J'ai laissé ma réponse initiale en place dans le cas où les éléments suivants ne sont pas disponibles dans les versions antérieures de Delphi:

Utilisez l'événement OnItemClickEx. Les paramètres de l'événement rendent assez explicite

Je ne sais pas pourquoi je ne vois pas plus tôt :-)