Tutorialul despre Delphi

Puteți utiliza proprietatea formularului ActiveControl, dar componenta care a denumit meniul contextual nu poate fi neapărat controlul activ.

"Care sunt limitele controalelor standard Delphi?"

Orice componentă care utilizează TList poate stoca informații până la 16368 elemente. De exemplu, TTabControl poate conține până la 16368 marcaje, iar paleta de componente Delphi poate conține până la 16368 de pagini ale paletei.







Multe componente standard Delphi sunt shell-uri de control standard Windows. Windows 3.1 impune propriile limitări asupra acestor componente. De exemplu: TComboBox și TListbox pot conține până la 5440 de elemente, în TMemo sau TEdit (și alte componente corespunzătoare), până la textul de 32k.

Cantitatea de resurse Windows 3.1 limitează componenta TNoteBook și îi permite să aibă maximum 570 de pagini. (Este, de asemenea, dificil să obțineți mai mult de 500 de descriptori de ferestre pentru orice aplicație Windows.)

Nota 1: Depășirea limitei ridică o excepție sau poate face Windows să funcționeze instabil.

Nota 2: Multe limitări inerente în versiunea pe 16 biți a Windows sunt reduse în mod semnificativ în Windows NT și Windows 95. În viitor, versiunile pe 32 de biți ale Delphi, aceste limitări vor dispare practic.

"Cum pot determina lungimea unui șir în pixeli cu un anumit font?"

Pentru a determina înălțimea și lățimea unei linii în pixeli, pot fi utilizate două metode Canvas - TextHeigh și TextWidth. Nu uitați să atribuiți un font unui obiect Canvas înainte de a fi tras sau măsurat ceva.

Toate componentele vizuale au proprietatea Canvas, dar în mod implicit este protejată, astfel încât numai copiii direcți pot accesa această proprietate. Dar din moment ce vă creați codul pe baza moștenitorilor TForm, aproape întotdeauna aveți acces la proprietatea moștenită a formularului Canvas. Componenta TPaintBox are proprietatea publică Canvas, astfel încât să puteți desena ceva în handlerul evenimentului OnPaint, dar îl puteți folosi în scopurile noastre.

Dacă componenta nu are proprietatea Canvas, atunci următoarea funcție vă va ajuta să returnați lățimea textului pe baza unui anumit font:

funcția GetTextWidth (CanvasOwner: TForm; Text; String;

"De ce unele componente vizuale precum TPanel și TEdit nu au proprietatea Canvas?"

Toți moștenitorii TCustomControl au proprietatea Canvas, cu toate acestea, este necesar să existe un fel de mecanism de protecție, astfel încât alți "artiști" să nu poată atrage atenția asupra componentei. Moștenitorii componentei au întotdeauna acces la proprietățile protejate pe care le mostenesc de la componentă (cum ar fi Canvas), dar aceiași utilizatori ai componentei nu au acces la ele.

TCanvasPanel = clasă (TPanel)

"Cum obțin o bară de defilare orizontală în componenta ListBox?"

Trimiteți mesajul LB_SetHorizontalExtent la descriptorul de fereastră al componentei ListBox. De exemplu, un mesaj poate fi trimis în procesorul de evenimente OnCreate:







procedura TForm1.FormCreate (expeditor: TObject);

SendMessage (Listbox1.Handle, LB_SetHorizontalExtent, 1000. Longint (0));

"Are Delphi o componentă care suportă comunicațiile seriale (porturi)?"

Nu, nu este. Cu toate acestea, există biblioteci pentru a lucra cu porturi seriale (și în curând ar trebui să apară componente) pentru Delphi de la terțe părți, cum ar fi TurboPower, SaxComm și altele.

"Cum pot seta filele în controlul TMemo?"

Pentru a seta un tabulator într-o componentă de editare cu mai multe linii (de exemplu, TMemo), trimiteți un mesaj EM_SetTabStops. Tabloul tab-uri indică locația filelor. Deoarece parametrul WParam din SendMessage este 1, toate filele vor fi setate la valoarea trecută în tabloul Tabs. Nu uitați să setați componenta TabTabs WantTabs a componentei TMemo la True.

procedura TForm1.FormCreate (expeditor TObject);

TabInc. LongInt = 10;

TrimitereMessage (Memo1.Handle, EM_SetTabStops, 1. Longint (@TabInc));

"Care este cel mai bun loc în codul de program, unde poți apela fereastra cu logo-ul programului când îl executați?"

Cel mai bun loc pentru a afișa o fereastră cu o siglă este în codul sursă al proiectului după prima aplicație Application.FormCreate și înainte de aplicația Application.Run. Astfel, vom crea formularul în zbor și îl afișăm înainte de lansarea reală a aplicației.

„În timpul programului, fiecare fereastră de copil nou deschis apare puțin mai jos și spre dreapta celui anterior. Problema mea este că atunci când am închide orice fereastră de copil și de a deschide noi, se pare că în dreapta și de mai jos, care, pe care am închis înainte de a fi chiar dacă ar fi fost singura, prin ce reguli a scris? "

Acesta este modul în care funcționează ferestrele MDI pentru copii. În această situație VCL nu se suprapune comportamentul Windows, astfel de reguli dictează sistemul în sine.

Prezumția neconfirmată: În procedura FormCreate, încercați să setați valorile cerute la proprietățile Top, Stânga, Lățime și Înălțime. FormCreate a formularului MDI copil va fi apelat înainte ca fereastra însăși să fie afișată.

"De ce nu pot găsi programul meu resursele pe care le-am împachetat în fișierul .RES dacă fișierul .RES are același nume ca modulul de formular?"

Dacă numele fișierului .RES pe care îl utilizați se potrivește cu numele fișierului .DPR, Delphi îl va suprascrie creând propriul fișier .RES cu acest nume. În plus, proiectul RES-file este destinat numai managerului de proiect Delphi, nu îl editați și nu îi adăugați resurse.

"Există o funcție pentru a derula formularul cu ajutorul tastelor? De exemplu, derulați în sus și în jos când apăsați PgUp și respectiv PgDown.

Formularul este derulat prin schimbarea proprietății Poziție a proprietății formei din barul VertScrollbar sau HorzScrollbar. Următorul cod arată cum se face acest lucru:

Care este ordinea evenimentelor la crearea și afișarea unui formular?

Când creați un formular, evenimentele apar în ordinea următoare: OnCreate, OnShow, OnPaint, OnActivate, OnResize și din nou OnPaint.

„De ce, în cazul în care forma de tratare a OnActivate FormStyle schimba proprietatea, eroare«nu poate schimba vizibil în OnShow sau OnHide»(nu pot schimba vizibile (vizibilitate) în OnShow sau OnHide)?

proprietate FormStyle determină stilul ferestrei fiind creat și este de obicei instalat în OnCreate de tratare a evenimentelor, cu toate acestea, puteți schimba și după crearea unui mâner de fereastră, nu numai în Stivuitoare eveniment OnActivate, OnShow sau OnHide. Problema dvs. este că încercați să modificați stilul de formular când apar evenimente OnShow și OnHide.

"Cum pot face o componentă o graniță ca" scufundată "sau" ridicată "?

Pentru a face ca elementul să fie ușor încastrat sau ridicat, plasați-l pe componenta TBevel sau TPanel, care are proprietăți corespunzătoare scopului.

Unde pot găsi codul sursă al componentelor paginii (de exemplu, TTabbedNotebook)?

Codul sursă VCL nu conține codul pentru componentele "tab" din motive legale. Cu toate acestea, sursa de interfață este localizată în directorul DELPHI \ DOC și are extensia INT.

Notă: proprietarii înregistrați ai codului sursă Delphi RTL pot solicita codul sursă TTabSet și TTabbedNotebook de la Borland Corporate Affairs. Instrucțiunea este în fișierul readme al codului sursă RTL. [000892]







Articole similare

Trimiteți-le prietenilor: