Sfaturi pentru cei care programează pe bază vizual

Andrei Kolesov, Olga Pavlova

246. Întrucât Consiliul pentru a face întârziere

Versiunea de bază MS pentru DOS a avut o întârziere de timp util operator de

care suspendă executarea programului pentru un anumit număr de secunde. Un astfel de operator în VB nu există, dar este ușor să pună în aplicare pe cont propriu, sub forma următoarelor rutine simple de:

Aici trebuie să acorde o atenție la utilizarea funcției DoEvents care permite altor procese în paralel cu executarea ciclului curent. (DoEvents trece controlul la sistemul de operare, iar funcția returnează numărul de formulare deschise în VB-aplicație.)

Vechi SLEEP efectuat operatorul de întârziere efectuarea unui număr predeterminat de secunde sau până când apăsați orice tastă de pe tastatură. (Basic / DOS cu el a avut probleme sale deoarece codul cheii apăsată rămâne în tampon și tastatura este utilizată automat în operațiile de intrare ulterioare. Pentru a preveni o situație similară după SLEEP operatorul a fost nivelată tamponul necesar.)

Dacă se dorește, acest mod poate fi implementată în funcția noastră SleepVB. Una dintre variantele sale, precum și necesitatea de a utiliza funcția DoEvents vom arăta în exemplul următor.

Am observat că procedura SleepVB de încărcare a procesorului de 100%, modificat-l după cum urmează.

Acum, descărcarea de 0 - 1% CPU.

247. Întrucât Consiliul pentru a face senzație la începutul programului sau VB-VBA-documentul

Cum pot obține atunci când rulează programul VB-saver a apărut anumite forme care ar dispărea automat după finalizarea descărcării programului? Pentru a face acest lucru, cel mai bine este de a utiliza o versiune a aplicației începe cu subrutina principal (set de comandă Proprietăți proiect | General | Strartup Obiect), care poate arata ceva de genul:

Vă rugăm să rețineți că forma economizor apare aici doar pentru o perioadă foarte scurtă de timp (în acest caz, timpul de descărcare frmMain) și apoi dispare. Cum de a face o întârziere temporară, vom arăta mai jos.

Acum, în fereastra de proiect se va deschide Microsoft Word obiecte nod și dublu-clic pe un element standard de afișat în acesta ThisDocument (care Excel, respectiv, Microsoft Excel obiecte | ThisWorkbook). În fereastra care codul în lista de proceduri de evenimente predefinite (în colțul din dreapta sus), vom găsi deschis de rutină. Asta este dat de control la momentul deschiderii documentului, și aici puteți pune orice cod pentru a efectua operațiunile de pornire necesare. Pune în ea codul de mai jos (figura 247-2).

Fig. 247-2 Pentru a testa această procedură, trebuie să salvați mai întâi și închideți documentul, și apoi redeschide.

Indicație: Pentru a evita închiderea permanentă-deschiderea documentului de depanare, schimbarea descriptor Sub Document_Open cuvinte cheie privată pentru public. În acest caz, această procedură va fi plasat automat în lista de documente macro-uri, și îl puteți accesa oricând, fără a reîncărca documentul.

Cu toate acestea, procedura de funcționare Document_Open, constatăm că natura muncii sale este diferit de modul în care funcționează într-o Visual Basic normală: aici formate economizor nu dispare, atâta timp cât utilizatorul nu-l închide.

Motivul acestui comportament este faptul că matrița poate fi deschis în două moduri diferite: modal și fără moduri. În primul caz, controlul este trecut pentru a forma un sistem complet (toate celelalte elemente de interfață devin indisponibile pentru utilizator) și se întoarce la programul apelant numai după închiderea matriței. Modul non-modal, matrița se deschide și controlul revine imediat la cererea (formularul începe să lucreze ca și în cazul în care în mod independent, în paralel cu toate celelalte elemente ale programului).

Diferența în comportamentul formei splash în VB și VBA este că, datorită arată metoda parametrului implicit în primul caz, matrița este deschisă în modul non-modal, iar al doilea - într-un modal.

Cum putem face pentru a forma-up imagine nu fulgera pe ecran și a rămas pentru o perioadă minimă de timp, de exemplu, 5 secunde? Puteți utiliza timpul de întârziere subrutină SleepVB, stabilit în Consiliul de 246, și apoi deschiderea codul documentului ar fi după cum urmează:

Această variantă de realizare prezintă două dezavantaje. În primul rând, în cazul în care operațiunea suplimentară va dura aproximativ 20 de secunde, atunci ei vor adăuga un plus de 10 secunde, ceea ce este deja prea mult. În al doilea rând, utilizatorul nu va fi în măsură să influențeze reducerea acestui interval de timp, de exemplu, cu auto-închidere forma-saver.

Pentru a rezolva aceste neajunsuri, trebuie să scrie codul direct în timpul de întârziere la procedura noastră de pornire:

Vă rugăm să rețineți că aici am introdus o trimitere la procedura AllStartOperations după ce a primit un temporizator inițial. Astfel, timpul de apariție a protectorului de ecran pe ecran va fi optimizat luând în considerare durata efectuării operațiunilor suplimentare, care este, am eliminat primele opțiuni de intrare defect.

Acest lucru se explică prin faptul că controlul este returnat la programul de asteptare până la egalitate completă este completă formă, dar acest proces nu poate fi finalizată din cauza ciclului de execuție Do. Buclă. Funcția DoEvents oferă de asemenea posibilitatea de a efectua alte procese paralele, inclusiv completarea perdelelor de desen.

Cum vom permite utilizatorului să reducă timpul de întârziere, de exemplu, închideți formularul de ecran click? Pot fi două opțiuni în punerea în aplicare a ciclului de așteptare.
  • Analiza formei deschise:

    Dar această opțiune nu este foarte bun, pentru că în acest moment poate fi deschis chiar și orice altă formă de aplicare (procedura StartAllOperations). Prin urmare, este mai bine să se utilizeze o altă metodă.

  • Analiza formă în stare stropire:

    Asta e tot despre crearea economizoare de ecran de pornire. Vă rugăm să rețineți că punerea în aplicare a programării construiește în VB și VBA este aproape la fel.

    Consiliul 248. Cum să învețe programare în mediul VBA

    Cel puțin jumătate din întrebările pe „MS Office ca un instrument de dezvoltare“, care intră în Centrul Român pentru suport tehnic legate de tema „cum să învețe să program“: cum de a converti datele, cum să lucreze cu variabile string, modul de utilizare a bazei de date și așa mai departe.

    Răspunsul la aceste întrebări este destul de simplu: materiale de studiu asupra mediului de programare într-un VB convențional. În ceea ce privește programul în sine, MS Office și VB se intersectează la 70-80 la sută. Și nu fi surprins de faptul că, în cărțile de întrebări „Office / VBA“ Tehnologia de codificare adesea acoperite destul de rar. Doar aceste subiecte sunt discutate mai detaliat în alte cărți.

    250. Deoarece mesajele de e-mail ale Consiliului codifică

    Probleme cu decodare duală a mesajelor de e-mail nu sunt comune, dar ele nu există.

    articole similare