Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ModalResult bei Doppelklick auf ListView (https://www.delphipraxis.net/132233-modalresult-bei-doppelklick-auf-listview.html)

TheMiller 8. Apr 2009 11:39


ModalResult bei Doppelklick auf ListView
 
Hallo,

ich stehe mal wieder vor einem Problem - besser gesagt vor einer AV.

Folgendes Szenario: Ich habe Formulare für all meine Projekte erstellt. Je nach dem, welches ich gerade brauche, binde ich in ein Proejkt ein bzw. erstelle es zur Laufzeit.

In diesem Fall geht es um ein Suchformular von Adressen. Ich zeige es mit ShowModal an, suche die Adresse und klicke auf einen der beiden Buttons. Der eine hat mrOK, der andere mrCancel.

Wenn ich nun eine Adresse auswähle und auf den Button (mrOK) klicke, dann wird alles übernommen.

Doch man kann in meinem Formular die Adresse auch per Doppelklick auf den Listeneintrag der ListView bestätigen. Nur dann bekomme ich keinen ModalResult-Wert zurück. Geht das generell nicht, oder mache ich nur was falsch?

Hier mal Quellcode:

Delphi-Quellcode:
var
  AdressForm: TfPJAdressSuche;
  re: TFrxRichView;
begin
  adressForm:=uPJAdresssuche.TfPJAdresssuche.Create(Self);
  try
    if (AdressForm.ShowModal = mrOK) then
    begin
      //u.s.w
    end;
  finally
    FreeAndNil(adressForm);
  end;
end;


//Das Adressformular:

procedure TfPJAdresssuche.PngBitBtn2Click(Sender: TObject);
begin
  SelectAddress;
end;

procedure TfPJAdresssuche.ListView1DblClick(Sender: TObject);
begin
  //Das war ein Trick, damit das ModalResult gesetzt wird. Geht aber nicht.
  PngBitBtn2.OnClick(Self);
end;

procedure TfPJAdresssuche.SelectAddress;
begin
  if (ListView1.Selected <> nil) then
  begin
    proceed:=True;
    Tel:=ListView1.Selected.SubItems.Strings[5];
    eMail:=ListView1.Selected.SubItems.Strings[6];
    Adressname:=ListView1.Selected.SubItems.Strings[2]+' '+ListView1.Selected.SubItems.Strings[1];
    Anrede:=ListView1.Selected.Caption;
    Firmenname:=ListView1.Selected.SubItems.Strings[0];
    Nachname:=ListView1.Selected.SubItems.Strings[1];
    Vorname:=ListView1.Selected.SubItems.Strings[2];
    Strasse:=ListView1.Selected.SubItems.Strings[3];
    PLZ:=ListView1.Selected.SubItems.Strings[4];
    Ort:=ListView1.Selected.SubItems.Strings[5];
    Telefon:=ListView1.Selected.SubItems.Strings[6];
    eMail:=ListView1.Selected.SubItems.Strings[7];
    aid:=Integer(ListView1.Selected.Data);
  end else
  begin
    MessageDLG('Es ist keine Adresse ausgewählt.', mtInformation, [mbOK], 0);
  end;
end;
Wenn ich einen Doppelklick in die Liste mache, passiert einfach nichts.

Bitte hiermit offiziell um Hilfe ;)

Danke!

jfheins 8. Apr 2009 11:45

Re: ModalResult bei Doppelklick auf ListView
 
Probier mal das:
Delphi-Quellcode:
procedure TfPJAdresssuche.ListView1DblClick(Sender: TObject);
begin
  //Das war ein Trick, damit das ModalResult gesetzt wird. Geht aber nicht.
  PngBitBtn2.Click;
end;

DeddyH 8. Apr 2009 11:47

Re: ModalResult bei Doppelklick auf ListView
 
Das müsste doch prinzipiell so gehen:
Delphi-Quellcode:
procedure TfPJAdresssuche.ListView1DblClick(Sender: TObject);
begin
  SelectAddress;
  ModalResult := mrOK; //oder halt ein anderer Wert
end;

TheMiller 8. Apr 2009 11:56

Re: ModalResult bei Doppelklick auf ListView
 
Danke DeddyH, deine Lösung hat funktioniert. Habe noch nie mit ModalResults gearbeitet. Erspart aber eine menge Arbeit!

Danke euch beiden!


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz