Form kommt erst nach dem ausführen von code zum vorschein
-
wie im Konstruktor?
-
TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //---------------------------------------------------------------------------
da drin
-
Was wie Konstruktor? Du benutzt doch eine Form und willst beim Starten(=beim Erstellen dieser Form)was machen, oder?
BCB sollte eigentlich eine Zeile wie__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { }
ausgespuckt haben. Dort hau den Code mal rein, aber ich kann für nix garrantieren. Für "beim Straten der Anwendung" sollte man jedoch den Konstrukor Sachen wie OnShow immer vorziehen.
-
das klappt aber nicht. die form ist trotzdem nicht vorher sichtbar
-
Tja wie gesagt... du könntest auch einfach einen Timer einmal ticken lasssen(1 sek, kein Ahnung - musst du etwas probieren), aber das ist wie gesagt nicht sehr hübsch!
-
ja da hast du schon recht, es ist nicht hünsch
zudem wird die application auf jedem rechner eine andere initialisierungszeit haben. gibts da keine feine lösung? es muss doch irgendwie möglich sein, code erst nachdem die form sichtbar ist, auszuführen.
-
Du könntest im OnActivate eine selbstdefinierte Windows-Message verschicken und deinen Code im dafür geschriebenen Messagehandler ausführen.
// in .h #define APPINIT (WM_USER + 100) private: // User declarations ... void __fastcall WMInit(TMessage&); public: // User declarations ... BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(APPINIT, TMessage, WMInit) END_MESSAGE_MAP(TForm) // in .cpp //--------------------------------------------------------------------------- void __fastcall TForm1::WMInit(TMessage&) { ShowMessage("mein Code hier"); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormActivate(TObject *Sender) { PostMessage(Handle, APPINIT, 0, 0); } //---------------------------------------------------------------------------
Quelle: Borland Newsgroups
-
Schreib als 1.Zeile im FormActivate ein Application->ProcessMessages();. Dadurch wird die Form sofort gezeichnet. Dahinter kannst Du dann Deine Anmeldung durchführen.
-
Hey, warum einfach, wenn's auch umständlich geht?
ProcessMessages ist natürlich viel besser, weil portabel (Kylix).
-
endlich, es klappt!