Wenn dies Ihr erster Besuch hier ist,
lesen Sie bitte zuerst die Hilfe - Häufig gestellte Fragen
durch. Sie müssen sich vermutlich registrieren,
bevor Sie Beiträge verfassen können. Klicken Sie oben auf 'Registrieren', um den Registrierungsprozess zu
starten. Sie können auch jetzt schon Beiträge lesen. Suchen Sie sich einfach das Forum aus, das Sie am meisten
interessiert.
ich möchte daß ein formular(kein hauptformular) immer im vordergrund ist, auch wenn andere anwendungen
geladen werden!!!! formstyle stayontop versagt!!!!!!!!
hilft in Deinem konkreten Fall die API-Funktion <b>BringWindowToTop</b> weiter? Als Parameter wird das Fensterhandle des in den Vordergrund zu bringenden Fensters benötigt.
Wenn das nicht ausreicht, hilft eventuell die folgende "Brechstange" weiter:
<pre>
with Form2 do
SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height,
SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
</pre>
Dieser Aufruf kann in Ereignisbehandlungsmethoden für OnShow, OnDeactivate und OnActivate untergebracht werden.
P.S: Windows 98 unterscheidet sich in diesem Punkt von Windows95/NT auf der einen und Windows 2000 auf der anderen Seite
in diesem Fall gelten völlig andere Regeln, da es sich nicht um ein Top-Level-Window handelt. Wie wird das zweite Formular aufgerufen, mit <b>Show</b> oder mit <b>ShowModal</b>? Wenn es sich um einen modalen Dialog handelt, würde in jedem Fall auch das Eltern-Fenster mit in den Vordergrund gebracht werden. Bei einem nicht-modalen Formular kann man am Fenster-Stil drehen. Und nun meine letzte Frage, für welche Windows-Version wird eine Lösung benötigt?
P.S: Hast Du auch mit dem Delphi-Tool <b>WinSight</b> nachgeschaut, ob sich ein anderes Fenster bereits automatisch in den Vordergrund drängt
showmodal hat doch den nachteil, daß erst weiter gearbeitet werden kann, wenn das fenster geschlossen wird
oder nicht??? ich rufe es mit show auf. das programm ist für windows 95,98 und nt!!!!
am stil habe ich schon rum gebastelt ohne erfolg!!!!!
in Deiner Anwendung soll das über <b>Show</b> aufgerufen Formular immer sichtbar sein, auch wenn andere Anwendungen im Vordergrund laufen? Wenn ja, ist folgendes notwendig. Das 2. Formular wird erzeugt und über Show aufgerufen:
<pre>
uses Unit2;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2 := TForm2.Create(nil);
Form2.Show;
end;
</pre>
Damit das 2. Formular immer im Vordergrund ist, muss es als "Findelkind" einem anderen Elternteil "untergeschoben" werden. Dazu erkläre ich einfach den <b>Desktop</b> (Fensterhandle = 0) zum Elternfenster, indem <b>CreateParams</b> überschrieben wird:
<pre>
type
TForm2 = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private-Deklarationen }
procedure CreateParams(var Params: TCreateParams);override;
public
{ Public-Deklarationen }
end;
var
Form2: TForm2;
implementation
{$R *.DFM}
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited;
with Params do
begin
ExStyle := ExStyle or WS_EX_TOPMOST;
WndParent := 0;
end;
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
</pre>


Comment