Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Modales Form ohne Benutzereingriff schließen

  Alt 17. Mai 2005, 07:40
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
  Mit Zitat antworten Zitat