ich ein table (von Nehmeti) mit dem folgenden Code erstellen:tcl tk binden <Control-v> an eine Zelle in einem table
set _bvnr(tbl1) [tablelist::tablelist $_bvnr(fr2).tbl1 \
-columns {0 "OID vmbust" \
0 "OID vmflst" \
0 "Flurstück" \
0 "Buchungsblatt" \
0 "Buchungsart" \
0 "Laufende Nummer"} \
-background white\
-labelborderwidth 1\
-selectborderwidth 0\
-selectmode single \
-exportselection 0\
-labelfont $tabuefont\
-font $tabinfont\
-selectforeground $vmVConfig::setVar(activeFG)\
-selectbackground $vmVConfig::setVar(activeBG)\
-stretch all\
-height 8\
-setfocus 0\
-forceeditendcommand 1 \
-editstartcommand [itcl::code $this editStartTbl1] \
-editendcommand [itcl::code $this editEndTbl1] \
-xscrollcommand [list vmTkTools::configSB "h" $_bvnr(fr2).scrbx1]\
-yscrollcommand [list vmTkTools::configSB "v" $_bvnr(fr2).scrby1]\
-showarrow 0]
Ich mache die 5. Spalte bearbeitet von
$_bvnr(tbl1) columnconfigure 5 -editable no -name bgb -editwindow entryfield
Verfahren für die editstartcommand ist folgende:
itcl::body vmBVNummer::editStartTbl1 {tbl row col txt} {
set _bvnr(tblCPath1) [$tbl editwinpath]
# Entryfield erstellen
$_bvnr(tblCPath1) configure -highlightthickness 2 \
-borderwidth 0 \
-selectbackground $vmVConfig::setVar(activeBG) \
-selectforeground $vmVConfig::setVar(activeFG) \
-state normal \
-textfont $entfont \
-validate "[list vmTclTools::valInteger2 %P] " \
-textbackground white
set _bvnr(editLnr) $txt
bind [$tbl entrypath] <Control-v> [itcl::code $this pasteGrber]
return $txt
}
die Methode „pasteGrber“ Durch die Bindung ich versuche, dass t zu verhindern er Text in „Schaffe“ kann in der entryfield eingefügt werden, wenn es keine ganze Zahl ist nur (die in vmTclTools :: valInteger geprüft)
itcl::body vmBVNummer::pasteGrber {} {
set tbl [getTbl1Path]
set cursorPos [[$tbl entrypath] index insert]
if {[catch {selection get} txt]} {
#puts "FEHLER: >>$txt<<"
}
if {[vmTclTools::valInteger2 $txt] == 1} {
$_bvnr(tblCPath1) insert $cursorPos $txt
clipboard clear
selection clear
return 1
} else {
bell
return 0
}
}
Das Verfahren getTbl1Path gibt den Pfad des table. valInteger gibt nur 0 oder 1 zurück
Immer wenn ich etwas Text in die bearbeitete Zelle einfüge, wird die Methode pasteGrber ausgeführt, aber der kopierte Text wird trotzdem eingefügt. Wie kann ich das vermeiden?