1

Konu: gridde fieldi ortalatma

selam arkadaşlar ;
yapmış olduğum bir formvar ;
formun datasasion:2
buffer mod:2
bu formda grid1 adında bir gridim var
yazmış olduğum bir arama çumlesinin pek çok fieldde aranmasını istiyorum. bunun için


    SELECT * FROM hasta WHERE ;
    adi=UPPER(m.cdisplayvalue) OR soyadi=UPPER(m.cdisplayvalue) OR evtel1=UPPER(m.cdisplayvalue)  OR evtel2=UPPER(m.cdisplayvalue);
     OR istel1=UPPER(m.cdisplayvalue) OR istel2=UPPER(m.cdisplayvalue)OR gsm1=UPPER(m.cdisplayvalue) OR gsm2=UPPER(m.cdisplayvalue)OR fax=UPPER(m.cdisplayvalue);
     INTO CURSOR kayit ORDER BY adi
     GO top
    Thisform.Grid1.RecordSource="kayit"
    thisform.grid1.Refresh
diye bir komutum var ve bu komut çalışıyor.

sorunum şu.

şarta uyan field bazan grid içindeki fieldin son sıralarda olmasından dolayı gözükmüyor.
yani satır gözüküyor nerde olduğunu bulmak içinse scroll dan kaydırma yapmam gerekiyor.

acaba aranan şarta uyan ilk  fieldi direk grid1 de ortalatarak karşıma çıkartacak  bir komut var mı ?

Şimdiden herkese teşekkürler

2

Re: gridde fieldi ortalatma

Visual Fox Pro
with thisform.grid1

  FOR ix =1 TO .ColumnCount
    luData = GETPEM(.Columns[m.ix],'Controlsource')
    IF TYPE(m.luData) = 'C' AND UPPER(EVALUATE(m.luData)) = UPPER(m.cDisplayValue)
       .ActivateCell( recno(.Controlsource), m.ix )
       exit
    endif
  endfor
endwith

3

Re: gridde fieldi ortalatma

Pardon ActivateCell degil Setfocus olacakti. Ornek

Visual Fox Pro
Public oform1

 
oform1=Newobject("form1")
oform1.Show
Return
 
Define Class form1 As Form
  DataSession = 2
  Top = 0
  Left = 0
  Height = 325
  Width = 564
  DoCreate = .T.
  Caption = "Form1"
  Name = "Form1"
 
  Add Object grdcustomer As Grid With ;
    ColumnCount = 12, ;
    Height = 273, ;
    Left = 11, ;
    RecordSource = "customer", ;
    RecordSourceType = 1, ;
    Top = 5, ;
    Width = 541, ;
    Name = "grdCustomer"
 
  Add Object combo1 As ComboBox With ;
    Height = 24, ;
    Left = 108, ;
    Top = 288, ;
    Width = 132, ;
    Name = "Combo1"
 
 
  Add Object label1 As Label With ;
    Caption = "Change tag to", ;
    Height = 17, ;
    Left = 12, ;
    Top = 292, ;
    Width = 84, ;
    Name = "Label1"
 
 
  Add Object cmdShowSource As Commandbutton With ;
    Left = 250, ;
    Top = 288, ;
    Caption = 'source'
 
  Procedure Init
    With This.grdcustomer
      .AddProperty('CurrentOrder',0)
      Select Recno() As RcNo, 1 As OrderCol ;
        from (.RecordSource) ;
        order By OrderCol  ;
        into Cursor crsOrdering ;
        readwrite
      Select crsOrdering
      Index On RcNo Tag RcNo
 
      Select (.RecordSource)
      Local lcAlternatingExpression
      lcAlternatingExpression = "Recno('crsOrdering')%2=0"
      *!*    Borrowed expression from Fabio Lunardon - alternate in 2 rows groups
      *!*   lcAlternatingExpression = "BitTest((Recno('crsOrdering')-1)/2,0)"
 
      .SetAll("DynamicBackColor", ;
        "IIF(Seek(Recno(this.recordsource),'crsOrdering','rcno') and "+;
        m.lcAlternatingExpression+",0xC0C0C0,0xFFFFFF)", "Column")
    Endwith
  Endproc
 
  Procedure grdcustomer.Refresh
    Local lcOrder, lnOrder
    With This
      Select (.RecordSource)
      lnOrder = Val(Sys(21))
      If .CurrentOrder # m.lnOrder
        lcOrder = Iif(m.lnOrder = 0,'1',Key(m.lnOrder))
        Select Recno() As RcNo, &lcOrder As OrderCol ;
          from (.RecordSource) ;
          order By OrderCol  ;
          into Cursor crsOrdering ;
          readwrite
        Select crsOrdering
        Index On RcNo Tag RcNo
        Select (.RecordSource)
        .CurrentOrder = m.lnOrder
      Endif
    Endwith
  Endproc
 
 
  Procedure combo1.InteractiveChange
    Select customer
    If ( This.Value == "None" )
      Set Order To 0
    Else
      Set Order To Tag (This.Value)
    Endif
    Thisform.grdcustomer.Refresh()
  Endproc
 
 
  Procedure combo1.Init
    Select customer
    This.AddItem( "None" )
    For ix=1 To Tagcount()
      This.AddItem( Tag(ix) )
    Endfor
  Endproc
 
  Procedure Load
    Use (_samples+'data\customer')
  ENDPROC
 
  PROCEDURE cmdShowSource.click
    m.cDisplayValue = 'USA'
 
    WITH thisform.grdCustomer
      SELECT (.recordsource)
      scan
        FOR ix =1 TO .ColumnCount
          luData = GETPEM(.Columns[m.ix],'Controlsource')
          IF TYPE(m.luData) = 'C' AND UPPER(EVALUATE(m.luData)) = UPPER(m.cDisplayValue)
            .Columns(m.ix).Setfocus
            this.SetFocus
            return
          ENDIF
        ENDFOR
      endscan
    endwith
  endproc
Enddefine

4

Re: gridde fieldi ortalatma

Çok sağol hocam sayende haloldu sorunum