С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 25.10.2019
Сообщений: 37
1

Как под компонентом Image вывести надпись так, что при любом изменения размера компонента надпись оставалась под ним?

12.05.2020, 14:01. Показов 3121. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как под компонентом Image вывести надпись так, что при любом изменения размера компонента и его положения надпись оставалась под ним?(Label)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Блог
12.05.2020, 14:01
Ответы с готовыми решениями:

Что лучше брать Delphi XE2, Delphi XE, Delphi 7?
Привет форумчане! У меня вопрос: что лучше брать Delphi XE2, Delphi XE, Delphi 7? Как вообще...

ZipForge для Delphi Xe - интерфейс стал выглядеть как в Delphi 2007
Народ!!! Помоготи!!! Установил компонент ZipForge для Delphi Xe и после этого интерфейс моей...

Почему функция работающая в Delphi 7 не работает в Delphi 2007 и в 2009 ??
Данный код работал нормально в D7: procedure TForm1.Button1Click(Sender: TObject); begin...

Какова разница работы одного кода в Delphi 7 и в Delphi XE5?
Почему приложение состоящие из одинакового кода, но компилируемое в разных средах работает по...

8
3760 / 2264 / 705
Регистрация: 29.05.2013
Сообщений: 9,616
12.05.2020, 14:21 2
Тут несколько факторов, которые могут повлиять на корректность отображения. Лучше всего такую связанную пару компонентов поместить в отдельный контейнер TPanel и работать со свойствами компонентов Anchors
0
0 / 0 / 0
Регистрация: 25.10.2019
Сообщений: 37
12.05.2020, 14:47  [ТС] 3
а как их связать то? если ставлю на панель просто, то компонент перестает работать
0
Модератор
3758 / 2262 / 783
Регистрация: 15.11.2015
Сообщений: 8,996
12.05.2020, 14:55 4
Лучший ответ Сообщение было отмечено Anasat как решение

Решение

Цитата Сообщение от Anasat Посмотреть сообщение
то компонент перестает работать
Как это перестаёт работать? Имеющийся Image нужно просто переместить на Panel, больше там ничего не поменяется.

Добавлено через 49 секунд
Цитата Сообщение от Anasat Посмотреть сообщение
вывести надпись так, что при любом изменения размера компонента и его положения
А кто меняет размер и положение этого Image?

Добавлено через 2 минуты
Delphi какой версии вообще?

Если размер и положение Image меняется программно (вручную), то точно так же надо поменять и положение Label:
Delphi
1
  Label1.SetBounds(Image1.Left, Image1.Top + Image1.Height, Label1.Width, Label1.Width);
1
0 / 0 / 0
Регистрация: 25.10.2019
Сообщений: 37
12.05.2020, 15:17  [ТС] 5
да фиг знает с чего размер должен меняться)
Delphi 7
Миниатюры
Как под компонентом Image вывести надпись так, что при любом изменения размера компонента надпись оставалась под ним?  
0
Модератор
3758 / 2262 / 783
Регистрация: 15.11.2015
Сообщений: 8,996
12.05.2020, 15:20 6
Anasat, из А) не следует, что размер Image должен меняться. Наоборот, изображение должно подстроится под размер Image. Последнее делается установкой свойства Stretch = true.
1
Модератор
3758 / 2262 / 783
Регистрация: 15.11.2015
Сообщений: 8,996
12.05.2020, 16:00 7
Лучший ответ Сообщение было отмечено Anasat как решение

Решение

Могу предложить вот такую центровку с сохранением пропорций:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.FormResize(Sender: TObject);
var
  nw, nh: integer;
begin
  // Установка размера Image1 с сохранением пропорций
  // Image1 и Label1 находятся на Panel2
  nw := Panel2.Width ;
  nh := Round(nw*Image1.Picture.Graphic.Height/Image1.Picture.Graphic.Width);
  if nh > (Panel2.Height - Label1.Height) then begin
    nh := (Panel2.Height - Label1.Height);
    nw := Round(nh*Image1.Picture.Graphic.Width/Image1.Picture.Graphic.Height);
  end;
  Image1.SetBounds((Panel2.Width - nw) div 2, (Panel2.Height - nh - Label1.Height) div 2, nw, nh);
  Label1.SetBounds((Panel2.Width - Label1.Width) div 2, Image1.Top + Image1.Height, Label1.Width, Label1.Height);
end;
Вложения
Тип файла: rar ImageCenter1.rar (2.1 Кб, 4 просмотров)
1
Модератор
3758 / 2262 / 783
Регистрация: 15.11.2015
Сообщений: 8,996
12.05.2020, 16:03 8
Label находится под Image и текст центрирован тоже.
0
0 / 0 / 0
Регистрация: 25.10.2019
Сообщений: 37
12.05.2020, 17:03  [ТС] 9
спасибо большое!
0
12.05.2020, 17:03
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
12.05.2020, 17:03
Помогаю со студенческими работами здесь

где найти delphi c компилятором? и с чего начинать программирование в delphi?
здравствуйте, вот начинаю изучать delphi с чего начинать лучше?

Как в Delphi сделать Excel таблицу, не употребляя компонент TStringGrid и связать ее с Delphi
Как в Delphi сделать Excel таблицу, не употребляя компонент TStringGrid и связать ее с Delphi?

У меня есть литература для изучения delphi 7. Могу ли я по ней изучить delphi 2010?
Всем привет. Очередной семестр в универе подходит к концу, а лабы по программированию сданы и мне...

В Delphi можно приравнивать строки? например уменя Массив из строк (Фамиоий и имён )|Delphi
нужно узнать есть одно фамильцы там они у меня в StringGrid.Cells 1 это фамилии а 2 столбец...

Что лучше Borland delphi или Turbo Delphi?
Что лучше Borland delphi или Turbo Delphi?

Не переходит на точку останова после перевода с Delphi 7 на Delphi 10
Доброго времени суток, товарищи! Столкнулся я с одной проблемой. Был проект на Delphi 7, купили...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru