FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour EditCell
Posts: 222
Joined: Mon Jun 04, 2012 12:00 PM
EditCell
Posted: Sun Aug 12, 2012 06:55 PM

is there a sample how use a xbrowse and modify the record as editcell of wbrowse ?
tx

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: EditCell
Posted: Mon Aug 13, 2012 12:55 AM
After creating XBrowse, set
Code (fw): Select all Collapse
oCol:nEditType := EDIT_GET

for any column you want the user to edit. When the user presses Enter key or Double clicks the cell, the user enters editmode of the cell contents.
To set all columns editable
Code (fw): Select all Collapse
oBrw:nEditTypes := EDIT_GET
Regards



G. N. Rao.

Hyderabad, India
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: EditCell
Posted: Mon Aug 13, 2012 01:03 AM
Small sample
Code (fw): Select all Collapse
#include "FiveWin.Ch"
#include "xbrowse.ch"
#include "hbcompat.ch"

REQUEST DBFCDX
//----------------------------------------------------------------------------//

function Main()

   local oWnd, oBrw

   USE CUSTOMER

   DEFINE WINDOW oWnd
   @ 0,0 XBROWSE oBrw OF oWnd DATASOURCE "CUSTOMER" AUTOCOLS ;
      CELL LINES NOBORDER FASTEDIT

   WITH OBJECT oBrw
      :nEditTypes    := EDIT_GET
      :CreateFromCode()
   END

   oWnd:oClient   := oBrw

   ACTIVATE WINDOW oWnd

return nil

//----------------------------------------------------------------------------//
Regards



G. N. Rao.

Hyderabad, India
Posts: 474
Joined: Sun Oct 30, 2005 06:37 AM
Re: EditCell
Posted: Mon Aug 13, 2012 02:59 AM

oCol := obrow1:AddCol()
oCol:bStrData := {||odb1:centerid}
oCol:cHeader := "编码"
oCol:bEditValue := {||odb1:centerid}
oCol:nEditType := {||if(ledit,1,0)}
oCol:bOnPostEdit := {|o, v, n| if( n != VK_ESCAPE .and. v != odb1:centerid,;
(if(odb1:EOF(),;
(odb1:centerid:=v,odb1:enddate:=CTOD("2999.12.31"),odb1:APPEND(),obrow1:refresh(),if(!oserver:lerror,obrow1:SEEK(v),msgstop("编码重复!","停止"))),;
(centerid1:=odb1:centerid,odb1:centerid:=v,odb1:save(),obrow1:refresh(),if(oserver:lerror,(msgstop("编码重复或者单据已经使用而不能更改!","停止"),obrow1:SEEK(centerid1)),obrow1:SEEK(v)) );
);
), ;
) }
oCol:ctooltip:="编码不能重复,(工作中心就是小组,单条生产线的'工序')"
ocol:nwidth:=60

oCol := obrow1:AddCol()
oCol:bStrData := {||odb1:center}
oCol:cHeader := "工作中心名称"
oCol:bEditValue := {||odb1:center}
oCol:nEditType := {||if(ledit.and.!odb1:EOF(),1,0)}
oCol:bOnPostEdit := {|o, v, n| if( n != VK_ESCAPE .and. v != odb1:center,(odb1:center:=v,odb1:save()) , ) }
    ocol:nwidth:=100

// I modified oCol:nEditType ,so act as blwhen .

Shuming Wang

http://www.xtech2.top
Mobile:(86)13802729058
Email:100200651@qq.com
QQ:100200651
Weixin: qq100200651
Posts: 222
Joined: Mon Jun 04, 2012 12:00 PM
Re: EditCell
Posted: Mon Aug 13, 2012 03:16 PM

Nages

nor run the final user can edit the record but then whe nthe user press return it return as before

aBrowse := { { { || CE->ALIMENTO }, i18n("Alimento"), 350, },;
{ { || CE->PROTEINE }, i18n("Proteine"),40, },;
{ { || CE->GLUCIDI }, i18n("Glucidi"),40, },;
{ { || CE->LIPIDI }, i18n("Lipidi"),40, },;
{ { || CE->KALORIE }, i18n("Calorie"),40, },;
{ { || Mese(val(CE->STAG1)) }, i18n("Da mese"),80, },;
{ { || Mese(val(CE->STAG2)) }, i18n("A mese"),80, }}

FOR i := 1 TO Len(aBrowse)
oCol := oApp():oGrid:AddCol()
oCol:bEditValue := aBrowse[ i, 1 ]
* oCol:bStrData := aBrowse[ i, 1 ]
oCol:cHeader := aBrowse[ i, 2 ]
oCol:nWidth := aBrowse[ i, 3 ]
if !Empty(aBrowse[ i, 4 ])
oCol:cEditPicture:=aBrowse[ i, 4 ]
Endif

NEXT

        WITH OBJECT  oApp():oGrid
                    :nEditTypes    := EDIT_GET

                   END

oApp():oGrid:SetRDD()
oApp():oGrid:CreateFromCode()

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: EditCell
Posted: Mon Aug 13, 2012 03:18 PM

The way you coded, it does not work.
The way I coded it works.
Please test my code as it is.

Regards



G. N. Rao.

Hyderabad, India
Posts: 222
Joined: Mon Jun 04, 2012 12:00 PM
Re: EditCell
Posted: Mon Aug 13, 2012 03:35 PM

ok I must use only

@ 0,0 XBROWSE oBrw OF oWnd DATASOURCE "CUSTOMER" AUTOCOLS ;
CELL LINES NOBORDER FASTEDIT

is there another method because I have another configuration please :

oApp():oGrid := TXBrowse():New( oApp():oDlg )
oApp():oGrid:nTop := 00
oApp():oGrid:nLeft := nSplit+2
oApp():oGrid:nBottom := 200
oApp():oGrid:nRight := 400

Continue the discussion