Zitat von
novy:
Mein Programm besteht aus zwei Formularen. Der Benutzer gibt in Form1 einen Suchtext ein, der an Form2 übergeben wird. Findet Form2 mit diesem Suchtext einen Eintrag in einer Tabelle, soll das Ergebnis an Form1 zurückgegeben und Form2 geschlossen werden.
Ist mir völlig unbegreiflich, warum du zur Ausführung einer Suchfunktion überhaupt Form2 anzeigen musst - und dann noch modal. Oft werden in diesem Forum Fragen zu solchen technischen Problemen gestellt, die nur durch einen falschen Lösungsansatz auftreten können.
Grundsätzlich hat Muetze1 recht, wenn er dir das direkte Manipulieren von Form2 durch Form1 madig macht. Deine Forms sind Objekte und Objekte kommunizieren über Methoden. Wenn du also eine Zeichenkette an Form2 übergeben musst und Form2 als Ergebnis einer Suche mehrere Zeichenketten zurückliefern soll, dann erstellst du im public Abschnitt deiner Form2 eine Funktion. ShowModal() würde ich dazu allerdings nicht überschreiben, weil es semantisch nicht sehr sauber ist. Die Methode sollte etwas über ihren Zweck aussagen und der ist nicht "mach ein Fenster auf und blockiere meine sonstige Arbeit" sondern "sag mir, was du zu diesem Suchwort findest".
Delphi-Quellcode:
TForm2 = class(TForm)
public
function GetInfo(search: string; var info: TInfoRec): boolean;
end;
An einer geeigneten Stelle deklarierst du noch TInfoRec:
Delphi-Quellcode:
type
TInfoRec = record
Info1: string;
Info2: string;
end;
Und im implementation Abschnitt deiner Form2 codierst du die Methode GetInfo():
Delphi-Quellcode:
function GetInfo(search: string; var info: TInfoRec): boolean;
begin
Result := InfoExists(search);
if Result then begin
info.Info1 := '';
info.Info2 := '';
end;
end;
Irgendwann, wenn du alles hinbekommen hast, wirst du vielleicht merken, dass dein Ansatz total falsch ist. Forms sind zur Gestaltung der Benutzeroberfläche da. Deine Suchfunktion und deine Daten gehören in eine normale
Unit. Die Suche wird ja nur in deiner Form angestossen.
Je besser deine Problembeschreibung, desto bessere Hilfe kannst du erwarten.
Grüße vom marabu