>>Public oForm >>oForm = Createobject('comboSample') >>oForm.Show >> >>Define Class comboSample As Form >> Top = 0 >> Left = 0 >> Height = 350 >> Width = 620 >> DataSession=2 >> >> Add Object grdItems As Grid With ; >> Height = 300, ; >> Left = 10, ; >> Top = 10, ; >> Width = 600, ; >> Rowheight = 19,; >> RecordSource = "crsItems" >> >> Procedure Load >> Set Fixed On >> Set Point To "," >> >> Select Cast(.Null. As Int) As ProductID, Cast('' As c(50)) As prod_name ; >> FROM (_samples+'Data\products') ; >> UNION ; >> select Int(Val(product_id)) As ProductID,prod_name ; >> FROM (_samples+'Data\products') ; >> INTO Cursor crsProducts ; >> readwrite >> Index On ProductID Tag ProductID >> >> Create Cursor crsItems ; >> (LINE_NO i, ORDER_ID c(6), ; >> ProductID i Null, UNIT_PRICE Y, QUANTITY i) >> >> Insert Into crsItems ; >> Select LINE_NO, ORDER_ID, ; >> Val(product_id) As ProductID, ; >> UNIT_PRICE, QUANTITY ; >> From (_samples+'data\orditems') >> Locate >> >> Use In 'products' >> Use In 'orditems' >> >> Endproc >> >> Procedure grdItems.Init >> Local ix >> With This >> For ix = 1 To .ColumnCount >> If Upper(Justext(.Columns(m.ix).ControlSource)) == 'PRODUCTID' >> With .Columns(m.ix) >> .Bound = .F. >> .ControlSource = "(Iif(Seek(crsItems.productid,"+; >> "'crsProducts','productID'),crsProducts.prod_name,''))" >> .Width = 180 >> .Alignment = 0 >> .AddObject('comboincol','mycombo') >> With .ComboIncol >> .BoundColumn = 2 >> .BoundTo = .T. >> .ColumnCount = 2 >> .ColumnWidths = "180,100" >> .RowSourceType = 3 >> .RowSource = "select prod_name,productID"+; >> " from crsProducts"+; >> " order by 1" +; >> " into cursor crsComboSource" >> .SpecialEffect = 1 >> .Style = 2 >> .ControlSource = "crsItems.productID" >> .Visible = .T. >> Endwith >> .CurrentControl = 'comboincol' >> Endwith >> Exit >> Endif >> Endfor >> .AddColumn(.ColumnCount+1) >> .Columns(.ColumnCount).Name = 'showProdID' >> .ShowProdID.ControlSource = '(crsItems.ProductID)' >> Endwith >> Endproc >> >>Enddefine >> >>Define Class myCombo As ComboBox >> setFixed = '' >> Procedure init >> This.setFixed = Set('fixed') >> endproc >> Procedure when >> Set Fixed Off >> Endproc >> >> Procedure LostFocus >> Local cfixed >> cfixed = This.setFixed >> Set Fixed &cfixed >> Endproc >>EnddefineCetin