Search  
Saturday, February 11, 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  Clase - VCX si PRG  Setare control ...
 Setare control curent la o coloana din grid programmatically
 
 5/11/2010 12:26:41 PM
User is offlineoviciandrus
761 posts
www.comptech.ro
1st




Setare control curent la o coloana din grid programmatically
 (N/A)
Salut
m-am hotărât să trec de la VFP6 la VFP9

Pentru a avea la griduri coloanele customizate am folosit

DEFINE CLASS GridColumn AS Column
    FontName             = 'Tahoma'
    FontSize             = 8
    HeaderClass         = 'ColumnHeader'
    HeaderClassLibrary  = CLASS_FOLDER + 'header.class.prg'
   
    PROCEDURE Init()
        *this.RemoveObject('Text1')
        this.AddObject('text2','btextbox')
        this.text2.Visible = .t.
        this.CurrentControl = 'text2'
    ENDPROC
ENDDEFINE

aceasta definitie o folosesc la grid la proprietatea: MemberClassLibrary
in plus vreau să schimb controlul implicit "Text1" cu alt control pe baza clasei "btextbox".
Precizez că funcţionează cum doresc. Dar celula selectată este încadrată de paranteze drepte de culoare albastra, ceva de genul [ ... ]
vreau să întreb
1) dacă am procedat bine folosind Init() sau se putea altfel
2) de ce îmi dă eroarea ca nu exista obiectul Text1 la RemoveObject('Text1')

 5/11/2010 2:22:59 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Setare control curent la o coloana din grid programmatically
 (N/A)
1. Textbox-ul se adauga cu ADD OBJECT in definitia clasei.

DEFINE CLASS GridColumn AS Column
    FontName             = 'Tahoma'
    FontSize             = 8
    HeaderClass         = 'ColumnHeader'
    HeaderClassLibrary  = CLASS_FOLDER + 'header.class.prg'
   
 ADD OBJECT bText1 AS btextbox OF btextboxlibrary
    FontName='Tahoma'
    FontSize=8
    ForeColor=RGB(255,0,0)  && Se vede imediat daca s-a instantiat controlul

ENDDEFIN
E

BTW, clasa header poate fi definita in acelasi prg cu definitia column.

2. Text1 nu exista inca la instantierea coloanei. Ca si headerul, este adaugat automat, fara ca in clasa custom a coloanei sa existe comanda ADD OBJECT.
Aceast comportament a generat o serie de bug-uri, printre care :
- Daca textbox-ul este denumit Text1 in clasa coloanei, se instantiaza din clasa de baza, nu din cea precizata in comanda ADD OBJECT
- Acelasi lucru se intampla si cu header-ul, daca este denumit Header1.
- Chiar daca la prima instantiere a gridului se instantiaza corect chiar cu Text1 si Header1, la redeschiderea formului cu un astfel de grid, fie in editare, fie la rulare, Text1 si Header1 sunt instantiate din clasele de baza, si nu din cele precizate in ADD OBJECT text  si in HeaderClass.

Nu pot spune daca s-a remediat ceva in patch-urile de dupa SP2 - mi-am adaptat codul la acest comportament si n-am mai testat.

E nevoie de o comanda SET PROCEDURE TO columnclasslib (si headerclasslib, daca e definit in prg separat) inainte de a edita sau rula un form care contine un grid cu coloane custom.


Daniel Buduru
 5/11/2010 4:15:44 PM
User is offlineoviciandrus
761 posts
www.comptech.ro
1st




Re: Setare control curent la o coloana din grid programmatically
 (N/A)
Mulţumesc pentru răspuns.
  Visual FoxPro  Clase - VCX si PRG  Setare control ...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement