Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Problem with data binding in Grid class
Message
 
 
To
26/02/2013 13:38:37
Alp Berker
Defense Finance and Accounting Services
Indianapolis, Indiana, United States
General information
Forum:
Visual FoxPro
Category:
Object Oriented Programming
Environment versions
Visual FoxPro:
VFP 9 SP2
OS:
Windows XP SP2
Network:
Windows 2003 Server
Database:
Visual FoxPro
Application:
Desktop
Miscellaneous
Thread ID:
01566955
Message ID:
01566963
Views:
55
>Sure, here is the code
>
>Define Class UIController As Custom
>   Add Object ReportCollection As Collection
>   oForm = ""
>   Descriptn = .F.
>
>   Procedure Init()
>      This.ReportCollection.Add(Createobject('AgingReport'), 'AgingReport')
>      This.ReportCollection.Add(Createobject('CollDisb'), 'CollDisb')
>      This.ReportCollection.Add(Createobject('NetDisbursement'), 'NetDisbursement')
>      This.ReportCollection.Add(Createobject('TransactionLayer'), 'TransactionLayer')
>   Endproc
>
>   Procedure setFormRef(oForm)
>*      oForm.AddObject('grdDetail', 'grdDetail')
>      This.oForm = oForm
>   Endproc
>
>   Procedure BuildGrid()
>      This.oForm.grdDetail.BuildGrid(This.oForm)
>      This.oForm.grdDetail.Refresh
>   Endproc
>EndDefine
>
>Define Class DetailColumn As Column
>   Service = ""
>   HdrText = ""
>   strArmy = "Service = 'ARMY'"
>   strTreas = "Service = 'TREA'"
>   strTotal = "Service = 'Total'"
>   strNavy = "Service = 'NAVY'"
>   strUSAF = "Service = 'USAF'"
>   strOSD = "Service = 'OSD'"
>   intCol = 0
>   Alignment = 6
>
>   Procedure Init(intNumber)
>      With This
>         .intCol = intNumber
>         .Header1.Caption = Iif(.intCol = 1, "Reporting"  + Chr(13) + Chr(10) + "ALC", ;
>            IIF(.intCol = 2, "Treasury"  + Chr(13) + Chr(10) + Chr(40)+ "GWA" + Chr(41), ;
>            IIF(.intCol = 3, "Month Year", Iif(intCol = 4, "Aging" + Chr(13) + Chr(10) + "Days", ;
>            IIF(.intCol = 5, "Limit", Iif(intCol = 6, "Status", Iif(intCol = 7, "Description", ;
>            IIF(.intCol = 8, "Point of Contact", Iif(.intCol = 9, "Contact" + Chr(13) + Chr(10) + "Date", "Action Taken")))))))))
>         .Header1.Refresh
>      Endwith
>   Endproc
>   Procedure setAlignment()
>      This.Alignment = Iif(This.intCol = 2, 1, 9)
>   Endproc
>
>   Procedure setWidth()
>      With This
>         .Width = Iif(Inlist(.intCol, 4, 5, 6),75, Iif(Inlist(.intCol, 7), 65, Iif(.intCol = 1, 100, Iif(.intCol = 2, 125, Iif(.intCol <> 8, 100, 175)))))
>      Endwith
>   Endproc
>
>   Procedure setName(strRecordSource)
>      This.Name = Field(This.intCol, strRecordSource)
>   Endproc
>
>   Procedure SetDynamicBackColor()
>      This.DynamicBackColor = "Iif(&this.strArmy, Rgb(0,128,128), Iif(&this.strNavy, Rgb(0,64,128), ;
>         Iif(&this.strUSAF, Rgb(0,128,255), Iif(&this.strTreas, Rgb(0,128,64), Iif(&this.strOSD, ;
>         Rgb(222,254,180), Rgb(255,255,255))))))"
>   Endproc
>
>   Procedure SetDynamicForeColor()
>      This.DynamicForeColor = "Iif(&this.strArmy, Rgb(255,255,0), Iif(InList(Service, 'NAVY', 'USAF'), ;
>         Rgb(255,255,255), Iif(&this.strTreas, Rgb(255,254,230), Rgb(0,0,0))))"
>   Endproc
>
>   Procedure settextFormat(strFormat)
>      This.text1.Format = strFormat
>   Endproc
>
>   Procedure setEnabled(blnEnabled)
>      This.Enabled = blnEnabled
>   Endproc
>
>   Procedure SetControlEnabled(blnEnabled)
>      With This
>         mobjCurrentControl = '.' + .CurrentControl + '.Enabled'
>         &mobjCurrentControl = blnEnabled
>      Endwith
>   Endproc
>
>   Procedure SetBackgroundAttributes()
>      With This
>         mobjDisabledBackColor = '.' + .CurrentControl + '.DisabledBackColor'
>         mobjBackColor = '.' + .CurrentControl + '.BackColor'
>         Store Iif(&.strArmy, Rgb(0,128,128), Iif(&.strNavy, Rgb(0,64,128), Iif(&.strUSAF, Rgb(0,128,255), Iif(&.strTreas, Rgb(0,128,64), ;
>            Iif(&.strOSD, Rgb(222,254,180), Rgb(255,255,255)))))) To &mobjDisabledBackColor, &mobjBackColor
>      Endwith
>   Endproc
>
>   Procedure SetForegroundAttributes()
>      With This
>         mobjDisabledForeColor = '.' + .CurrentControl + '.DisabledForeColor'
>         mobjForeColor = '.' + .CurrentControl + '.ForeColor'
>         Store Iif(&.strArmy, Rgb(255,255,0), Iif(Inlist(Service, 'NAVY', 'USAF'), Rgb(255,255,255), Iif(&.strTreas, Rgb(255,254,230), Rgb(0,0,0)))) ;
>            To &mobjDisabledForeColor, &mobjForeColor
>      Endwith
>   Endproc
>
>   Procedure AddObject2Column()
>      With This
>         Do Case
>            Case .intCol = 6
>               If Type('oCol.cmbActive') <> 'O'
>                  .AddObject("cmbActive", "COMBOBOX")
>               Endif
>               .CurrentControl = "cmbActive"
>               .ControlSource = "dtlRecon1.ActiveVar"
>               .cmbActive.RowSource = "ThisForm.cntRecon"
>               .cmbActive.RowSourceType = 10
>            Case .intCol = 1
>               If Type('oCol.cmbService') <> 'O'
>                  .AddObject("cmbService", "COMBOBOX")
>               Endif
>               .CurrentControl = "cmbService"
>               .ControlSource = "dtlRecon1.Service"
>               .cmbService.RowSource = "ServiceTypes.Service"
>               .cmbService.RowSourceType = 6
>            Case Inlist(.intCol, 3, 9)
>               If Type('oCol.dtpPicker') <> 'O'
>                  .AddObject('dtpPicker', Iif(intCol = 3, 'dtPicker', 'dtPickerCT'), 'MSComCtl2.DTPicker.2')
>               Endif
>               Store .F. To .dtpPicker.Visible, .dtpPicker.Enabled
>               .CurrentControl = "Text1"
>            Case .intCol = 2
>*               .text1.Format = "@RK"
>               .text1.InputMask = "$$$,$$$,$$$,999,999.99"
>            Case intCol = 10
>               .text1.ToolTipText = Alltrim(dtlRecon1.ActnTkn)
>            Case intCol = 7
>               .text1.ToolTipText = Alltrim(dtlRecon1.Descriptn)
>         Endcase
>         mobjBackStyle = '.' + oCol.CurrentControl + '.backstyle'
>         mobjBorderStyle = '.' + oCol.CurrentControl + '.borderstyle'
>         mobjName = '.' + oCol.CurrentControl + '.name'
>         If Lower(&mobjName) = "cmb"
>            Store 0 To &mobjBorderStyle
>            *&mobjBackStyle
>         Endif
>      Endwith
>   Endproc
>Enddefine
>
>Define Class grdDetail As Grid
>   ColumnCount = 0
>   DeleteMark = .F.
>   Height = 348
>   HighlightRow = .F.
>   Left = 5
>   RecordMark = .T.
>   RecordSource = "dtlRecon1"
>   RecordSourceType = 1
>   Top = 254
>   Width = 1009
>   Name = "grdDetail"
>   Visible = .T.
>
>   Procedure Init()
>      For intCol = 1 To 10
>         This.AddObject('Column' + Alltrim(Str(intCol)), 'DetailColumn', intCol)
>      Endfor
>   Endproc
>
>   Procedure BuildGrid(oForm)
>*   SET STEP ON
>      This.ColumnCount = 0
>      For intCol = 1 To 10
>         This.AddObject('Column' + Alltrim(Str(intCol)), 'DetailColumn', intCol)
>      Endfor
>
>      For Each oCol In This.Columns
>         oCol.setAlignment()
>         oCol.setWidth()
>         oCol.setName(This.RecordSource)
>         oCol.settextFormat("@KR!")
>         oCol.setEnabled(oForm.Editing Or oForm.Adding)
>         oCol.AddObject2Column()
>         oCol.SetBackgroundAttributes()
>         oCol.SetForegroundAttributes()
>         oCol.SetControlEnabled(oForm.Editing Or oForm.Adding)
>         oCol.SetDynamicBackColor()
>         oCol.SetDynamicForeColor()
>         oCol.Sparse = .F.
>         oCol.Visible = .T.
>      Endfor
>   Endproc
>
>Enddefine
>
For the moment, what happens if you change the this.AddObject to use default column and comment out for each code for now?
If it's not broken, fix it until it is.


My Blog
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform