func (tvc TableViewColumn) Create(tv *walk.TableView) error { w := walk.NewTableViewColumn() if err := w.SetAlignment(walk.Alignment1D(tvc.Alignment)); err != nil { return err } w.SetDataMember(tvc.DataMember) if tvc.Format != "" { if err := w.SetFormat(tvc.Format); err != nil { return err } } if err := w.SetPrecision(tvc.Precision); err != nil { return err } if err := w.SetTitle(tvc.Title); err != nil { return err } if err := w.SetVisible(!tvc.Hidden); err != nil { return err } if err := w.SetWidth(tvc.Width); err != nil { return err } return tv.Columns().Add(w) }
/** ** 查看所有项目的方法 **/ func CreateProj_Query(owner walk.Form) { var dlg *walk.Dialog var tv *walk.TableView var dialog = Dialog{} model := xorm.NewProjectModel() dialog.AssignTo = &dlg dialog.Title = "项目管理" dialog.Layout = VBox{} dialog.MinSize = Size{650, 300} dialog.Children = []Widget{ TableView{ AssignTo: &tv, AlternatingRowBGColor: walk.RGB(255, 255, 224), ColumnsOrderable: true, Columns: []TableViewColumn{ {Title: "编号", Width: 50}, {Title: "名称"}, {Title: "创建者"}, {Title: "创建时间", Format: "2006-01-02 15:04:05", Width: 130}, {Title: "描述", Width: 200}, }, Model: model, }, Composite{ Layout: HBox{}, Children: []Widget{ HSpacer{}, PushButton{ Text: "创建", OnClicked: func() { CreateProj_Triggered(owner, model) }, }, PushButton{ Text: "删除", OnClicked: func() { indexs := tv.SelectedIndexes() if indexs.Len() == 0 { walk.MsgBox(owner, "提示", "请选择要删除的数据", walk.MsgBoxIconError) return } walk.MsgBox(owner, "提示", "确认是否删除此工程", walk.MsgBoxOKCancel) obj := model.GetItemByindex(int64(indexs.At(0))) xorm.DeleteProjectByObj(obj) model.ResetRows() }, }, }, }, } dialog.Run(owner) }
func main() { rand.Seed(time.Now().UnixNano()) model := NewFooModel() var tv *walk.TableView MainWindow{ Title: "Walk TableView Example", Size: Size{800, 600}, Layout: VBox{MarginsZero: true}, Children: []Widget{ PushButton{ Text: "Reset Rows", OnClicked: model.ResetRows, }, PushButton{ Text: "Select first 5 even Rows", OnClicked: func() { tv.SetSelectedIndexes([]int{0, 2, 4, 6, 8}) }, }, TableView{ AssignTo: &tv, AlternatingRowBGColor: walk.RGB(255, 255, 224), CheckBoxes: true, ColumnsOrderable: true, MultiSelection: true, Columns: []TableViewColumn{ {Title: "#"}, {Title: "Bar"}, {Title: "Baz", Format: "%.2f", Alignment: AlignFar}, {Title: "Quux", Format: "2006-01-02 15:04:05", Width: 150}, }, Model: model, OnSelectedIndexesChanged: func() { fmt.Printf("SelectedIndexes: %v\n", tv.SelectedIndexes()) }, }, }, }.Run() }
func main() { var mainWindow *walk.MainWindow var treeView *walk.TreeView var tableView *walk.TableView var webView *walk.WebView treeModel, err := NewDirectoryTreeModel() if err != nil { log.Fatal(err) } tableModel := NewFileInfoModel() if err := (MainWindow{ AssignTo: &mainWindow, Title: "Walk File Browser Example", MinSize: Size{600, 400}, Size: Size{800, 600}, Layout: HBox{}, Children: []Widget{ HSplitter{ Children: []Widget{ TreeView{ AssignTo: &treeView, Model: treeModel, OnCurrentItemChanged: func() { dir := treeView.CurrentItem().(*Directory) if err := tableModel.SetDirPath(dir.Path()); err != nil { walk.MsgBox( mainWindow, "Error", err.Error(), walk.MsgBoxOK|walk.MsgBoxIconError) } }, }, TableView{ AssignTo: &tableView, Columns: []TableViewColumn{ TableViewColumn{ Title: "Name", DataMember: "Name", Width: 200, }, TableViewColumn{ Title: "Size", DataMember: "Size", Format: "%d", Alignment: AlignFar, Width: 80, }, TableViewColumn{ Title: "Modified", DataMember: "Modified", Format: "2006-01-02 15:04:05", Width: 120, }, }, Model: tableModel, OnCurrentIndexChanged: func() { var url string if index := tableView.CurrentIndex(); index > -1 { name := tableModel.items[index].Name dir := treeView.CurrentItem().(*Directory) url = filepath.Join(dir.Path(), name) } webView.SetURL(url) }, }, WebView{ AssignTo: &webView, }, }, }, }, }.Create()); err != nil { log.Fatal(err) } mainWindow.Run() }
func (tv TableView) Create(builder *Builder) error { var w *walk.TableView var err error if tv.NotSortableByHeaderClick { w, err = walk.NewTableViewWithStyle(builder.Parent(), win.LVS_NOSORTHEADER) } else { w, err = walk.NewTableView(builder.Parent()) } if err != nil { return err } return builder.InitWidget(tv, w, func() error { for i := range tv.Columns { if err := tv.Columns[i].Create(w); err != nil { return err } } if err := w.SetModel(tv.Model); err != nil { return err } if tv.AlternatingRowBGColor != 0 { w.SetAlternatingRowBGColor(tv.AlternatingRowBGColor) } w.SetCheckBoxes(tv.CheckBoxes) w.SetItemStateChangedEventDelay(tv.ItemStateChangedEventDelay) if err := w.SetLastColumnStretched(tv.LastColumnStretched); err != nil { return err } if err := w.SetSingleItemSelection(tv.SingleItemSelection); err != nil { return err } if tv.OnCurrentIndexChanged != nil { w.CurrentIndexChanged().Attach(tv.OnCurrentIndexChanged) } if tv.OnSelectedIndexesChanged != nil { w.SelectedIndexesChanged().Attach(tv.OnSelectedIndexesChanged) } if tv.OnItemActivated != nil { w.ItemActivated().Attach(tv.OnItemActivated) } if tv.AssignTo != nil { *tv.AssignTo = w } return nil }) }
func main() { font := Font{ Family: "Times New Roman", PointSize: 13, Bold: true, } usr, _ := user.Current() usrModel := env.NewModel(0) sysModel := env.NewModel(1) var usrTableView, sysTableView *walk.TableView var mw *walk.MainWindow MainWindow{ Title: "Enviroment Variable", Size: Size{600, 700}, Layout: VBox{}, AssignTo: &mw, Font: font, Children: []Widget{ VSplitter{ Children: []Widget{ GroupBox{ Title: "User variables for " + usr.Username, Font: font, Layout: VBox{}, Children: []Widget{ TableView{ AssignTo: &usrTableView, AlternatingRowBGColor: walk.RGB(255, 255, 224), ColumnsOrderable: true, Columns: []TableViewColumn{ {Title: "name", Width: 200}, {Title: "value"}, }, LastColumnStretched: true, Model: usrModel, OnItemActivated: func() { index := usrTableView.CurrentIndex() if index != -1 { EditVariable(mw, usrModel, usrModel.GetVariable(index).Name, usrModel.GetVariable(index).Value) } }, }, Composite{ Layout: HBox{}, Children: []Widget{ HSpacer{}, PushButton{ Text: "New...", OnClicked: func() { NewVariable(mw, usrModel) }, }, PushButton{ Text: "Edit...", OnClicked: func() { index := usrTableView.CurrentIndex() if index != -1 { EditVariable(mw, usrModel, usrModel.GetVariable(index).Name, usrModel.GetVariable(index).Value) } }, }, PushButton{ Text: "Delete", OnClicked: func() { index := usrTableView.CurrentIndex() if index != -1 { DeleteVariable(mw, usrModel, usrModel.GetVariable(index).Name) } }, }, }, }, }, }, GroupBox{ Title: "System variables", Font: font, Layout: VBox{}, Children: []Widget{ TableView{ AssignTo: &sysTableView, AlternatingRowBGColor: walk.RGB(255, 255, 224), ColumnsOrderable: true, Columns: []TableViewColumn{ {Title: "Variable", Width: 200}, {Title: "Value"}, }, LastColumnStretched: true, Model: sysModel, OnItemActivated: func() { index := sysTableView.CurrentIndex() if index != -1 { EditVariable(mw, sysModel, sysModel.GetVariable(index).Name, sysModel.GetVariable(index).Value) } }, }, Composite{ Layout: HBox{}, Children: []Widget{ HSpacer{}, PushButton{ Text: "New...", OnClicked: func() { NewVariable(mw, sysModel) }, }, PushButton{ Text: "Edit...", OnClicked: func() { index := sysTableView.CurrentIndex() if index != -1 { EditVariable(mw, sysModel, sysModel.GetVariable(index).Name, sysModel.GetVariable(index).Value) } }, }, PushButton{ Text: "Delete", OnClicked: func() { index := sysTableView.CurrentIndex() if index != -1 { DeleteVariable(mw, sysModel, sysModel.GetVariable(index).Name) } }, }, }, }, }, }, }, }, Composite{ Layout: HBox{}, Children: []Widget{ HSpacer{}, PushButton{ Text: "OK", OnClicked: func() { if ApplyEnv(mw, usrModel, sysModel) { mw.Close() } }, }, PushButton{ Text: "Cancel", OnClicked: func() { mw.Close() }, }, }, }, }, }.Run() }
func main() { model := NewFooModel("img") foo := &TableViewColumnFormat{Title: "创建时间", Format: "2006-01-02", Width: 150} var tv *walk.TableView MainWindow{ Title: "TableView", Size: Size{800, 600}, Layout: VBox{}, DataBinder: DataBinder{ DataSource: foo, AutoSubmit: true, OnSubmitted: func() { fmt.Println(foo) }, }, Children: []Widget{ Composite{ Layout: HBox{}, Children: []Widget{ RadioButtonGroup{ DataMember: "Alignment", Buttons: []RadioButton{ RadioButton{ Name: "leftAlign", Text: "左对齐", Value: AlignFar, OnClicked: func() { tv.Columns().Add(walk.NewTableViewColumn()) model.PublishRowsReset() }, }, RadioButton{ Name: "leftAlign", Text: "居中", Value: AlignCenter, OnClicked: func() { tv.Columns().At(4).SetAlignment(walk.AlignCenter) model.PublishRowsReset() }, }, RadioButton{ Name: "leftAlign", Text: "右对齐", Value: AlignNear, OnClicked: func() { tv.Columns().At(4).SetAlignment(walk.AlignFar) //tv.Columns().Clear() model.PublishRowsReset() }, }, }, }, }, }, TableView{ AssignTo: &tv, AlternatingRowBGColor: walk.RGB(183, 208, 65), CheckBoxes: true, ColumnsOrderable: true, Columns: []TableViewColumn{ {Title: "#"}, {Title: "原文件名"}, {Title: "类型"}, {Title: "新文件名"}, {Title: "创建时间", Format: "2006-01-02 15:04:05", Width: 150, Alignment: foo.Alignment, DataMember: "", Hidden: false, Precision: 2}, {Title: "修改时间", Format: "2006-01-02 15:04:05", Width: 150, DataMember: "", Alignment: foo.Alignment}, }, Model: model, }, }, }.Run() }