⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 editgrid.tcl

📁 linux 下的源代码分析阅读器 red hat公司新版
💻 TCL
字号:
# Tix Demostration Program## This sample program is structured in such a way so that it can be# executed from the Tix demo program "widget": it must have a# procedure called "RunSample". It should also have the "if" statment# at the end of this file so that it can be run as a standalone# program using tixwish.# Demonstrates the use of editable entries in a Grid widget.#proc RunSample {w} {    global editgrid    wm title $w "Doe Inc. Performance"    wm geometry $w 640x300    label $w.lab -justify left -text \"The left column is calculated automatically. To calculate the right column,press the \"Calculate\" button"    pack $w.lab -side top -anchor c -padx 3 -pady 3    # Create the buttons    #    set f [frame $w.f -relief flat]    pack $f -side right -fill y    set add   [button $f.add   -text "Add Row"   -width 9 \	-command "EditGrid_addRow"]    set edit  [button $f.edit  -text "Edit"      -width 9 \	-command "EditGrid_edit"]    set cal   [button $f.cal   -text "Calculate" -width 9 \	-command "EditGrid_calculate"]    set close [button $f.close -text "Close"     -width 9 \	-command "destroy $w"]    pack $add   -side top    -padx 10    pack $edit  -side top    -padx 10    pack $cal   -side top    -padx 10 -pady 2    pack $close -side bottom -padx 10    # Create the grid and set options to make it editable.    #    tixScrolledGrid $w.g -bd 0    pack $w.g -expand yes -fill both -padx 3 -pady 3    set grid [$w.g subwidget grid]    $grid config \	-formatcmd "EditGrid_format $grid" \	-editnotifycmd "EditGrid_editNotify" \	-editdonecmd "EditGrid_editDone" \	-selectunit cell \	-selectmode single    # Insert some initial data    #    $grid set 0 1 -text "City #1"    $grid set 0 2 -text "City #2"    $grid set 0 3 -text "City #3"    $grid set 0 5 -text "Combined"    $grid set 2 0 -text "Population"    $grid set 4 0 -text "Avg. Income"    $grid set 2 1 -text 125    $grid set 2 2 -text  81    $grid set 2 3 -text 724    $grid set 4 1 -text 24432.12    $grid set 4 2 -text 18290.24    $grid set 4 3 -text 18906.34    # Global data used by other EditGrid_ procedures.    #    set editgrid(g)   $grid    set editgrid(top) 1    set editgrid(bot) 3    set editgrid(result) 5    EditGrid_calPop    EditGrid_calIncome}# EditGrid_edit --##	Prompts the user to edit a cell.#proc EditGrid_edit {} {    global editgrid    set grid $editgrid(g)    set ent [$grid anchor get]    if [string comp $ent ""] {	$grid edit set [lindex $ent 0]  [lindex $ent 1]    }}# EditGrid_addRow --##	Adds a new row to the table.#proc EditGrid_addRow {} {    global editgrid    set grid $editgrid(g)    $grid edit apply    $grid move row $editgrid(result) $editgrid(result) 1    incr editgrid(bot)    set editgrid(result) [expr $editgrid(bot) + 2]    $grid set 0 $editgrid(bot) -text "City #$editgrid(bot)"    $grid set 2 $editgrid(bot) -text 0    $grid set 4 $editgrid(bot) -text 0.0    EditGrid_calPop    EditGrid_calIncome}# EditGrid_calPop --##	Calculates the total population#proc EditGrid_calPop {} {    global editgrid    set grid $editgrid(g)    set pop 0    for {set i $editgrid(top)} {$i <= $editgrid(bot)} {incr i} {	incr pop [$grid entrycget 2 $i -text]    }    $grid set 2 $editgrid(result) -text $pop}# EditGrid_calIncome --##	Calculates the average income.#proc EditGrid_calIncome {} {    global editgrid    set grid $editgrid(g)    set income 0    set total_pop 0    for {set i $editgrid(top)} {$i <= $editgrid(bot)} {incr i} {	set pop [$grid entrycget 2 $i -text]	set inc [$grid entrycget 4 $i -text]	set income [expr $income + $pop.0 * $inc]	incr total_pop $pop    }    $grid set 4 $editgrid(result) -text [expr $income/$total_pop]}# EditGrid_calculate --##	Recalculates both columns.#proc EditGrid_calculate {} {    global editgrid    set grid $editgrid(g)    $grid edit apply    EditGrid_calIncome}# EditGrid_editNotify --##	Returns true if an entry can be edited.#proc EditGrid_editNotify {x y} {    global editgrid    set grid $editgrid(g)    if {$x == 2 || $x == 4} {	if {$y >= $editgrid(top) && $y <= $editgrid(bot)} {	    set editgrid(oldValue) [$grid entrycget $x $y -text]	    return 1	}    }	    return 0}# EditGrid_editDone --##	Gets called when the user is done editing an entry.#proc EditGrid_editDone {x y} {    global editgrid    set grid $editgrid(g)    if {$x == 2} {	set pop [$grid entrycget $x $y -text]	if [catch {	    format %d $pop	}] {	    $grid entryconfig $x $y -text $editgrid(oldValue)	    tk_dialog .editGridWarn "" \		"$pop is not an valid integer. Try again" \		warning 0 Ok        } else {	    $grid entryconfig 4 $editgrid(result) -text "-"	    EditGrid_calPop	}    } else {	set income [$grid entrycget $x $y -text]	if [catch {	    format %f $income	}] {	    $grid entryconfig $x $y -text $editgrid(oldValue)	    tk_dialog .editGridWarn "" \		"$income is not an valid floating number. Try again" \		warning 0 Ok        } else {	    $grid entryconfig 4 $editgrid(result) -text "-"	}    }}# EditGrid_format --##	This command is called whenever the background of the grid#	needs to be reformatted. The x1, y1, x2, y2 sprcifies the four#	corners of the area that needs to be reformatted.#proc EditGrid_format {w area x1 y1 x2 y2} {    global editgrid    set bg(s-margin) gray65    set bg(x-margin) gray65    set bg(y-margin) gray65    set bg(main)     gray20    case $area {	main {	    foreach col {2 4} {		$w format border $col 1 $col $editgrid(bot) \		    -relief flat -filled 1 -yon 1 -yoff 1\		    -bd 0 -bg #b0b0f0 -selectbackground #a0b0ff		$w format border $col 2 $col $editgrid(bot) \		    -relief flat -filled 1 -yon 1 -yoff 1\		    -bd 0 -bg #80b080 -selectbackground #80b0ff	    }	    $w format grid $x1 $y1 $x2 $y2 \		-relief raised -bd 1 -bordercolor $bg($area) -filled 0 -bg red\		-xon 1 -yon 1 -xoff 0 -yoff 0 -anchor se	}	y-margin {	    $w format border $x1 $y1 $x2 $y2 \		-fill 1 -relief raised -bd 1 -bg $bg($area) \		-selectbackground gray80	}	default {	    $w format border $x1 $y1 $x2 $y2 \		-filled 1 \		-relief raised -bd 1 -bg $bg($area) \		-selectbackground gray80	}    }#    case $area {#	{main y-margin} {#	    set y [expr $editgrid(bot) + 1]#	    $w format border 0 $y 100 $y -bg black -filled 1 -bd 0#	}#   }}if {![info exists tix_demo_running]} {    wm withdraw .    set w .demo    toplevel $w    RunSample $w    bind $w <Destroy> exit}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -