Einzelnen Beitrag anzeigen

Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

ModalResult bei Doppelklick auf ListView

  Alt 8. Apr 2009, 12:39
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!
  Mit Zitat antworten Zitat