Components for Delphi and C++ Builder.

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

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: 14 май 2018, 11:28 
Не в сети

Зарегистрирован: 03 мар 2017, 07:12
Сообщений: 91
Здравствуйте.

Перенес проект из Delphi7 (Ehlib 6.2) в Lazarus1.8 (Ehlib 9.1)
Ячейки в гриде отрисовываются по разному.

Текст отрисовки один и тот же

Код:
//Установка значка Золотой бонус, на Расписание
procedure TFormAssistantReg.DBGridEh4DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
var btmp : TIcon; fixRect : TRect; bmpWidth : integer; imgIndex : integer;
begin
     fixRect := Rect;
     if ((Column.Field = MemTableEh4NAME) and MemTableEh4gb.Value) then
        begin
        btmp := TIcon.Create;
        try
           ImageList1.GetIcon(0, btmp);
           bmpWidth := (Rect.Bottom - Rect.Top);
           fixRect.Right := Rect.Left + bmpWidth;
           DBGridEh4.Canvas.StretchDraw(fixRect, btmp);
        finally
        btmp.Free;
        end;
        fixRect := Rect;
        fixRect.Left := fixRect.Left + bmpWidth;
        DBGridEh4.DefaultDrawColumnCell(fixRect, DataCol, Column, State);
        end;
end;   


Подскажите пожалуйста, как добиться чтобы в Lazarus таким же как в Delphi выделялась вся строка и в колонке Расписание тоже.?


Вложения:
Комментарий к файлу: на Lazarus1.8
laz_DefaultDrawColumnCell.png
laz_DefaultDrawColumnCell.png [ 41.55 KiB | Просмотров: 721 ]
Комментарий к файлу: на Delphi7
dph_DefaultDrawColumnCell.png
dph_DefaultDrawColumnCell.png [ 20.77 KiB | Просмотров: 721 ]
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 15 май 2018, 08:14 
Не в сети

Зарегистрирован: 03 мар 2017, 07:12
Сообщений: 91
На библиотеке версии 9.2 так же


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 24 май 2018, 05:01 
Не в сети

Зарегистрирован: 03 мар 2017, 07:12
Сообщений: 91
Есть у кого идея как реализовать закрашивание колонки?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 24 май 2018, 08:15 
Не в сети

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

Можно использовать один из следующих вариантов решения

1. Отключить 'Use manifest resource (and enable themes)' в настройках проекта.

2. Использовать событие колонки TColumnEh.OnAdvDrawDataCell

Код:
procedure TfrEditControls.DBGridEh6Columns2AdvDrawDataCell(
  Sender: TCustomDBGridEh; Cell, AreaCell: TGridCoord; Column: TColumnEh;
  const ARect: TRect; var Params: TColCellParamsEh; var Processed: Boolean);
begin
  // //Draw custom data
  // \\
  Sender.DefaultDrawColumnDataCell(Cell, AreaCell, Column, ARect, Params);
end;

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 24 май 2018, 12:46 
Не в сети

Зарегистрирован: 03 мар 2017, 07:12
Сообщений: 91
EhLibSupport писал(а):
2. Использовать событие колонки TColumnEh.OnAdvDrawDataCell


Код:
procedure TFormCallCntr.DBGridEh4Columns3AdvDrawDataCell(
  Sender: TCustomDBGridEh; Cell, AreaCell: TGridCoord; Column: TColumnEh;
  const ARect: TRect; var Params: TColCellParamsEh; var Processed: Boolean);
var btmp : TIcon; fixRect : TRect; bmpWidth : integer; imgIndex : integer;
begin
     fixRect := ARect;
     //if ((Column.Field = MemTableEh4NAME) and MemTableEh4gb.Value) then
        begin
        btmp := TIcon.Create;
        try
           ImageList1.GetIcon(0, btmp);
           bmpWidth := (ARect.Bottom - ARect.Top);
           fixRect.Right := ARect.Left + bmpWidth;
           Sender.Canvas.StretchDraw(fixRect, btmp);
        finally
        btmp.Free;
        end;
        fixRect := ARect;
        fixRect.Left := fixRect.Left + bmpWidth;
        end;
    Sender.DefaultDrawColumnDataCell(Cell, AreaCell, Column, fixRect, Params);
end;     


Попробовал, не работает.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 24 май 2018, 13:43 
Не в сети

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

Код:
procedure TFormCallCntr.DBGridEh4Columns3AdvDrawDataCell(
  Sender: TCustomDBGridEh; Cell, AreaCell: TGridCoord; Column: TColumnEh;
  const ARect: TRect; var Params: TColCellParamsEh; var Processed: Boolean);
var btmp : TIcon; fixRect : TRect; bmpWidth : integer; imgIndex : integer;
begin
     fixRect := ARect;
     //if ((Column.Field = MemTableEh4NAME) and MemTableEh4gb.Value) then
        begin
        btmp := TIcon.Create;
        try
           ImageList1.GetIcon(0, btmp);
           bmpWidth := (ARect.Bottom - ARect.Top);
           fixRect.Right := ARect.Left + bmpWidth;
           Sender.Canvas.StretchDraw(fixRect, btmp);
        finally
        btmp.Free;
        end;
        fixRect := ARect;
        fixRect.Left := fixRect.Left + bmpWidth;
        end;
    Sender.DefaultDrawColumnDataCell(Cell, AreaCell, Column, fixRect, Params);
    Processed := True;
end;

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 24 май 2018, 14:18 
Не в сети

Зарегистрирован: 03 мар 2017, 07:12
Сообщений: 91
EhLibSupport писал(а):
Забыли Processed прописать.

Спасибо работает.
Но я уже другой способ нашел, методом тыка.
В вашем способе фон под картинкой белый получается, т.е. выглядит как же как в Delphi
А у меня получилось, что и фон под картинкой такой же как у выделенной строки.

Вложение:
lz_canvas.png
lz_canvas.png [ 14.47 KiB | Просмотров: 650 ]


Код:
procedure TFormCallCntr.DBGridEh4DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
var btmp : TIcon; fixRect : TRect; bmpWidth : integer; imgIndex : integer; clfon:TColor;
begin
     fixRect := Rect;
     with (Sender as TDBGridEh) do
     if ((Column.Field = MemTableEh4NAME) and MemTableEh4gb.Value) then
        begin
        clfon:=Canvas.Pixels[fixRect.Left,fixRect.Top+1];
        btmp := TIcon.Create;
        try
           ImageList1.GetIcon(0, btmp);
           bmpWidth := (Rect.Bottom - Rect.Top);
           fixRect.Right := Rect.Left + bmpWidth;
           fixRect.Top:=fixRect.Top+1; fixRect.Bottom:=fixRect.Bottom-1;
           Canvas.StretchDraw(fixRect, btmp);
        finally
        btmp.Free;
        end;
        fixRect := Rect;
        fixRect.Left := fixRect.Left + bmpWidth;
        Canvas.CopyRect(fixRect, Canvas, fixRect);
        Canvas.Brush.Color := clfon;
        Canvas.textOut(fixRect.Left+2,fixRect.Top+2,' '+Column.Field.text);
        end;
end;                   


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


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

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