Autor Beitrag
ObscurusNox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 49



BeitragVerfasst: Mi 09.10.02 11:38 
Hallo!

Hab ein Problem. Mein Programm verschwindet gleich nach dem Start in den SysTray, aber das MainForm (Form1) wird zur Zeit trotzdem noch kurz angezeigt, weil das Laden in den SysTray und das verstecken des Fensters per Timer funktioniert.

Ich will aber, dass das Form1 gar nicht erst angezeigt wird, sind zwar nur 10tel Sekunden, aber trotzdem.

Ich habe schon versucht gleich im TForm1.FormCreate ein Hide einzubauen, aber das mag Delphi anscheinend nicht, auf jeden Fall zeigt das keine Wirkung.

Habe auch schon Visible von Form1 auf false gesetzt, aber das nützt auch gar nix.

Vielleicht hat ja einer ne Idee.
Schonmal Danke ich vorraus.

Markus.


PS: Hoffe ich hab nicht schon wieder ein Posting übersehen, wo das schon behandelt wurde.
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mi 09.10.02 12:01 
Hi
Primitive Methode wäre: Verschieb den Fenster so weit nach rechts, dass es ausserhalb des Bildschirms liegt.
ausblenden Quelltext
1:
2:
3:
4:
procedure TForm1.FormCreate...
begin
  Left := Screen.Width;
end;


Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Moewe2
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 09.10.02 12:57 
Titel: Bitte Nicht
Bitte Nicht so.
Jeder Computerbenutzer, der mehrere Monitore angeschlossen hat ist es Leid, dass viele Programmierer ihre eigentlich unsichtbaren Fenster einfach nach rehcts oder links oder sonstewohin rausgeschoben haben. Es kommt bei mir oft vor, dass auf meinem Zweitmonitor, der links neben dem richtigen steht, irgendwelche leeren Fenster erscheinen, die man dann oft sogar noch nicht einmal wegbekommt.
Also, bitte nicht.
Ich glaube es gibnt die Möglichkeit gar nicht erst ein Formular zu erstellen, aber das hab ich auch nie geschafft. Dann wäre es besser, vielleicht für die 10tel Sekunde das Fenster erscheinen zu lassen und es vielleicht auch nur 1 Pixel groß zu machne und die Buttons und die Leiste oben zu deaktiviern.

_________________
Baut keine Atomraketen!
Die alten sind doch noch garnicht aufgebraucht.
O'rallY
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: Mi 09.10.02 13:27 
probier einfach mal den Befehl
ausblenden Quelltext
1:
   Application.ShowMainForm := false;					


Muss dann natürlich beim wiederherstellen aus dem SysTray wieder rückgängig gemacht werden.

_________________
.oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Mi 09.10.02 13:55 
Oder, wenn der Timer nicht allzu lang eingestellt ist, müsste es doch auch klappen, wenn man das Fenster beim Erstellen einfach minimiert. Dann erscheint es für eine kurze Zeit in der Taksleiste, aber je nachdem, wie der Timer eingestellt ist (< 1 sekunde sollten auch schon gehen) fällt das kaum auf...

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 09.10.02 14:02 
Hört bitte mit dem Basteln aud. o'rally hat die Lösung gepostet. Und im Unit Code geht es mit
ausblenden Quelltext
1:
Form1.Hide := TRUE;					

Aber das geht wohl nicht im OnCreate-Ereignis, da zu diesem Zeitpunkt das Fenster noch nicht existiert.
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Mi 09.10.02 14:36 
Deine Antowrt habe ich auch ausprobiert, Luckie. Und ich wollte sie auch zuerst schreiben. Aber wenn ich schon im Object-Insprector meine Hauptform verstecke (mit dem Hide), dann klappt das nicht. Anscheindend kann man durch das Property seine Hauptform nicht verstecken. Oder ich habe etwas falsch gemacht (hmmm, Hide auf True, was kann man da falsch machen?)...

Tschüß
Thomas

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
ObscurusNox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 49



BeitragVerfasst: Mi 09.10.02 17:39 
Freut mich ja, dass sich soviele Leute um mein Problem bemühen :D

Aber irgendwie funktionieren eure Vorschläge nicht ganz.
Habe folgendes ausprobiert:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
begin
  Application.Initialize;
  Application.ShowMainForm := false;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.


Hat keine Wirkung.
Und das hier auch nicht, war eigentlich auch das Problem weswegen ich den Timer eingebaut hab:

ausblenden Quelltext
1:
2:
3:
4:
procedure TForm1.FormCreate(Sender: TObject);
begin
   Hide;
end;


Und das akzeptiert der Debugger nicht:
ausblenden Quelltext
1:
Form1.Hide := TRUE;					


Fehlermeldung: [Error] Unit1.pas(392): Left side cannot be assigned to

Das mit dem nach links verschieben hab ich jetzt nicht ausprobiert, würde wohl gehen, aber soll ja nicht so schön sein.
Hm... schonmal vielen Dank für euer Bemühen, vielleicht findet ja noch einer die Lösung.

Markus.
SMI
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 106

Win95-2003 / Debian / Suse
D1/D3/D6/D7
BeitragVerfasst: Mi 09.10.02 18:08 
Warum Benutzt du nicht einen Datenmodul anstatt einem Form? Da Datenmodule immer unsichtbar sind, fände ich die Benutzung hier irgendwie sinnvoll. Wenn du dann dein Form brauchst erstellst du es am Besten dynamisch. Damit umgehst du ein Problem von Anfang an und sparst sogar nebenbei noch Speicher.

SMI

_________________
Wenn es im Jahre 1879 schon Computer gegeben hätte, würden diese vorausgesagt haben, daß man infolge der Zunahme von Pferdewagen im Jahre 1979 im Pferdemist ersticken würde.
(John C. Edwards, brit. Zukunftsforscher)
O'rallY
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: Mi 09.10.02 20:00 
Schreib das ShowMainForm in das Create-Event, dann müsste es eigentlich klappen.

_________________
.oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
Alibi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: Mi 09.10.02 20:03 
Args, einen Timer... Nenene.
Und Hide ist keine Property, sondern eine Funktion.
Mach in OnActivate oder so einfach eine einzige Zeile:
Hide;
Und fertig.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 10.10.02 07:34 
"OnActivate" wird aber u.U. nicht nur einmal aufgerufen während das Programm läuft. Schau mal in die Hilfe zu diesem Ereignis.

Mein Vorschlag: setze die TNA-Funktionen in dein eigenes "OnMinimize"-Event (Beispiel gibt´s hier bei AUQ.de) und starte dann aber die Form gleich minimiert (einzustellen im Objektinspektor). Dadurch siehst du sie nicht. Weder auf einem Bildschirm, noch auf mehreren ...

Oder -wenn das TNA-Icon grundsätzlich immer zu sehen sein soll: dann schreib in das "OnMinimize"-Event nur den Code zum Ausblenden der Form, und starte es trotzdem minimiert. Funktioniert letzten Endes genauso.
ObscurusNox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 49



BeitragVerfasst: Fr 11.10.02 12:42 
@SMI: Das mit dem Datenmodul wäre wohl 'ne gute Idee, aber dazu müsste ich das ganze Programm mehr oder weniger neu schreiben. Ist mir zu kompliziert.

@O'rallY:
ausblenden Quelltext
1:
2:
3:
4:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.ShowMainForm := false;
end;

Das zeigt komischer weise keine Wirklung. Wenn ich das bei einem ganz neuen Project einfüge, dann geht's, bei meinem Programm irgendwie nicht.

@Moewe2:
Wäre es denn in Ordnung, wenn ich das Fenster nach unten aus dem Bildschirm schiebe?? Das ist zur Zeit meine beste Lösung und dürfte eigentlich niemanden stören, oder?

@Alibi:
Ich weiß, dass Hide eine Funktion ist, wollte nur auf den Fehler von Luckie hinweisen.


Zuletzt bearbeitet von ObscurusNox am So 15.12.02 20:28, insgesamt 1-mal bearbeitet
Moewe2
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 11.10.02 21:33 
Es wäre möglich es außerhalb des sichtbaren Bereiches zu schieben, dann aber nicht nur ein bisschen, sondern richtig. Also zum Beispiel an Position 3000*3000 oder so. Wenn das nicht geht, mache es nach unten, ja. Die meisten Leute werden ihren Zweitmonitor links oder rechts zu stehen haben, und die paar Leute, die 4 oder 5 Monitore haben kann man nun wirklich vernachlässigen. Abe rversuchs erst mit richtig weit weg.

_________________
Baut keine Atomraketen!
Die alten sind doch noch garnicht aufgebraucht.