93 lines
2.0 KiB
Go
93 lines
2.0 KiB
Go
package main
|
|
|
|
import (
|
|
"runtime"
|
|
|
|
"github.com/ying32/govcl/vcl"
|
|
"github.com/ying32/govcl/vcl/types"
|
|
"github.com/ying32/govcl/vcl/types/colors"
|
|
)
|
|
|
|
const (
|
|
MY_SPACING = 6
|
|
MY_HEIGHT = 90
|
|
MY_WIDTH = 180
|
|
|
|
MAX_AUTO_COL_WIDTH = 240
|
|
)
|
|
|
|
// vcl_row makes a TPanel row inside the target component.
|
|
func vcl_row(owner vcl.IWinControl, top int32) *vcl.TPanel {
|
|
|
|
r := vcl.NewPanel(owner)
|
|
r.SetParent(owner)
|
|
r.SetBorderStyle(types.BsNone)
|
|
r.SetBevelInner(types.BvNone)
|
|
r.SetBevelOuter(types.BvNone)
|
|
r.SetAlign(types.AlTop)
|
|
r.SetTop(top)
|
|
r.SetAutoSize(true)
|
|
|
|
return r
|
|
}
|
|
|
|
// vcl_menuitem makes a child TMenuItem inside the parent menu.
|
|
func vcl_menuitem(parent *vcl.TMenuItem, caption string, imageIndex int32, onClick vcl.TNotifyEvent) *vcl.TMenuItem {
|
|
m := vcl.NewMenuItem(parent)
|
|
m.SetCaption(caption)
|
|
if imageIndex != -1 {
|
|
m.SetImageIndex(imageIndex)
|
|
}
|
|
if onClick != nil {
|
|
m.SetOnClick(onClick)
|
|
}
|
|
parent.Add(m)
|
|
|
|
return m
|
|
}
|
|
|
|
// vcl_menuseparator adds a separator to the parent TMenuItem.
|
|
func vcl_menuseparator(parent *vcl.TMenuItem) *vcl.TMenuItem {
|
|
s := vcl.NewMenuItem(parent)
|
|
s.SetCaption("-") // Creates separator
|
|
parent.Add(s)
|
|
|
|
return s
|
|
}
|
|
|
|
func vcl_default_tab_background() types.TColor {
|
|
if runtime.GOOS == "windows" {
|
|
// Assuming that uxtheme is loaded
|
|
// @ref https://stackoverflow.com/a/20332712
|
|
return colors.ClBtnHighlight
|
|
} else {
|
|
return colors.ClBtnFace // 0x00f0f0f0
|
|
}
|
|
}
|
|
|
|
func vcl_stringgrid_clear(d *vcl.TStringGrid) {
|
|
d.SetFixedCols(0) // No left-hand cols
|
|
d.SetRowCount(1) // The 0th row is the column headers
|
|
d.SetEnabled(false)
|
|
d.Columns().Clear()
|
|
d.Invalidate()
|
|
}
|
|
|
|
func vcl_stringgrid_columnwidths(d *vcl.TStringGrid) {
|
|
// Skip slow processing for very large result sets
|
|
if d.RowCount() > 1000 {
|
|
return
|
|
}
|
|
|
|
d.AutoAdjustColumns()
|
|
|
|
// AutoAdjustColumns will leave some columns massively too large by themselves
|
|
// Reign them back in
|
|
ct := d.Columns().Count()
|
|
for i := int32(0); i < ct; i++ {
|
|
if d.ColWidths(i) > MAX_AUTO_COL_WIDTH {
|
|
d.SetColWidths(i, MAX_AUTO_COL_WIDTH)
|
|
}
|
|
}
|
|
}
|