по условию? вроде делал, но не могу в своих исходниках найти, а гпт и гугл предлагают рисовать самому
Нельзя
Там насколько я помню можно первую колонку второй сделать или что-то типа такого, тогда чек будет не в самом начале отображаться. Но это я давноооо давно эксперементировал и нюансов уже не помню
нет, мне надо тупо чекбоксом булева поля отображать с системной отрисовкой чекбокса, поэтому OnGetImageIndex мне тоже не катит
Ну почему не катит то? Ты вполне себе можешь в динамике создать IL нужного размера с нужным набором глифов. У меня моя деревяха так работает
даже на гтк в разных темах наследники бутонов выглядят по разному (в т.ч. и с высотой отрисовки). Колхоз получится
А они то тут с какого боку если ты глифы руками будешь генерить? У меня в лине под GTK все достаточно нормально выглядит. Ща виртуалку подымо покажу скрин
глифы же хардкорно рисуются из имейджлитса? Или ты что-то другое имеешь ввиду?
Рисуются то хардкорно, вопрос в том как ты их генерируешь. Как видишь отрисовка вполне себе нормальная
Это моя деревяшка - она не умеет в несколько столбцов :)
+ есть шрифт с глифами
TVirtualTreeColumn. property CheckType: TCheckType read FCheckType write SetCheckType default ctCheckBox; property CheckState: TCheckState read FCheckState write SetCheckState default csUncheckedNormal; property CheckBox: Boolean read FCheckBox write SetCheckBox default False; TCheckType = ( ctNone, ctTriStateCheckBox, ctCheckBox, ctRadioButton, ctButton ); // The check states include both, transient and fluent (temporary) states. The only temporary state defined so // far is the pressed state. TCheckState = ( csUncheckedNormal, // unchecked and not pressed csUncheckedPressed, // unchecked and pressed csCheckedNormal, // checked and not pressed csCheckedPressed, // checked and pressed csMixedNormal, // 3-state check box and not pressed csMixedPressed, // 3-state check box and pressed csUncheckedDisabled,// disabled checkbox, not checkable csCheckedDisabled, // disabled checkbox, not uncheckable csMixedDisabled // disabled 3-state checkbox ); /// Adds some convenience methods to type TCheckState TCheckStateHelper = record helper for TCheckState strict private const // Lookup to quickly convert a specific check state into its pressed counterpart and vice versa. cPressedState: array[TCheckState] of TCheckState = ( csUncheckedPressed, csUncheckedPressed, csCheckedPressed, csCheckedPressed, csMixedPressed, csMixedPressed, csUncheckedDisabled, csCheckedDisabled, csMixedDisabled); cUnpressedState: array[TCheckState] of TCheckState = ( csUncheckedNormal, csUncheckedNormal, csCheckedNormal, csCheckedNormal, csMixedNormal, csMixedNormal, csUncheckedDisabled, csCheckedDisabled, csMixedDisabled); cEnabledState: array[TCheckState] of TCheckState = ( csUncheckedNormal, csUncheckedPressed, csCheckedNormal, csCheckedPressed, csMixedNormal, csMixedPressed, csUncheckedNormal, csCheckedNormal, csMixedNormal); cToggledState: array[TCheckState] of TCheckState = ( csCheckedNormal, csCheckedPressed, csUnCheckedNormal, csUnCheckedPressed, csCheckedNormal, csCheckedPressed, csUncheckedDisabled, csCheckedDisabled, csMixedDisabled); public function GetPressed(): TCheckState; inline; function GetUnpressed(): TCheckState; inline; function GetEnabled(): TCheckState; inline; function GetToggled(): TCheckState; inline; function IsDisabled(): Boolean; inline; function IsChecked(): Boolean; inline; function IsUnChecked(): Boolean; inline; function IsMixed(): Boolean; inline; end; TCheckImageKind = ( ckCustom, // application defined check images ckSystemDefault // Uses the system check images, theme aware. ); TVirtualNode = packed record ... CheckState: TCheckState; // indicates the current check state (e.g. checked, pressed etc.) CheckType: TCheckType; // indicates which check type shall be used for this node
Штатно это работает только для заголовка, и то, если не включена самостоятельная отрисовка
Лёш, сможешь публично демку выложить, где все само рисуется, буду публично признателен 😊
Не сегодня, мб завтра.
Обсуждают сегодня