
小伙子 在需要设置CHECKBOX字段的FIELDCAT表里面把CHECKBOX设置成"X'就行了啊
话不多说 发个例子 请观察65行:
*&---------------------------------------------------------------------*
*& Report ZR_MM_12
*&---------------------------------------------------------------------*
REPORT zr_mm_12.
TABLES : ekko,ekpo,ekbe,t001l.
DATA:BEGIN OF itab OCCURS 0 ,
mark TYPE c,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
bedat LIKE ekko-bedat,
matnr LIKE ekpo-matnr,
txz01 LIKE ekpo-txz01,
werks LIKE ekpo-werks,
lgort LIKE ekpo-lgort,
lgobe LIKE t001l-lgobe,
menge LIKE ekpo-menge,
menge2 LIKE ekpo-menge,
menge3 LIKE ekpo-menge,
menge4 LIKE ekpo-menge,
menge5 LIKE ekpo-menge,
menge6 LIKE ekpo-menge,
END OF itab.
TYPE-POOLS: slis.
***alv 结构定义
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv,
gt_fieldcat TYPE slis_t_fieldcat_alv,
gt_events TYPE slis_t_event, " ALV Event table
gd_repid LIKE sy-repid,
rpt_title(40) TYPE c,
space_11(15) TYPE c ,
dat_11(10) TYPE c.
DATA: wa_sort TYPE slis_sortinfo_alv,
it_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE.
SELECT-OPTIONS: s_matnr FOR ekpo-matnr,
s_bedat FOR ekko-bedat,
s_lgort FOR ekpo-lgort.
START-OF-SELECTION.
PERFORM getdata.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM display_alv_report.
PERFORM outdata.
*&---------------------------------------------------------------------*
*& Form getdata
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM getdata.
SELECT * INTO CORRESPONDING FIELDS OF TABLE itab FROM ekko INNER JOIN ekpo
ON ( ekko~ebeln = ekpo~ebeln )
WHERE ekpo~matnr IN s_matnr AND ekpo~loekz <> 'L' AND ekko~bedat IN s_bedat AND ekpo~lgort IN s_lgort.
ENDFORM. "getdata
*&---------------------------------------------------------------------*
*& Form build_fieldcatalog
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM build_fieldcatalog.
fieldcatalog-fieldname = 'MARK'.
fieldcatalog-seltext_m = 'FLAG'.
fieldcatalog-checkbox = 'X'. "设置 MARK字段为CHECK BOX
fieldcatalog-edit = 'X'.
fieldcatalog-col_pos = 1.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = '采购订单号'.
fieldcatalog-col_pos = 2.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-seltext_m = '物料号码'.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-col_pos = 2.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'TXZ01'.
fieldcatalog-seltext_m = '物料描述'.
fieldcatalog-col_pos = 3.
APPEND fieldcatalog TO fieldcatalog.
fieldcatalog-fieldname = 'BEDAT'.
fieldcatalog-seltext_m = '凭证日期'.
fieldcatalog-col_pos = 4.
APPEND fieldcatalog TO fieldcatalog.
fieldcatalog-fieldname = 'WERKS'.
fieldcatalog-seltext_m = '工厂'.
fieldcatalog-col_pos = 4.
APPEND fieldcatalog TO fieldcatalog.
fieldcatalog-fieldname = 'LGORT'.
fieldcatalog-seltext_m = '库存地点'.
fieldcatalog-col_pos = 5.
APPEND fieldcatalog TO fieldcatalog.
fieldcatalog-fieldname = 'LGOBE'.
fieldcatalog-seltext_m = '库存地点描述'.
fieldcatalog-col_pos = 6.
APPEND fieldcatalog TO fieldcatalog.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-seltext_m = '订单数量'.
fieldcatalog-col_pos = 6.
APPEND fieldcatalog TO fieldcatalog.
*
fieldcatalog-fieldname = 'MENGE2'.
fieldcatalog-seltext_m = '收货数量'.
fieldcatalog-col_pos = 7.
APPEND fieldcatalog TO fieldcatalog.
*
fieldcatalog-fieldname = 'MENGE3'.
fieldcatalog-seltext_m = '剩余收货'.
fieldcatalog-col_pos = 8.
APPEND fieldcatalog TO fieldcatalog.
ENDFORM. "build_fieldcatalog
*&---------------------------------------------------------------------*
*& Form build_layout
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM build_layout.
gd_layout-no_input = ' '.
GD_LAYOUT-box_fieldname = 'MARK'.
gd_layout-colwidth_optimize = 'X'.
ENDFORM. " build_layout
*&---------------------------------------------------------------------*
*& Form display_alv_report
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_alv_report.
gd_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = gd_repid
i_callback_user_command = 'USER_COMMAND'
i_callback_pf_status_set = 'SET_PF_STATUS'
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
it_events = gt_events[]
i_save = 'X' " i_grid_title = sy-title
TABLES
t_outtab = itab
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " display_alv_report
*&---------------------------------------------------------------------*
*& Form SET_PF_STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->EXTAB text
*----------------------------------------------------------------------*
FORM set_pf_status USING extab TYPE slis_t_extab.
SET PF-STATUS 'ZSTANDARD'. " EXCLUDING EXTAB.
ENDFORM. "SET_PF_STATUS
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->UCOMM text
* -->SELFIELD text
*----------------------------------------------------------------------*
FORM user_command USING ucomm LIKE sy-ucomm
selfield TYPE slis_selfield.
READ TABLE itab INDEX selfield-tabindex.
CHECK sy-subrc = 0.
CASE ucomm.
WHEN 'DET'.
LOOP AT itab WHERE mark = 'X'.
WRITE : / itab-ebeln,itab-matnr.
ENDLOOP.
ENDCASE.
ENDFORM. "USER_COMMAND
*&---------------------------------------------------------------------*
*& Form outdata
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM outdata.
LOOP AT itab.
ENDLOOP.
ENDFORM. "outdata
gv_1.Columns["md_day"].DisplayFormat.FormatString = "yyyy年MM月dd日"gv_1.Columns["md_day"].DisplayFormat.FormatType
= DevExpress.Utils.FormatType.Custom
这样设置,这个列将显示:2015年03月31日
或者
gv_1.Columns["md_day"].DisplayFormat.FormatString = "yyyy年M月d日"gv_1.Columns["md_day"].DisplayFormat.FormatType
= DevExpress.Utils.FormatType.Custom
这样设置,这个列将显示:2015年3月3日
GridLayout的使用:GridLayout的类层次结构图:
java.lang.Object
--java.awt.GridLayout
GridLayout比FlowLayout多了行和列的设置,也就是说你要先设置GridLayout共有几行
几列,就如同二维平面一般,然后你加
进去的组件会先填第一行的格子,然后再从第二行开始填,依此类扒,就像是一个个的
格子一般。而且GridLayout会将所填进去组
件的大小设为一样。
构造函数:GridLayout()建立一个新的GridLayout,默认值是1行1列。
GridLayout(int rows,int
cols)建立一个几行几列的GridLayout.
GridLayout(int rows,int cols, int hgap,int
vgap)建立一个几行几列的GridLayout,并设置组件的间距。
例子:GridLayoutDemo.java
import java.awt.*
import java.awt.event.*
import javax.swing.*
public class CardLayoutDemo implements ActionListener{
JPanel p1,p2,p3,p4
int i=1
JFrame f
public CardLayoutDemo(){
f=new JFrame()//当做top-level组件
Container contentPane=f.getContentPane()
contentPane.setLayout(new GridLayout(2,1))
p1=new JPanel()
Button b=new Button("Change Card")
b.addActionListener(this)//当按下"Change
Card"时,进行事件监听,将会有系统 *** 作产生。
p1.add(b) file://处理 *** 作在52-64行.
contentPane.add(p1)
p2=new JPanel()
p2.setLayout(new FlowLayout())
p2.add(new JButton("first"))
p2.add(new JButton("second"))
p2.add(new JButton("third"))
p3=new JPanel()
p3.setLayout(new GridLayout(3,1))
p3.add(new JButton("fourth"))
p3.add(new JButton("fifth"))
p3.add(new JButton("This is the last button"))
p4=new JPanel()
p4.setLayout(new CardLayout())
p4.add("one",p2)
p4.add("two",p3)
/*要显示CardLayout的卡片,除了用show(Container parent,String
name)这个方法外
*,也可试试first(Container),next(Container),previous(Container),last
(Container)这
*四个方法,一样可以达到显示效果。
*/
((CardLayout)p4.getLayout()).show(p4,"one")
contentPane.add(p4)
f.setTitle("CardLayout")
f.pack()
f.setVisible(true)
f.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0)
}
}
)
}
public void actionPerformed(ActionEvent event){
switch(i){
case 1:
((CardLayout)p4.getLayout()).show(p4,"two")
break
case 2:
((CardLayout)p4.getLayout()).show(p4,"one")
break
}
i++
if (i==3) i=1
f.validate()
}
public static void main(String[] args){
new CardLayoutDemo()
}
}
1-3-5:GridBagLayout的使用:是java中最有d性但也是最复杂的一种版面管理器。它
只有一种构造函数,但必须配合
GridBagConstraints才能达到设置的效果。
GridBagLayout的类层次结构图:
java.lang.Object
--java.awt.GridBagLayout
构造函数:
GirdBagLayout()建立一个新的GridBagLayout管理器。
GridBagConstraints()建立一个新的GridBagConstraints对象。
GridBagConstraints(int gridx,int gridy,int
gridwidth,int gridheight,double weightx,double weighty,
int anchor,int fill, Insets
insets,int ipadx,int ipady)建立一个新的GridBagConstraints对象
,并指定其参数的值。
参数说明:
gridx,gridy:设置组件的位置,gridx设置为GridBagConstraints.RELATIVE代表此组件
位于之前所加入组件的右边。
若将gridy设置为GridBagConstraints.RELATIVE代表此组件位于以前所加入组件的下
面。建议定义出
gridx,gridy的位置,以便以后维护程序。表示放在几行几列,gridx=0,gridy=0时放在
0行0列。
gridwidth,gridheight:用来设置组件所占的单位长度与高度,默认值皆为1。你可以使
用GridBagConstraints.REMAINDER常
量,代表此组件为此行或此列的最后一个组件,而且会占据所
有剩余的空间。
weightx,weighty:用来设置窗口变大时,各组件跟着变大的比例,当数字越大,表示组
件能得到更多的空间,默认值皆为0。
anchor:
当组件空间大于组件本身时,要将组件置于何处,有CENTER(默认值)、NORTH、
NORTHEAST、EAST、SOUTHEAST、
WEST、NORTHWEST可供选择。
insets:设置组件之间彼此的间距,它有四个参数,分别是上,左,下,右,默认为
(0,0,0,0).
ipadx,ipady:设置组件内的间距,默认值为0。
我们以前提过,GridBagLayout里的各种设置都必须通过GridBagConstraints,因此当我
们将GridBagConstraints的参数都设置
好了之后,必须new一个GridBagConstraints的对象出来,以便GridBagLayout使用。
例子:
GridBagLayoutDemo.java
import java.awt.*
import java.awt.event.*
import javax.swing.*
public class GridBagLayoutDemo{
public GridBagLayoutDemo(){
JButton b
GridBagConstraints c
int
gridx,gridy,gridwidth,gridheight,anchor,fill,ipadx,ipady
double weightx,weighty
Insets inset
JFrame f=new JFrame()
GridBagLayout gridbag=new GridBagLayout()
Container contentPane=f.getContentPane()
contentPane.setLayout(gridbag)
b=new JButton("first")
gridx=0
gridy=0
gridwidth=1
gridheight=1
weightx=10
weighty=1
anchor=GridBagConstraints.CENTER
fill=GridBagConstraints.HORIZONTAL
inset=new Insets(0,0,0,0)
ipadx=0
ipady=0
c=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,
fill,inset,ipadx,ipady)
gridbag.setConstraints(b,c)
contentPane.add(b)
b=new JButton("second")
gridx=1
gridy=0
gridwidth=2
gridheight=1
weightx=1
weighty=1
anchor=GridBagConstraints.CENTER
fill=GridBagConstraints.HORIZONTAL
inset=new Insets(0,0,0,0)
ipadx=50
ipady=0
c=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,
fill,inset,ipadx,ipady)
gridbag.setConstraints(b,c)
contentPane.add(b)
b=new JButton("third")
gridx=0
gridy=1
gridwidth=1
gridheight=1
weightx=1
weighty=1
anchor=GridBagConstraints.CENTER
fill=GridBagConstraints.HORIZONTAL
inset=new Insets(0,0,0,0)
ipadx=0
ipady=50
c=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,
fill,inset,ipadx,ipady)
gridbag.setConstraints(b,c)
contentPane.add(b)
b=new JButton("fourth")
gridx=1
gridy=1
gridwidth=1
gridheight=1
weightx=1
weighty=1
anchor=GridBagConstraints.CENTER
fill=GridBagConstraints.HORIZONTAL
inset=new Insets(0,0,0,0)
ipadx=0
ipady=0
c=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,
fill,inset,ipadx,ipady)
gridbag.setConstraints(b,c)
contentPane.add(b)
b=new JButton("This is the last button")
gridx=2
gridy=1
gridwidth=1
gridheight=2
weightx=1
weighty=1
anchor=GridBagConstraints.CENTER
fill=GridBagConstraints.HORIZONTAL
inset=new Insets(0,0,0,0)
ipadx=0
ipady=50
c=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,
fill,inset,ipadx,ipady)
gridbag.setConstraints(b,c)
contentPane.add(b)
f.setTitle("GridBagLayout")
f.pack()
f.setVisible(true)
f.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0)
}
}
)
}
public static void main(String[] args){
new GridBagLayoutDemo()
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)