Autor Beitrag
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Fr 11.11.11 01:54 
Hey,

ich steh grad vor nem Problem für das es sicher eine einfache Lösung gibt, ich aber grad keine finde. Und zwar versuche ich die MainForm erst anzuzeigen, wenn die restlichen Formulare auch geladen sind. Jetzt wird sie angezeigt, sobald sie erzeugt wurde. Wenn ich direkt nach dem Erzeugen ein Hide aufrufe, dann flackert sie nur kurz auf, aber das sieht sehr unschön aus. Weiß jmd wie ich die Form von Anfang an unvisible machen kann?

MfG Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Fr 11.11.11 03:29 
Am Einfachsten ist es, als erste Anweisung bei der Formcreate-Prozedur folgendes zu schreiben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure Form1.Formcreate(Sender : TObject);
begin
  Top := 2000;
.
.
.
.
end;


und bei Formshow:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure Form1.FormShow(Sender : TObject);
begin
  Top := 0;
.
.
.
.
end;

Dann sollte das Formular erzeugt werden, aber erst an der Stelle y = 2000, also außerhalb des sichtbaren Bildschirms. Und beim Zeigen (FormShow) wird es dann auf y = 0 (Also am oberen Rand des Bildschirms gesetzt. Zugegeben, eine etwas ungewöhnliche Art, aber wirksam.

Moderiert von user profile iconNarses: Delphi-Tag repariert.

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Fr 11.11.11 06:29 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
  Application.Initialize;
  SendMessage(Application.Handle,sw_Hide,0,0);
  Application.CreateForm(TForm1, Form1);
  sleep(1000);
  Application.CreateForm(TForm2, Form2);
  sleep(1000);
  Showmessage('Alles erzeugt');
  SendMessage(Application.Handle,sw_Show,0,0);
  Application.Run;

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 11.11.11 06:48 
Es ist standardmäßig sowieso so, dass das Formular erst dann angezeigt wird. Das ist also alles eigentlich gar nicht nötig. Ausprobieren sollte sich das mit einem simplen neuen Projekt mit zwei Formularen lassen, wobei im FormCreate des zweiten einfach ein Sleep eingebaut wird. Das Hauptformular sollte erst nach dem Sleep sichtbar werden.

Wenn das anders ist, dann liegt das an dem eigenen Code. Und da wir den nicht kennen, lässt sich dazu auch nicht viel sagen.
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Fr 11.11.11 18:41 
Hey,

@jaenicke: hast Recht, ich hab beim Laden der Formulardaten das Visible auch mit gespeichert und da wird es natürlich auch mit geladen. Hab's angepasst und jetzt gehts so, wie ich es haben wollte ;) Danke.

MfG Bergmann

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 12.11.11 09:41 
Man sollte auch Folgendes bedenken:

- wenn nach dem Programmstart "länger" nichts zu sehen ist, startet man das Programm nocheinmal, evtl. dann mit Administratorrechten - das ist nicht im Sinne des Programmierers... - deshalb nur 1 Instanz zulassen!
- Grundsätzlich sollte immer ein Lebenszeichen erkennbar sein - alles andere ist Quatsch und amateurhaft!
haentschman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 285
Erhaltene Danke: 33


DX10 Berlin Professional
BeitragVerfasst: Sa 12.11.11 09:47 
Moin...

ich werfe mal noch das Stichwort "Splashscreen" in den Raum 8)
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Sa 12.11.11 13:08 
Hey,

ist alles schon verbaut :D Dass das Programm nur einmal ausgeführt werden kann war schon vorher drin, und das Problem mit der MainForm hatte ich nur, weil ich nen FlashScreen einbauen wollte. Da is nämlich die Form immer aufgesprungen, obwohl der FlashScreen noch da war, bzw das Programm noch nicht vollständig initialisiert wurde.

MfG Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^