• 0
Илья Захаров

Расположение компонентов Panel ImageViewer

Вопросы

Есть панелька alTop на этой панельке лежит компонент ImageViewer c картинкой. Как сделать так чтобы картинка притягивалась к правому краю главной формы с определёнными отступами и при этом находилась на панельке, а так же чтобы она была всегда поверх всех компонентов на форме... Так же при масштабировании на разные экраны она уменьшалась и увеличивалась пропорционально но при этом отступы от правого и верхнего края не изменялись?? А так же вопрос по панелькам как изменять их цвет чтобы у разных панелей разный цвет.

Logo.png

Изменено пользователем Илья Захаров

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 ответа на этот вопрос

  • 0
1 час назад, Илья Захаров сказал:

Как сделать так чтобы картинка притягивалась к правому краю главной формы с определёнными отступами и при этом находилась на панельке

1). Если в design-time: Задайте для ImageViewer: Align - None, Anchors - [akTop,akRight] и разместите ImageViewer на нужном месте (с необходимыми отступами).
tmp01.png

 

1 час назад, Илья Захаров сказал:

чтобы она была всегда поверх всех компонентов на форме...

2). Если не ошибаюсь, то нет свойства позволяющего сделать объект постоянно поверх все компонентов, поэтому рекомендую при добавлении компонентов перекрывающих ImageViewer делать ImageViewer.BringToFront;
 

1 час назад, Илья Захаров сказал:

Так же при масштабировании на разные экраны она уменьшалась и увеличивалась пропорционально

3). Пропорционально относительно чего? Если пропорционально размера формы, то самостоятельно пересчитывайте размер ImageViewer в TForm.OnResize
 

1 час назад, Илья Захаров сказал:

вопрос по панелькам как изменять их цвет чтобы у разных панелей разный цвет.

4). Если речь идет о TPanel, то это стилевой объект и его цвет меняется через стиль. Более простой вариант -  в качестве "панелек" использовать "не стилевой" TRecangle. Цвет TRectanle можете задать и в design-time и runtime (Rectangle1.Fill.Color := TAlphaColorRec.White)

И кстати, почему ImageViewer? Может TImage будет достаточно?

Изменено пользователем enatechno

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
23 часа назад, enatechno сказал:

1). Если в design-time: Задайте для ImageViewer: Align - None, Anchors - [akTop,akRight] и разместите ImageViewer на нужном месте (с необходимыми отступами).
tmp01.png

 

2). Если не ошибаюсь, то нет свойства позволяющего сделать объект постоянно поверх все компонентов, поэтому рекомендую при добавлении компонентов перекрывающих ImageViewer делать ImageViewer.BringToFront;
 

3). Пропорционально относительно чего? Если пропорционально размера формы, то самостоятельно пересчитывайте размер ImageViewer в TForm.OnResize
 

4). Если речь идет о TPanel, то это стилевой объект и его цвет меняется через стиль. Более простой вариант -  в качестве "панелек" использовать "не стилевой" TRecangle. Цвет TRectanle можете задать и в design-time и runtime (Rectangle1.Fill.Color := TAlphaColorRec.White)

И кстати, почему ImageViewer? Может TImage будет достаточно?

Про панель то я знал что в стиле менять можно но только все панели цвет поменяют....

Может и TImage будет достаточно...

Спасибо за советы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От Володимир Антонашко
      Здраствуйте.
      В программе я заполняю Tgrid изображениями из Imagelist по имени фото который есть в ячейке . Код :
      if column.index = 8 then //Загрузка картинок. if not value.IsEmpty then begin column.BeginUpdate; i:=StrToInt(maingr.Cells[column.Index,row]); imageindex:=main_form.ImageList1.Source.IndexOf(IntToStr(i)); column.Canvas.Clear(RowColor.Color); main_form.ImageList1.draw(column.Canvas,bounds,imageindex,100); column.EndUpdate; end; Если я уберу очистку канвы то изображения накладуються. А так как есть следующий раз при вызове DrawColumnCell изображение остается только в последней записи.
      Но такой код в  процедуре SelectCell нормально отображает изображение. На каждый вызов. Даже если изображение в ячейке нету.
      if acol = 8 then begin i:=maingr.Cells[Acol,Arow]; imageindex:=main_form.ImageList1.Source.IndexOf(i); imageviewer1.Bitmap.Clear(TAlphaColors.Null); imageviewer1.Bitmap:=main_form.ImageList1.Bitmap(size,imageindex); end; И по поводу памяти. Как я понял, после того как я присвою изображение ячейке, оно загружается в память. Также когда отображается в ImageViewer.
      Но после удаления строки с изображениям, память остается занята для уже использованных изображений.  То есть при повторном показе память больше не занимается и используется изображение которое было ранее загружено. Думаю это нормальное поведение. Так увеличивается скорость работы программы. Но я собираюсь показывать до 50 фотографий одновременно (средний размер 1мб) из 5-10 тисяч. И мне нужно чтоб после использования изображений память очищалась, иначе программа будет кушать под 10гб оперативной памяти.
    • От umkes
      Добрый день, есть ли возможность на Firemonkey открыть другое приложение на моей форме?
      Сейчас с помощью ShellExecute открывается программа, и хотелось бы это окно отобразить в панельке на форме.
      ОС Windows, открывается PDF reader.
      На VCL как я понял, ловится окно, и присваевает ему парента панельку.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу