LinuxForum.Fans
Тема

Lazarus - не отображается ProgressBar

Автор: Rizado 13 сообщений 1555 просмотров
29.04.2018 23:25 #428658

Решил вот немного доработать свой один старый проект. Писал давно на FreePascal, переписывать с нуля не хочется.
Для красоты добавил ProgressBar, причём на одну из панелей StatusBar. В сети нашёл такой пример:

text
procedure TfmMain.FormCreate(Sender: TObject);
begin
  // вырезано не относящееся к этому компоненту
  pbMain.Parent := sbMain;
end;

procedure TfmMain.sbMainDrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect); begin if (Panel.Index = 3) then pbMain.SetBounds(Rect.Left, Rect.Top, Rect.Right - Rect.Left, Rect.Bottom - Rect.Top); end;

И написано, что дальше с ним работать, как обычно. Что и делаю - в нужной функции просто устанавливаю свойство Position.
Тем не менее, индикатор прогресса не отображается. Что я пропустил?

01.05.2018 20:38 #428666

Код проекта целиком где-то доступен?

01.05.2018 21:01 #428667

bormant, пока не выкладывал. Выложу, как доведу до ума.

01.05.2018 21:34 #428668

Rizado,
этот обработчик назначен на событие? Какое? Index=3 соответствует прогрессбару?

01.05.2018 22:00 #428669
"bormant" написал:
Index=3 соответствует прогрессбару?

Да.

"bormant" написал:
этот обработчик назначен на событие?

Я его из приложения устанавливаю, потом делаю Application.ProcessMessages

01.05.2018 22:08 #428670

Rizado,
про обработчик -- это было предложение проверить, действительно ли вызывается sbMainDrawPanel, кстати, откуда вызывается?

01.05.2018 22:26 #428671

bormant, прошу прощения, не дочитался. Да, вызывается на отрисовку StatusBar. Вставлял для проверки ShowMessage().

01.05.2018 22:35 #428672

Rizado,
возможно ли выложить минимальный воспроизводимый пример?

02.05.2018 09:04 #428676
"bormant" написал:
может потребоваться Style psOwnerDraw у панели.

Сделано, даже в том примере, что Вам дал.

Попробовал, всё равно не работает. Проще чем-то заменить.

02.05.2018 11:26 · отредактировано #428678

Rizado,
Под Linux с KDE4 (набор виджетов Лазарус gtk2) добиться желаемого не удалось.
Под Win10 работает как есть (но PB прижат влево, устраняется убиранием всех якорей из PB.Anchors).

02.05.2018 12:41 #428679

bormant, ну и Ктулху с ним. Придумаю что-то другое. Всё равно спасибо за помощь.

Войдите или зарегистрируйтесь, чтобы ответить.