Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Фильтрация разделителей на тулбаре / 5 сообщений из 5, страница 1 из 1
26.09.2017, 17:47:11
    #39526652
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация разделителей на тулбаре
Проблема: есть тулбар с кнопками и разделителями. Когда кнопки скрываются, разделители могут оказаться непосредственно друг за другом, что не красиво.

Был написан такой патч
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
  TToolButton = class(Vcl.ComCtrls.TToolButton)
  strict private
    procedure CMVisibleChanged(var AMsg: TMessage); message CM_VISIBLECHANGED;
  end;

procedure TToolButton.CMVisibleChanged(var AMsg: TMessage);
const
  CSepStyles: set of TToolButtonStyle = [tbsSeparator, tbsDivider];
var
  Li: Integer;
  LBtn: Vcl.ComCtrls.TToolButton;
begin
  inherited;
  if (csDesigning in ComponentState) or (FToolBar = nil) or (Style in CSepStyles) then
    Exit;
  if not Visible then begin
    for Li := Index - 1 downto 0 do begin
      LBtn := FToolBar.Buttons[Li];
      if LBtn.Style in CSepStyles then
        Break;
      if LBtn.Visible then
        Exit;
    end;
  end;

  for Li := Index + 1 to FToolBar.ButtonCount - 1 do begin
    LBtn := FToolBar.Buttons[Li];
    if LBtn.Style in CSepStyles then begin
      LBtn.Visible := Visible;
      Exit;
    end;
    if LBtn.Visible then
      Exit;
  end;
end;

вроде, все работает. Принимаются пожелания и предложения

С уважением, Vasilisk
...
Рейтинг: 0 / 0
26.09.2017, 18:03:50
    #39526663
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация разделителей на тулбаре
Тебе, кажется, заняться нечем.

P.S. Не проще просто скрывать и разделитель вслед
за кнопками, если он уже не нужен, вместо патча?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.09.2017, 18:29:24
    #39526682
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация разделителей на тулбаре
Гаджимурадов РустамP.S. Не проще просто скрывать и разделитель вслед
за кнопками, если он уже не нужен, вместо патча?Нет. На тулбаре два десятка кнопок. 5-7 групп. Видимость кнопок управляется из произвольных мест программы через TAction.
...
Рейтинг: 0 / 0
26.09.2017, 19:55:20
    #39526736
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация разделителей на тулбаре
_Vasilisk_Нет. На тулбаре два десятка кнопок. 5-7 групп. Видимость кнопок управляется из произвольных мест программы через TAction.По современным UI гайдлайнам - это лажа. Очень не рекомендуется управлять видимостью кнопочек - это конфузит пользователей. Типа "да вот же только что здесь была!". Правильнее использовать разные (контекстные) тулбары, или управлять свойством Enabled в зависимости от контекста. Собсно для решений подобных задач и появился риббон. Хотя, конечно в итоге каждый сам себе дизайнер - "я так вижу"
...
Рейтинг: 0 / 0
26.09.2017, 20:09:18
    #39526743
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация разделителей на тулбаре
white_niggerОчень не рекомендуется управлять видимостью кнопочек - это конфузит пользователей. Типа "да вот же только что здесь была!"Видимость кнопки меняется довольно редко. В основном все же используется Enabled/Disabled

Ну и плюс "тяжелое наследие"
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Фильтрация разделителей на тулбаре / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]