powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Фильтрация разделителей на тулбаре
5 сообщений из 5, страница 1 из 1
Фильтрация разделителей на тулбаре
    #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
Фильтрация разделителей на тулбаре
    #39526663
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебе, кажется, заняться нечем.

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

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


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