powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вопрос про TAnimate и ширину формы
5 сообщений из 5, страница 1 из 1
Вопрос про TAnimate и ширину формы
    #39467898
Sonia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Такой вопрос. Можно ли как-то универсально посчитать и выставить ширину формы в зависимости от длины заголовка?
Я так понимаю, что тут еще зависит от типа и размера шрифта и от темы виндовс?

И еще сюда же напишу вопрос: по какой причине может не работать виндовая анимация (то есть форма отображается пустая, без анимации)? Возможно ли такое из-за того, что неверно рассчитаны ширина-высота компонента и он на форму немного не влезает, или он должен все равно показаться?
Код: 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.
function ShowAVI(const AVI: TCommonAVI;
  const ParentForm: TForm = nil; const aCaption: string = ''): TMyCommonDialog;
var
  a: TAnimate;
begin
  Result := nil;
  if AVI = aviNone then Exit;
  if ParentForm = nil then Result := CreateCommonDialog(aCaption)
  else Result := CreateCommonDialog(aCaption, ParentForm, ParentForm);

  with Result do
  begin
    a := TAnimate.Create(Result);
    a.Left := 0;
    a.Top := 0;
    a.Parent := Result;
    a.CommonAVI := AVI;

    Result.ClientWidth := a.Width;
    if Result.ClientWidth < 200 then Result.ClientWidth := 200;
    Result.ClientHeight := a.Height;


    if ParentForm <> nil then
    begin
      if ParentForm.Width > Width then Left := ParentForm.Left + (ParentForm.Width - Width) div 2
      else Left := ParentForm.Left;
      if ParentForm.Height > Height then Top := ParentForm.Top + (ParentForm.Height - Height) div 2
      else Top := ParentForm.Top;
    end;
    if aCaption <> '' then Result.Caption := aCaption else Caption := 'Ждите...';
    Show;
    a.Active := True;
  end;
end;



Спасибо за ответы!
...
Рейтинг: 0 / 0
Вопрос про TAnimate и ширину формы
    #39467909
Sonia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А, забыла написать вызов:
Код: pascal
1.
2.
3.
4.
5.
6.
var avi: TMyCommonDialog;
begin
...
avi := ShowAVI(aviCopyFiles, Self, 'Бла-бла-бла');
...
end;
...
Рейтинг: 0 / 0
Вопрос про TAnimate и ширину формы
    #39467967
Sonia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насчет того, что не отображается анимация предположение, что в моей Виндовс 7 нет уже стандартных видео.
А насчет ширины формы, может кто что дельное подскажет?
...
Рейтинг: 0 / 0
Вопрос про TAnimate и ширину формы
    #39467988
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SoniaА насчет ширины формы, может кто что дельное подскажет?
Первым делом нужно узнать, каким шрифтом пишется заголовок (может быть любой шрифт).
Плюсом нужно узнать размеры системных кнопок/иконок (которые могут и отсутствовать) и их наличие.

Со шрифтом просто: https://stackoverflow.com/questions/2548132/how-to-get-textwidth-of-string-without-canvas
С системными кнопками/иконками https://msdn.microsoft.com/en-us/library/windows/desktop/ms724385(v=vs.85).aspx
Что именно система рисует в заголовке можно узнать дернув стиль окна https://msdn.microsoft.com/en-us/library/windows/desktop/ms633584(v=vs.85).aspx

Хватит? :-)
...
Рейтинг: 0 / 0
Вопрос про TAnimate и ширину формы
    #39468858
Sonia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadmanХватит? :-)

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


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