Hallo Leute,
ich bin am "Rotz Jodeln".-echt. Komme einfach nicht voran. Die Fenster Geschichte treibt mich noch in den Wahnsinn.
Folgendes mal anders. Ich möchte das Form2 Fenster als erstes starten. Soweit so gut. Macht es. Bleibt 5 Sekunden da, schließt sich.-super nun soll sich Form 1 laden und in Front bringen. Macht es für eine Millisekunde. Ich weiß nicht warum das Fenster nicht bleibt. Im Anhang das Testprogramm.
procedure TForm2.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False; // Timer deaktivieren, damit es nicht mehrfach passiert
Self.Hide; // Form2 verstecken
end;
procedure TForm2.FormHide(Sender: TObject);
begin
if not Assigned(Form1) then
Application.CreateForm(TForm1, Form1);
Form1.Show;
Form1.BringToFront;
end;
Ausserdem ist es verwirrend, Form2 zum Hauptformular zu machen etc, aber gut...
Hi Theo,
hhmmm. Es funktioniert nun.- aber ich verstehe das nicht ganz. Ich starte doch Form2 das später Infofenster heißt und 30 Sekunden bleiben soll mit ein paar wichtigen Tagesinformationen. Dann öffne ich doch Form1 das Hauptfenster. Wie würdest du das denn machen? Danke dir.
Ja klar verstehe. Danke dir.
Es scheint mir das du alles immer auf das wesentliche herunterbrichst und es im Grunde vereinfachst. Das finde ich super. Ich denke dann immer zu kompliziert.
Dabei liegt es oft am einfachen aber direkten Code.
Ehrlich gesagt als Anfänger sieht man oft den Wald vor Bäumen nicht mehr. Was bei mir auch ist.- wenn ich z.B. etwas verstehe und es aber eine Weile nicht mehr benötige, dann steh ich oft davor und denke:...hä das hast du doch schon einmal gemacht.-aber habs dann zum Teil vergessen. Man muß echt dran bleiben.
Viele Grüße
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
Form2.Hide; Show;
end;
Warum das "Show". bzw. von wo weiß das Programm das damit Form1 gemeint ist? Verstehe ich das richtig? Timer ist aus. Wird Hide versteckt. Dann SHOW.-was Show. Ich meine es funktioniert,-aber ich möchte es auch verstehen. Danke.
Andy Nightingale hat geschrieben: Di 5. Aug 2025, 20:43
Warum das "Show". bzw. von wo weiß das Programm das damit Form1 gemeint ist?
Das "Show" befindet sich in einer Methode von TForm1, daher bezieht es sich darauf, wenn keine Instanz einer andern Klasse angegeben ist, wie z.B. bei Form2.Hide;
ich hab den thread verfolgt, aber ganz verstehe ich nicht warum man das Design so wählt.
Du sagst dass Form2 mit aktuellen Tagesinformationen 30sek offen bleiben soll um dann wieder zu verschwinden.
Ich frage mich warum so etwas sinn machen kann. Jetzt lese ich als User gerade die Tagesinformation und das Programm schließt mir das Fenster bevor ich fertig bin oder ich muss umgekehrt die 30 sekunden abwarten obwohl ich mit dem Lesen schon fertig bin.
Also mich würde das doch ziemlich nerven. Nicht falsch verstehen, kann jeder machen wie er denkt, sind nur meine 2 cents.
Mein Ansatz in so einer Situation wäre der, einen recht prominenten CLOSE Button aufs Formular zu packen und den auf default stellen, dann kann ein Tastendruck ihn auslösen und niemand muss eine Maus positionieren. Mit Pfeiltasten kann man zb dann auch noch durch die Infos scrollen.
Kommt immer darauf an was mit so einem Infofenster beabsichtigt wird.
Hallo Charly,
natürlich ist das mit dem Close Button mit drauf. Ich mache eigentlich nur das was der Kunde möchte. Ich würde dies auch nicht so haben wollen.
Der Kunde ist eben König.-sein Geld.
Grüße
Ist klarerweise ein Killerargument
Wollte dir nicht zu nahe treten, aber aus der Rubrik Kundenwunsch kann ich dir nach 30 Jahren auch den einen oder anderen Schwank erzählen ggg
Wenn du mit vielen Formularen arbeitest, die nacheinander angezeigt werden, dann nehme ein leeres Hauptform und binde diese im Hauptform ein, also du gibst als subform.Parent:=Hauptform, das ist viel einfacher als diese ganzen Hide/Show Geschichten, weil meistens haben die Formulare andere Größe oder Position und das geht den Benutzer auf den S.ck. Ich deinstalliere solche Programme sofort, falls ich die Möglichkeit dazu habe.