Search  
Friday, May 25, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Cod, sintaxa si comenzi  Referitor la si...
 Referitor la sintaxa
 
 9/16/2010 1:22:33 PM
User is offlinedanilea
212 posts
4th


Referitor la sintaxa
 (N/A)
Buna ziua,
Lucrez cu VFP9.
Am o Forma si pe ea un Grid.
Grid-ul este generat dintr-o clasa proprie(este cea nativa cu unele modificari).
Cind duc mouse-ul pe Header-ul din Grid->Column vreau sa faca ceva.Stiu ca trebuie scris cod in metoda MouseMove
din Header si face ce-mi trebuie.Dar nu vreau sa scriu cod pentru fiecare Header in parte.
Dupa mine ar fi doua posibilitati:
1.Cum nu exista in VFP9 o clasa Header de sine statatoare,m-am gindit ca daca scriu cod in ClasaMea_Grid->MouseMove
o pot apela cu DODEFAULT(parametru) din Grid->Column->Header de pe Forma mea.
Aici am o problema cu sintaxa de apelare a ClasaMea_Grid->MouseMove.Am incercat:
- This.Parent.Parent.MouseMove.DoDefault(parametru) .Executa codul din ClasaMea_Grid->MouseMove dar NU
recunoaste parametrul !!??
- Daca scriu DoDefault(parametru) rezultatul este acelasi ca mai sus.
2.A doua posibilitate ar fi sa creez in ClasaMea_Grid o metoda pe care sa o apelez(daca este cazul) direct din
Grid->Column->Header->MouseMove .
Daca se poate,vreau un sfat.
Multumesc.
 9/16/2010 2:40:58 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Referitor la sintaxa
 (N/A)
1.a.  Exista clasa column, in care se poate pune cod in metodele headerului. Clasa column se indica in grid.memberclass / grid.memberclasslibrary
1.b. Ce inseamna mai exact "Nu recunoaste parametrul"? Mai degraba in una din metode, fie cea apelata, fie cea apelanta a fost stearsa linia PARAMETERS

2. Se poate face Bindevent() cu sursa pe Header.MouseEnter (m-as feri de cod in MouseMove, daca nu ceva e legat de pozitia pointerului, cum ar fi drag-drop sau sau dimensionare activa sau ceva de genul asta)
In metoda delegata se poate folosi Aevents() pentru a determina obiectul sursa, in cazul in care mai multe obiecte sunt legate la acceasi metoda delegata.

Daniel Buduru
 9/17/2010 12:53:40 PM
User is offlinedanilea
212 posts
4th


Re: Referitor la sintaxa
 (N/A)
Buna ziua Dl.Buduru,
Referitor la 1.a,help-ul la "Base classes in VFP" zice "Not available for subclass creation".Daca exista clasa Column pe undeva in VFP9,eu nu stiu unde este.
Din Grid.memberclass imi cere un PRG.Stiu ca in acest PRG trebuie sa scriu "Define Class mycolumn As Column..." si "Define Class myheader As Header..."
si la grid.memberclass / grid.memberclasslibrary pun acest PRG.
Referitor la pct.2 trebuie sa ma dumiresc cum se procedeaza.
Multumesc pentru raspuns.
 9/27/2010 1:15:16 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Referitor la sintaxa
 (N/A)

Clasa column nu poate fi subclasata in designer, dar poate fi subclasata in cod. La fel si clasa header.
Aici este un exemplu de clasa column si header. Gridul in care este utilizata va avea proprietatile urmatoare:
MemberClass="myColumn"
MemberClassLibrary="myColum.prg"

mycolum.prg

Define Class myColumn As Column
  HeaderClass
= "myHeader"
  HeaderClassLibrary = "mycolumn.prg"
  FontSize=8
  Caption = this.name
Enddefine

Define Class myHeader As Header
  FontName
= 'Arial'
  FontCharSet = 238
  FontSize = 8
  Alignment = 2
 
BackColor = Rgb(236,242,253)

  PROCEDURE MouseEnter
    LPARAMETERS
nButton, nShift, nXCoord, nYCoord
   
this.Tag=this.Parent.parent.tooltiptext
    This
.Parent.parent.ToolTipText=this.ToolTipText
  ENDPROC

  PROCEDURE MouseLeave
    LPARAMETERS
nButton, nShift, nXCoord, nYCoord
   
This.Parent.parent.ToolTipText=This.Tag
  
ENDPROC

Enddefine

 

Pentru metoda cu bindevent (codul nu e testat, pot fi erori de tastare):

Poti face o clasa grid cu doua metode: OnHeaderEnter si OnHeaderLeave

In grid.Init pui acest cod:

For each oCol in this.Columns Foxobject
   bindevent(ocol.Objects(1),'MouseEnter',this,'OnHeaderEnter')
 
 bindevent(ocol.Objects(1),'MouseLeave',this,'OnHeaderLeave')
Next
*Codul trebuie rulat de fiecare data cand se adauga o noua coloana dupa instantierea gridului

In grid.OnHeaderEnter

LPARAMETERS nButton, nShift, nXCoord, nYCoord
AEVENTENTS(laev,0)
loObj=laev(1)
this.Tag=this.ToolTiptext
This.ToolTiptext=loObj.ToolTiptext

In grid.OnHeaderLeave

LPARAMETERS nButton, nShift, nXCoord, nYCoord
this.ToolTiptext=this.tag


Daniel Buduru
 9/27/2010 2:02:55 PM
User is offlinedanilea
212 posts
4th


Re: Referitor la sintaxa
 (N/A)
Buna ziua Dl.Buduru,
Va multumesc pentru raspuns.
Dan Ilea
 10/13/2010 2:30:59 PM
User is offlinedanilea
212 posts
4th


Re: Referitor la sintaxa
 (N/A)
Buna ziua Dl.Buduru,
Am o nelamurire(deocamdata):
In clasa myColumn am introdus o proprietate: myProprietate1=.F.
In Forma pe care am Gridul cu MemberClass="myColumn",MemberClassLibrary="myColum.prg" in Init-ul myColumn1 am schimbat
this.myProprietate1=.T.
Nu ia in considerare aceasta schimbare si nu ma dumiresc de ce.
Multumesc.
 10/13/2010 3:17:11 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Referitor la sintaxa
 (N/A)
Dupa cate inteleg, in form designer, gridul cu pricina nu este populat cu coloane din clasa din MemberClass, ci cu coloane din clasa de baza.
La rulare, coloanela din clasa de baza sunt indepartate si inlocuite cu coloane din clasa din MemberClass. Codul scris in metodele acestor coloane se pierde odata cu ele.

Creeaza o clasa grid cu MemberClass myColumn si restul.
Pune-i columncount=-1
Salveaza clasa intr-o biblioteca.
Pune in form aceasta clasa si populeaz-o cu cate coloane e necesar. Codul si proprietatile nu se vor mai pierde.

Daca ai definit si clasa header in acelasi myColumn.prg, si primesti o eroare cum ca nu gaseste clasa headerului, da o comanda SET PROC TO myColumn.prg in fereastra de comenzi inainte de a aduce gridul in form designer.

Daniel Buduru
 10/13/2010 3:51:15 PM
User is offlinedanilea
212 posts
4th


Re: Referitor la sintaxa
 (N/A)
Buna ziua Dl.Buduru,
In form designer gridul este populat cu coloanele din clasa MemberClass(myCol din myColumn.prg).
Este creata clasa grid cu MemberClass myCol,clasa myHeader este creata in acelasi myColumn.prg .
Nu asta este problema mea: gridul de pe forma mea este cu MemberClass=myCol;in myColumn.prg
dupa DEFINE CLASS myCol as Column am scris myProprietate1=.F.
Daca ma uit,in form designer,pe gridul de pe forma,in myCol1 apare myProprietate1=.F.
Asa si trebuie.Problema apare in runtime:in Init-ul lui myCol1 am scris myProprietate1=.T. pentru
ca am nevoie de ea,intr-un anumit context,sa fie .T. .Nu ma baga in seama.
Multumesc pentru raspuns.
 10/13/2010 4:10:28 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Referitor la sintaxa
 (N/A) Modified By Daniel Buduru  on 10/13/2010 4:14:13 PM)
Pare a fi un bug. Nu se executa metoda init a coloanei instantiate. Metoda init a clasei coloanei se executa normal.
Oricum, nu va fi eliminat niciodata.
Ca metoda de ocolire, pune codul respectiv in initul gridului.
Pe de alta parte, poti seta in designer myProprietate1=.T. la coloana respectiva, nu e nevoie de cod in init pentru asta.

Daniel Buduru
 10/14/2010 11:15:59 AM
User is offlinedanilea
212 posts
4th


Re: Referitor la sintaxa
 (N/A)
Buna ziua Dl.Buduru,
Ultima afirmatie din sfatul Dv.este cea mai buna.Asa trebuia sa fac dar eu am fost ca orbul care a vazut Braila.
Multumesc.
  Visual FoxPro  Cod, sintaxa si comenzi  Referitor la si...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement