Гсспода помогите разрулить, нету времени смотреть исходники
Нужно чтобы менялся цвет строки фиксированной колонки если строка выделена
Я уже подрихтовал RxDbGrid чтобы цвет заголовка и остальных строк фиксированной колонки были разными, а вот подсвечивать строку фиксированной колонки в выделенной строке никак не могу разобраться
процедура
procedure TRxDBGridMainForm.RxDBGrid1GetCellProps(Sender: TObject;
Field: TField; AFont: TFont; var Background: TColor);
не видит фиксированных колонок
Цвет выделенной строки фиксированной колонки RxDbGrid
Модератор: Модераторы
нет, слишком не правильно понимается понятие фиксированная ячейка, просто тупо как маркер строки или поле дял нумерации, а я понимаю это как
неподвижные при скролинге ячейки.
Пэтому все это я реализовал сам через TStrinGrid, THeaderControl , но пришлось рихтовать исходники
headercontrol.inc
comctrl.pp и
grid.pas
Мне кажется, что не плохо было наследовать класс TRxDbGrid и от класса TStringrid.
неподвижные при скролинге ячейки.
Пэтому все это я реализовал сам через TStrinGrid, THeaderControl , но пришлось рихтовать исходники
headercontrol.inc
comctrl.pp и
grid.pas
Мне кажется, что не плохо было наследовать класс TRxDbGrid и от класса TStringrid.
- alexs
- долгожитель
- Сообщения: 4069
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
он и так от него наследуется - только от CustomGrid-а
а то что не доступна колонка маркера - это перекрыто в DBGrid-е.
Вопрос - зачем она тебе нужна? если обоснуеш и убедиш меня - то подумаем.
а то что не доступна колонка маркера - это перекрыто в DBGrid-е.
Вопрос - зачем она тебе нужна? если обоснуеш и убедиш меня - то подумаем.
alexs писал(а):Вопрос - зачем она тебе нужна? если обоснуеш и убедиш меня - то подумаем.
Пожалуйста, обосновываю.
Я вывожу в сетку
1. № пп
2.Наименование организации
3.....N - значения оказателей
1 и 2 колонки делаю фиксироваными , чтобы при скроллинге вправо не исчезало наименование.
При движении по сетке выделятся определенная ячейка в колонках от 3 до N, но фиксированые ячейки при этом остаются
неизменны и невидно по какому наименованию (колонки 1..2) я смотрю параметры, в Stringrid я подкрашиваю строку фиксированной ячейки чтобы было понятно с каким наменованием я работаю
вот скриншот моего stringrid
http://lexmai.vndv.com/stringrid.jpg, поторить такое же на rxDbGrid не возможно
Код: Выделить всё
procedure TMainForm.pagemicroDrawCell(Sender: TObject; aCol, aRow: Integer;
aRect: TRect; aState: TGridDrawState);
var i:integer;
begin
with (Sender as TStringGrid) do
if gdFixed in aState then
begin
if (ACol = Col) or (ARow = Row)
then
begin
Canvas.Font.Color :=clBlack;
Canvas.Brush.Color :=$E7EEF5;
end
else
Canvas.Font.Color :=clBlack;
Canvas.FillRect(aRect);
DrawText(Canvas.Handle, PChar(Cells[ACol, ARow]), -2, aRect, DT_SINGLELINE or DT_VCENTER);
end
else
begin
aRect := CellRect(ACol, 0);
for I := 1 to FixedRows - 1 do
with CellRect(ACol, I) do
Inc(aRect.Bottom, Bottom - 1);
InvalidateRect(Handle, @aRect, True);
aRect := CellRect(0, ARow);
for I := 1 to FixedCols - 1 do
with CellRect(I, ARow) do
Inc(aRect.Right, Right - Left);
InvalidateRect(Handle, @aRect, True);
end;
procedure TMainForm.pagemicroMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var ACol, ARow: integer;
p:TPoint;
begin
//Если произошло отпускание правой кнопки мыши
if Button=mbLeft then
begin
//Узнаем номер ячейки, над которой произошло отпускание кнопки мыши
(Sender as TStringGrid).MouseToCell(X, Y, ACol, ARow);
//Делаем эту ячейку активной
(Sender as TStringGrid).Col:=ACol;
(Sender as TStringGrid).Row:=ARow;
//TPoint - это структура, обозначающая координаты точки
p:=Point(X, Y);
//Переводим локальную координату точки в экранную
p:=(Sender as TStringGrid).ClientToScreen(p);
end;
end;
Добавлено спустя 2 часа 12 минут 6 секунд:
а вот как себя ведет последний релиз svn ( 957)
http://lexmai.vndv.com/rxDbGrid.jpg
внизу disigne-time
Вот подправил код процедуры defaltdrawtitle если надо могут выставить код
тут все цветные ячейки фиксированы, в существующем 957 релизе rxdbgrid этого сделать нельзя
http://lexmai.vndv.com/newRxdbgrid.jpg
теперь можно раскрашивать всю колонку фиксированную и её title в разные цвета
вот бы еще конкретную строку строку фиксированной колонки подкрашивать по номеру строки ?
Нет времени копаться, было бы неплохо, хотя многострочные заголовки работают криво если менять их ширину, тупо увеличивается высота
самого нижнего слоя заголовка, хотя длинная строка может быть у самого вехнего слоя заголовка
