powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Пересоздание контролов на панели
4 сообщений из 4, страница 1 из 1
Пересоздание контролов на панели
    #39729839
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Имеется FlowPanel, на которой лежат несколько кнопок (от 1 до 16). Так же имеется некая процедура, которая пересоздаёт эти кнопки при изменениях связанных с ними объектов (можно было бы изменять кнопки, конечно, но пересоздать проще, т.к. меняться может не только состав и название, но и их порядок). При этом иногда при пересоздании кнопок видно как они исчезают и снова появляются (мелькает очень быстро, но всё равно раздражает).

Вопрос: можно ли как-нибудь заблокировать отрисовку панели с кнопками, пока они все не обновятся. Что-то вроде BeginUpdate/EndUpdate у всяких TListBox.Items.

Сейчас я просто показываю/скрываю панель, но это не лучший вариант, потому что над ней ListBox с Align = caClient.
Пробовал делать Enabled := False как самой панели, так и всей форме, но не помогает.
код
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
var
  Group: PGroup;
  Index: Integer;
begin
  fpFilters.Visible := False;
  try
    for Index := fpFilters.ControlCount - 1 downto 0 do
      if fpFilters.Controls[Index] is TButton then
        fpFilters.Controls[Index].Free;
    miGroups.Clear;
    CreateButton(NO_GROUP_ID, 'Все');
    for Group in FGroups do 
    begin
      CreateButton(Group.ID, Group.Name);
      CreateSubmenuItem(Group.ID, Group.Name);
    end;
    CreateSubmenuItem(NO_GROUP_ID, '-');
    CreateSubmenuItem(NO_GROUP_ID, 'Сбросить все');
  finally
    fpFilters.Visible := True;
  end;
end;

...
Рейтинг: 0 / 0
Пересоздание контролов на панели
    #39729842
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

DisableAlign\EnableAlign

или что-то убойное вроде WM_SETREDRAW
...
Рейтинг: 0 / 0
Пересоздание контролов на панели
    #39729846
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)или что-то убойное вроде WM_SETREDRAW
То что доктор прописал, спасибо.
...
Рейтинг: 0 / 0
Пересоздание контролов на панели
    #39729851
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpможно ли как-нибудь заблокировать отрисовку панели с кнопками
Отправь панели сообщение, чтобы она не обновлялась: https://docs.microsoft.com/en-us/windows/desktop/gdi/wm-setredraw
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Пересоздание контролов на панели
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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