Страница 25 из 26
Re: Глюки rxDBGrid
Добавлено:
21.08.2020 17:07:54
alexs
Наверное надо както приводить к общему знаменателю... Надо подумать
Re: Глюки rxDBGrid
Добавлено:
21.08.2020 17:45:27
V@S
А можно попросить об одной реализации?
Добавить в событие OnGetCellProps параметр Highlight = boolean.
Чтобы можно было отследить,что в гриде строка подсвечивается и соответственно не менять цвет строки (строка может подсвечиваться свойством dgRowHighlight или быть выделенной при gdMultiSelect).
Или подскажите как еще можно определить, что данная строка является выделенной/выбранной? Может просто не нахожу нужного свойства или метода
Re: Глюки rxDBGrid
Добавлено:
21.08.2020 17:54:04
alexs
V@S писал(а):Или подскажите как еще можно определить, что данная строка является выделенной/выбранной? Может просто не нахожу нужного свойства или метода
Что-то типа этого
RxDBGrid1.SelectedRows.IndexOf(quMain.Bookmark);
Re: Глюки rxDBGrid
Добавлено:
21.08.2020 17:56:51
V@S
В DrawCell модуля rxdbgrid даже учитывается, что строка выделена, но не учитывается что она подсвечена
- Код: Выделить всё
if Assigned(FOnGetCellProps) and not (gdSelected in aState) then
begin
FBackground := Canvas.Brush.Color;
FOnGetCellProps(Self, GetFieldFromGridColumn(aCol), Canvas.Font, FBackground);
Canvas.Brush.Color := FBackground;
end;
Но тут проверять еще на активную подсветку всей строки неправильно, вдруг надо перекрашивать все равно.
Даже можно aState передать, как в других событиях.
Добавлено спустя 52 секунды:alexs писал(а):RxDBGrid1.SelectedRows.IndexOf(quMain.Bookmark);
Даже если запись не в закладках? Или активная запись всегда в закладки помещается?
Re: Глюки rxDBGrid
Добавлено:
21.08.2020 17:57:49
alexs
А ещё кажется должно так сработать
if RxDBGrid1.SelectedRows.CurrentRowSelected then
Хотя в реализации CurrentRowSelected тоже самое и есть:
- Код: Выделить всё
function TBookmarkList.GetCurrentRowSelected: boolean;
var
Bookmark: TBookmark;
begin
CheckActive;
Bookmark := FDataset.GetBookmark;
Result := IndexOf(Bookmark)>=0;
FDataset.FreeBookmark(Bookmark);
end;
Re: Глюки rxDBGrid
Добавлено:
21.08.2020 18:03:08
V@S
alexs писал(а):А ещё кажется должно так сработать
if RxDBGrid1.SelectedRows.CurrentRowSelected then
Это нашел, но не смог заставить так срабатывать для текущей строки.
Re: Глюки rxDBGrid
Добавлено:
25.09.2020 10:44:22
kit
Не берет название шрифта из TitleFont для об'единенних колонок "|", для простих - нормально.
Re: Глюки rxDBGrid
Добавлено:
28.09.2020 14:48:34
alexs
kit писал(а):Не берет название шрифта из TitleFont для об'единенних колонок "|", для простих - нормально.
Уже берёт - ревизия 7680
Re: Глюки rxDBGrid
Добавлено:
09.01.2021 23:45:52
YaroslavSh
Добрый день.
- Код: Выделить всё
procedure TForm3.RxDBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if RxDBGrid1.DataSource.DataSet.FieldByName('kolvo').AsFloat<=0 then begin
with RxDBGrid1.Canvas do begin
Brush.Color:=$00605BF4;
if gdSelected in State then begin
Brush.Color:= $00FFBF80;
Font.Color := clblack;
end;
FillRect(Rect);
end;
end;
RxDBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
При раскрашивании таким методом, пропадают горизонтальные разделители строк, и все сливается в одну картинку, хотя вертикальные остаются. Ни как не могу их вернуть. Что для этого нужно сделать?
Re: Глюки rxDBGrid
Добавлено:
09.01.2021 23:51:08
alexs
В Rect находится координата также и разделительной линии
Просто уменьши на единицу нижнюю кординату.
Re: Глюки rxDBGrid
Добавлено:
10.01.2021 02:43:08
YaroslavSh
Я много вариантов пробовал, но либо не рисует совсем, либо просто без изменений
По идеи, должно быть:
fillRect(X1,Y1,X2,Y2: Integer)
RxDBGrid1.Canvas.FillRect(0,0,Width,Height-1);
Re: Глюки rxDBGrid
Добавлено:
10.01.2021 23:18:09
Seenkao
Варианты решения:
1 - Выставить прозрачность при сплошной заливке?
2 - заливать частями, чтоб не затереть линии.
3 - делать заливку, а потом делать таблицу сверху? (странный вариант...)
Чтоб понимать - FillRect - это сплошная заливка сплошного прямоугольника, где все линии, попадающие в прямоугольник заливки так же приобретают цвет заливки. (рисовался бы текст раньше заливки, то и его бы тоже не видно было).
Re: Глюки rxDBGrid
Добавлено:
11.01.2021 10:07:33
Снег Север
YaroslavSh, а если так:
RxDBGrid1.Canvas.FillRect(0,1,Width,Height-2);
Re: Глюки rxDBGrid
Добавлено:
11.01.2021 11:03:15
alexs
Предложений уже набросали
Вот ещё один вариант:
- Код: Выделить всё
procedure TForm1.RxDBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
P: TSize;
begin
P:=Rect.Size;
P.cy:=P.cy - 1;
P.cx:=P.cx - 1;
Rect.Size:=P;
if FBDataSet1SPR_UNITS_CODE.AsInteger<=2 then
begin
Re: Глюки rxDBGrid
Добавлено:
11.01.2021 23:36:13
YaroslavSh
Спасибо за помощь.
Снег Север писал(а):YaroslavSh, а если так:
RxDBGrid1.Canvas.FillRect(0,1,Width,Height-2);
- это неверно.
- Код: Выделить всё
var
P: TSize;
begin
P:=Rect.Size;
P.cy:=P.cy - 1;
P.cx:=P.cx - 1;
Rect.Size:=P;
if RxDBGrid1.DataSource.DataSet.FieldByName('kolvo').AsFloat<=0 then
begin
with RxDBGrid1.Canvas do begin
Brush.Color:=$00605BF4;
if gdSelected in State then begin
Brush.Color:= $00FFBF80;
Font.Color := clblack;
end;
RxDBGrid1.Canvas.FillRect(rect);
end;
end;
Это то, что нужно, спасибо ГУРУ.