Hallo bitsetter.
Zitat von
bitsetter:
zu 1. folgendes habe ich getestet, jedenfalls bei mir ging es.
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
end;
Das geht bei mir auch. Deshalb habe ich es ja unter "Lösungen" geschrieben.
Zitat von
bitsetter:
zu 2.:
ein Fenster ohne Hintergrund erzeugen
Ich weis nicht ob es eine gute Idee ist, aber folgendes funktioniert auch:
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
self.Top:= self.Top- self.Height- 30;
end;
Die Idee ist nicht schlecht. Sie hat den Vorteil, dass das Formular NICHT zu sehen und trotzdem für Windows "Visible" ist. Dadurch kann es dann Ereignisse empfangen (z. B. Fokus). Aber auch hier: Das geht bei mir und steht unter "Lösungen".
Zitat von
bitsetter:
Du kannst die Form ja auch erst später erstellen:
Delphi-Quellcode:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit3 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
//Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
zu 3. also bei mir funktionierte es:
Delphi-Quellcode:
procedure TForm2.FormShow(Sender: TObject);
begin
SetWindowPos(Form2.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE);
end;
Dieser dritte Punkt ist der, um den es geht. Bei deinem Vorschlag würde das erste Formular nicht geladen und das zweite würde geladen. Das kann ganz klar NICHT die Lösung sein, weil dann einfach das zweite Form zum ersten gemacht würde. Dennoch danke für den Vorschlag!
In meinem Programm ist es so, dass das erste Formular das eigentliche Mainform ist und entsprechend viel Code enthält. Dieses erste Form ist beim Start unsichtbar (wird später über Klick auf Form2 sichtbar).
Das zweite Form soll nach dem Programmstart gezeigt werden. Es ist mit wenigen Routinen ausgestattet und dient eigentlich nur dem Zeigen und Verstecken der Mainform. Das ist alles in Form2. Lediglich das Topmost-Setzen ist bisher nicht zu bewerkstelligen.
Das erste Formular, so wie in deinem Vorschlag aus dem Erstellen des Projektes herauszunehmen, würde somit Form2 zum ersten Form machen. Somit würde nicht wirklich die ZWEITE Form topmost gesetzt. Du würdes nur die zweite Form zur ersten Form machen und die dann topmost setzen. Und das funktioniert ja sowieso.
Die Frage bleibt:
Wie setzt man eine zweite Form topmost?
Guido.