Lucrarea
8
Crearea controalelor
personalizate si a meniurilor
1. Crearea controalelor personalizate
2. Crearea machetelor de formulare
3. Meniuri
Exemplu:
Se va trata evenimentul onOpen pentru formularul de vizualizare
studenti.
PROCEDURE Form_OnOpen
meniuStud = new MENU(this);
DEFINE MENU navigare OF meniuStud;
PROPERTY;
Text "&Navigare"
DEFINE MENU mnUrm OF meniuStud.navigare;
PROPERTY;
Text "&Urm",;
OnClick {;SKIP}
DEFINE MENU mnPrec OF meniuStud.navigare;
PROPERTY;
Text "&Prec",;
OnClick {;SKIP-1}
DEFINE MENU mnLinie OF meniuStud.navigare;
PROPERTY;
Text "",;
Separator .T.
DEFINE MENU mnIesire OF meniuStud.navigare;
PROPERTY;
Text "&Iesire",;
OnClick {;form.Close()}
RETURN
|
4. Meniuri tip lista (meniuri popup)
Exemplu:
Se va trata evenimentul onOpen pentru
formularul de vizualizare studenti.
PROCEDURE Form_OnOpen
NEW POPUP(this,"pop")
form.pop.Top = 0
form.pop.Left = 0
DEFINE MENU urm OF form.pop;
PROPERTY;
Text "&Urm",;
OnClick {;SKIP}
DEFINE MENU prec OF form.pop;
PROPERTY;
Text "&Prec",;
OnClick {;SKIP-1}
DEFINE MENU linie OF form.pop;
PROPERTY;
Text "",;
Separator .T.
DEFINE MENU iesire OF form.pop;
PROPERTY;
Text "&Iesire",;
OnClick {;form.Close()}
form.PopupMenu = form.pop
RETURN
|
5. Probleme propuse
P1. Rulati exemplele prezentate în
acest capitol.
P2. Studiati
codul generat la salvarea unui control personalizat, respectiv la salvarea
unui machete de formular.
P3. Creati
meniuri popup pentru câteva din elementele de interfata pentru un
formular de vizualizare masini (tabela - date masini.dbf,
respectiv binary masini.dbt). Pentru aceasta
se vor trata urmatoarele evenimente pentru fiecare control în parte:
* OnOpen - creaza
meniup popup corespunzator obiectului;
* OnRightMouseDown
- deschide meniul ajustând pozitia lui în punctul unde s-a
apasat butonul:
Procedure control_onRightMouseDown(flags, col,
row)
* Seteaza pozitia meniului popup - meniul edit_pop
a fost creat pe
* evenimentul control_onOpen
form.edit_pop.top = row + this.top
form.edit_pop.left = col + this.left
* Seteaza în popup o referinta la controlul
curent
* pentru a se face revenirea tot pe el.
form.edit_pop.active = this
form.edit_pop.open()
Obs: pentru tratarea
evenimentului in fereastra principala nu se vor mai aduna this.top
si this.left la coordonatele cursorului.
©
s.l. dr. ing. Dan Pescaru '2004
|