crearea dinamică a cronometrului înainte de începerea aplicației
Fișierul .dpr nu funcționează
(se generează eroare de compilare)
creați TTimer
Cum se face corect?
utilizări
# xA0; Formulare,
# xA0; Windows,
# xA0; extctrls,
# xA0; Clase,
# xA0; unitate55 în "D: \ Program Files \ Borland \ Delphi5 \ Bin \ unit55.pas";
procedură # xA0; # xA0; on_Timer (Expeditor: TObject);
începe
# xA0; # xA0; # xA0; // codul handlerului
# xA0; # xA0; # xA0; fl: = false;
se încheie;
var
h: HWND;
tm: TTimer;
fl: boolean;
începe
# xA0; Application.Initialize;
# xA0; fl: = adevărat;
# xA0; tm: = TTimer.Create (Aplicație);
# xA0; tm.Interval: = 100;
# xA0; tm.OnTimer: = on_Timer; //<== [Error] Project1.dpr(24):
# xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; // Tipuri incompatibile:
# xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; # xA0; // indicatorul de metode și procedura obișnuită
# xA0; tm.Enabled: = true;
# xA0; Application.Initialize;
# xA0; Application.CreateForm (TForm1, Form1);
# xA0; în timp ce (fl) face application.ProcessMessages;
# xA0; tm.free;
# xA0; Application.Run;
end.
1 De ce trebuie să aplicați. Inițializați de două ori
2 TTimer poate fi creat fără aplicație
3 OnTimer ar trebui să fie (după cum probabil ați citit și imbătat) prin metoda obiectului, mai degrabă decât printr-o procedură obișnuită
4 Și în cele din urmă tot ceea ce a scris fără limbă, la care ați scris, este redus
Handlerul de evenimente al obiectului trebuie să fie metoda unui obiect și nu doar o procedură.
În general, nu este clar din cod, de ce nu doar pune timer pe formularul principal și obține același lucru fără probleme. Dar dacă vreți cu adevărat, scrieți-vă descendentul TTimer, adăugați-l la manipulatorul OnTimer și lăsați-l să se ocupe de el însuși.
PS:
1 unit55 - :) horror
2 dar de ce ar trebui să vă: HWND
3 Application.ProcessMessages înainte de Application.Run este o idee misto!
Puteți rula o aplicație mică în loc de un cronometru,
dar nu vreau
Esența este următoarea: după Application.CreateForm (TForm1, Form1);
înainte de apariția formularului, se deschide o fereastră pe ecran, care
în dispozitivul de acționare a timerului trebuie să fie ucis.
Hmm. Nu poate fi mai ușor să o creați?
h: HWND - desigur, trebuie să eliminați procedura
> Application.ProcessMessages to Application.Run este rece
> idee!
Dumnezeu are grijă de amar, așa cum a spus călugăria.
> după aplicarea.CreateForm (TForm1, Form1);
> înainte de apariția formularului, se deschide o fereastră pe ecran, care
> în dispozitivul de acționare temporizator trebuie să fie ucis.
Ce fereastră? De unde a venit? De ce să-l omorâți? Și de ce neapărat pe cronometru?
> În unite, trecerea creionului de mai sus trece
> normal, dar cum să fiu aici?
Aduceți cronometrul într-o unitate. Este posibil în același loc, unde Form1.
P.S.
Înainte de a apela Application.Run, timer-ul încă nu funcționează.
Da, toate vasele ingenioase simple sunt adevărate.
Rămâne doar aplicația externă.
Da, nenorocitule? scufundați FindWindow în timp? acolo somn și ProcessMessages - adică Programul va aștepta până când apare fereastra și apoi vă veți ucide.
Memorie: 0,75 MB
Sincronizare: 0.089 sec