![]() |
TListView - auf Doppelklick und Enter reagieren
Hallo,
Folgendes Problem: Ich habe ein ListView (vsReport) und möchte - ähnlich wie im Windows-Explorer - bei Doppelklick oder Enter-Druck ein Bearbeiten-Fenster aufrufen. Das OnDblClick-Event hab ich schon ausprobiert (in Verbindung mit einer if-Schleife, ob ein Eintrag makiert ist), aber diese Lösung arbeitet nicht wirklich zuverlässig. Könnt ihr mir helfen? Danke, Dominik |
Re: TListView - auf Doppelklick und Enter reagieren
Der Weg über OnDblClick ist völlig richtig. Wäre gut gewesen, wenn du noch etwas Code gezeigt hättest. Richtig müsste es die IF-Abfrage so sein:
Delphi-Quellcode:
Für das Enter müsstest du OnKeyPress abfangen und den Parameter Key auf #13 überprüfen.
if ListView1.Selected <> nil then
begin // mache was end; P.S: Es gibt keine IF-Schleifen :) Wenn dann sind es IF-Bedingungen oder IF-Abfragen. |
Re: TListView - auf Doppelklick und Enter reagieren
Hallo Dominik,
füge deiner Form eine ActionList zu, wenn du das noch nicht gemacht hast. Im ActionListEditor definierst du dann eine ListOpenAction mit dem ShortCut "Enter" und der Caption "Open", der du deinen Code zum Öffnen des Berabeitungsdialogs zuweist. Jetzt musst du noch deiner ListView ein PopupMenu zuordnen und darin einem neuen Item die ListOpenAction. Im Event-Handler für ListView.OnDoubleClick rufst du dann ListOpenAction.Execute auf und damit du nicht erst im Action-Code überprüfst, ob überhaupt ein Item selektiert ist, machst du diese Überprüfung in der OnIdle-Routine deiner Application, die du im FormCreate initialisierst:
Delphi-Quellcode:
Grüße vom marabu
procedure TDemoForm.AppIdle(Sender: TObject; var done: boolean);
begin ListOpenAction.Enabled := Assigned(ListView.Selected); end; |
Re: TListView - auf Doppelklick und Enter reagieren
@jim_raynor:
Danke, jetzt funktioniert es. :thumb:
Delphi-Quellcode:
@marabu:
procedure TForm1.ListView1DblClick(Sender: TObject);
begin if ListView1.Selected <> nil then ShowMessage(ListView1.Selected.Caption); end; procedure TForm1.ListView1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = VK_RETURN then ShowMessage(ListView1.Selected.Caption); end; In Delphi 3 gibt es leider noch keine ActionLists, trotzdem Danke! |
Re: TListView - auf Doppelklick und Enter reagieren
Zitat:
Delphi-Quellcode:
ListView1DblClick(Sender)
|
Re: TListView - auf Doppelklick und Enter reagieren
Stimmt, hast ja recht :wink: Danke!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz