Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 19 апр 2024, 21:12

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Картинки для ExtraPanel
СообщениеДобавлено: 19 мар 2021, 09:25 
Не в сети

Зарегистрирован: 23 май 2013, 11:39
Сообщений: 52
Здравствуйте!

После перехода с версии 9 на версию 10 перестал работать следующий код по замене картинок навигатора в горизонтальной панели.

Код:
type
  tDBGridEhCrack = class(TDBGridEh);
.....
begin
  TDBGridEhCrack(DBGridEh1).HorzScrollBarPanelControl.ExtraPanel.Images := EnabledImages;
  TDBGridEhCrack(DBGridEh1).HorzScrollBarPanelControl.ExtraPanel.DisabledImages := DisabledImages;
end;
.....


Были ли какие-то изменения в библиотеке, связанные с этим? Каким способом теперь можно установить свои картинки для навигатора и панели поиска?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Картинки для ExtraPanel
СообщениеДобавлено: 22 мар 2021, 20:42 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1549
Добрый день.

В версии 10.0 были изменения связанные с добавлением поддержки HiDPI.
Для отображения картинок в кнопках навигатора теперь используется не один ImageList а отдельный класс TResourceImageItemEh для каждой кнопки.

Для изменения картинок в навигаторе грида необходимо
1. Скачать сборку не ниже EhLib.VCL 10.0 Build 10.0.033
2. Создать отдельные экземпляры класса TResourceImageItemEh для каждой картинки (кнопки).
3. Присвоить экземпляр класса TResourceImageItemEh свойствам TDBGridEhCrack(DBGridEh1).HorzScrollBarPanelControl.ExtraPanel
ExtraPanel.FirstImageItem := FMyGridScrollBarNavFirstImageItem;

ExtraPanel.PriorImageItem, ExtraPanel.NextImageItem, ExtraPanel.LastImageItem, InsertImageItem DeleteImageItem EditImageItem PostImageItem CancelImageItem RefreshImageItem

Ниже приведен пример код для установки одной картинки для кнопки навигатора First, для одного грида.

Код:
uses ... EhLibImageReses,

  TForm1 = class(TForm)
...
  public
    FMyGridScrollBarNavFirstImageItem: TResourceImageItemEh;
  end;


procedure TForm1.FormCreate(Sender: TObject);
var
  StdImages: array of TGraphic;
  DisableImages: array of TGraphic;
begin
//  SetLength(StdImages, 3);
//  SetLength(DisableImages, 3);
  SetLength(StdImages, 1);
  SetLength(DisableImages, 1);

  StdImages[0] := GetImageFromImageList(ImageList16, 0);
//  StdImages[1] := GetImageFromImageList(ImageList24, 0);
//  StdImages[2] := GetImageFromImageList(ImageList32, 0);

  DisableImages[0] := GetImageFromImageList(ImageList16, 0);
//  DisableImages[1] := GetImageFromImageList(ImageList24, 0);
//  DisableImages[2] := GetImageFromImageList(ImageList32, 0);

  FMyGridScrollBarNavFirstImageItem := TResourceImageItemEh.Create;
  FMyGridScrollBarNavFirstImageItem.InitGraphics(StdImages, DisableImages);

  TDBGridEhCrack(DBGridEh1).HorzScrollBarPanelControl.ExtraPanel.FirstImageItem := FMyGridScrollBarNavFirstImageItem;
end;


Если в StdImages (DisableImages) добавлять несколько картинок под разное DPI, то алгоритм сам будет выбирать картинку в зависимости от текущего DPI экрана.

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Картинки для ExtraPanel
СообщениеДобавлено: 29 мар 2021, 12:49 
Не в сети

Зарегистрирован: 23 май 2013, 11:39
Сообщений: 52
Попробовал изменить первую кнопку FirstImageItem, как в примере. Стандартный рисунок кнопки исчез, но новый не появился (ImageList16: TImageList; с рисунками 16 х 16).


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Картинки для ExtraPanel
СообщениеДобавлено: 29 мар 2021, 13:23 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1549
Добрый день.

Демо проект прилагается.

Локально для отдельного грида:

Код:
type
  TDBGridEhCrack = class(TDBGridEh);

procedure TForm1.FormCreate(Sender: TObject);
begin
  Caption := Caption + ' ' + EhLibVerInfo + ' ' + EhLibBuildInfo;

  InitLocalImages(DBGridEh1);
end;

procedure TForm1.InitLocalImages(DBGrid: TDBGridEh);
var
  StdImages: array of TGraphic;
  DisableImages: array of TGraphic;
begin
  SetLength(StdImages, 1);
  SetLength(DisableImages, 1);

  StdImages[0] := GetImageFromImageList(ImageList16, 0);
  DisableImages[0] := GetImageFromImageList(ImageList16, 0);

  FMyGridScrollBarNavFirstImageItem := TResourceImageItemEh.Create;
  FMyGridScrollBarNavFirstImageItem.InitGraphics(StdImages, DisableImages);

  //TDBGridEhCrack(DBGridEh1).HorzScrollBarPanelControl.ExtraPanel.FirstImageItem.Free;
  TDBGridEhCrack(DBGridEh1).HorzScrollBarPanelControl.ExtraPanel.FirstImageItem := FMyGridScrollBarNavFirstImageItem;
end;


Глобально, для всех гридов:

Код:
procedure TDataModule2.Init;
var
  StdImages: array of TGraphic;
  DisableImages: array of TGraphic;
  MyImageItem: TResourceImageItemEh;
begin

  SetLength(StdImages, 3);
  SetLength(DisableImages, 3);

  StdImages[0] := GetImageFromImageList(ImageList16, 1);
  StdImages[1] := GetImageFromImageList(ImageList24, 1);
  StdImages[2] := GetImageFromImageList(ImageList32, 1);

  DisableImages[0] := GetImageFromImageList(ImageList16, 1);
  DisableImages[1] := GetImageFromImageList(ImageList24, 1);
  DisableImages[2] := GetImageFromImageList(ImageList32, 1);

  MyImageItem := TResourceImageItemEh.Create;
  MyImageItem.InitGraphics(StdImages, DisableImages);

  EhLibImageResources.GridScrollBarNavLastImageItem.Free;
  EhLibImageResources.GridScrollBarNavLastImageItem := MyImageItem;
end;

procedure InitModule;
begin
  DataModule2 := TDataModule2.Create(Application);
  DataModule2.Init;
end;

initialization
  InitModule;
end.


Вложения:
sshot-178.png
sshot-178.png [ 25.31 KiB | Просмотров: 1035 ]
2021-03-29-ImagesInExtraPanel.zip [2.34 MiB]
Скачиваний: 55

_________________
Best regards
EhLib support Team
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Картинки для ExtraPanel
СообщениеДобавлено: 30 мар 2021, 14:01 
Не в сети

Зарегистрирован: 23 май 2013, 11:39
Сообщений: 52
Спасибо. Похоже что-то не то с моей картинкой. После замены становится невидимой.


Вложения:
ImagesInExtraPanel.zip [68.36 KiB]
Скачиваний: 46
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Картинки для ExtraPanel
СообщениеДобавлено: 30 мар 2021, 17:04 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1549
Добрый день.

Точную причину назвать не можем.
Вероятно как-то криво или с какими-то особенностями работает метод function TCustomImageList.GetImageBitmap: HBITMAP;

--
Попробуйте пересоздать ImageList с установленным свойством ColorDepth = cd32Bit

--
Попробуйте пересоздать ImageList на основе png файлов. ImageList в нашем Демо проекте создан на основе png файлов.

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Картинки для ExtraPanel
СообщениеДобавлено: 31 мар 2021, 12:32 
Не в сети

Зарегистрирован: 23 май 2013, 11:39
Сообщений: 52
EhLibSupport писал(а):
Попробуйте пересоздать ImageList на основе png файлов. ImageList в нашем Демо проекте создан на основе png файлов.


Помогло. Пересоздал картинки в png, наложив на прозрачный фон. Скорее всего что-то не так было из-за прозрачности.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: Bing [Bot] и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB