Moin!
Zitat von
novy:
Derzeit macht mein Programm folgendes:
Form1 schreibt in ein Edit-Feld in Form2 den Suchtext
dann Aufruf von Form2.ShowModal
FormActivate von Form2 startet mit dem Suchtext im Edit-Feld die Suche in einer ListBox
Wenn nur ein Eintrag in der ListBox gefunden wird, sollen die Werte zurück in Edit-Felder in Form1 geschrieben und das Form2 über Close geschlossen werden.
Wieso überschreibst du nicht einfach ShowModal und machst deine Suche vor dem Inherited ShowModal. Wenn du nur einen Treffer hast und somit nix ausgewählt werden muss vom Nutzer, dann sagste direkt, dass ModelResult := MrOk ist - ansonsten rufst du das ShowModal auf.
Pseudocode:
Delphi-Quellcode:
Type
...
Public
Function ShowModal(Var SuchWort: String): TModalResult; Override;
End;
....
Function ShowModal(Var SuchWort : String): TModalResult;
Begin
SucheNachWort(SuchWort);
If ( ListBox1.Items.Count = 1 ) Then
Begin
SuchWort := ListBox1.Items[0];
ModalResult := mrOk;
End
Else
Begin
Result := Inherited ShowModal;
If ( ListBox1.ItemIndex > -1) Then
SuchWort := ListBox1.Items[ Listbox1.ItemIndex ];
End;
End;
Dieser Pseudocode will im ShowModal() Aufruf den Suchbegriff und gibt nach der Selektion (wenn mehr als 1 Begriff gefunden wurde der ausgewählte vom Nutzer - ansonsten der einzige gefundene) in der gleichen Variable den ausgewählten Begriff zurück.
Vor allem ist das sauberer als irgendwelche direkten Zugriffe auf Form1 oder Form2 von der jeweils anderen Form aus.... *grusel*
MfG
Muetze1