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!