Das modale Formular bewirkt, dass das aufrufende Formular deaktiviert wird. Sie können auf dem Formular, das aktiv ist, bevor das modale Formular angezeigt wird, auf Nachrichten WM_ACTIVATE
warten. Sie haben das Handle des Aktivierungsfensters im Message-Handler, Sie können das testen, wenn es eine Form vom Typ des modalen Formulars hat. Im Folgenden finden Sie Beispiele für den Klassennamen, den Sie mit etwas wie Spy ++ erhalten können. Beachten Sie, dass die Deaktivierung kurz nach dem Anzeigen des modalen Formulars erfolgt, aber ich denke nicht, dass es möglich wäre, die unterschiedliche Beschriftung zu bemerken.
type
TForm1 = class(TForm)
..
protected
procedure WMActivate(var Message: TWMActivate); message WM_ACTIVATE;
end;
procedure TForm1.WMActivate(var Message: TWMActivate);
var
Form: TWinControl;
begin
if Message.Active = WA_INACTIVE then begin
Form := FindControl(Message.ActiveWindow);
if Form is TCustomForm then begin
if TCustomForm(Form).ClassName = 'TThirdPartyModalForm' then
TCustomForm(Form).Caption := 'My caption';
end;
end;
inherited;
end;
Ein weiteres Beispiel, warum Sie niemals Komponenten von Drittanbietern verwenden sollten, für die Sie keine Quelle haben, wenn eine Option verfügbar ist, um sie zu erhalten. :-) Sie können angeben, welche Komponente von Drittanbietern Sie verwenden, damit eine Person, die eine bekannte Lösung für diesen Komponentensatz besitzt, diese bereitstellen kann. –
@Ken: TeeChart. Ich könnte auf die 'with source'-Version upgraden, aber es ist schwer, ein Minimum von 250 Dollar zu rechtfertigen, nur um die Überschrift eines Formulars zu ändern: o) – norgepaul
Das Problem ist, wenn sich etwas ändert (oder TeChart im nächsten nicht mehr enthält) Version von Delphi), kann Ihr gesamter Code, der ihn verwendet, nicht in die nächste Version des Compilers verschoben werden. Wenn Sie Code haben, der von Komponenten Dritter abhängt, benötigen Sie die Quelle, um sich in Zukunft zu schützen. Es ist eines der allerersten Dinge, die Sie nach dem Erlernen von Delphi lernen sollten - seine offene Architektur eignet sich hervorragend für Erweiterungen von Drittanbietern, aber wenn Sie keine Quellen erhalten, werden Sie lahm gelegt, wenn sich die Dinge in Zukunft ändern. –