Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выделенная строка в гриде, DBGridEh 
V
    Опции темы
MacTep
Дата 14.7.2012, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



Можно ли и как поменять цвет выделенной строки в DBGridEh (во время активности окна, и когда оно не активно)?


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Albinos_x
Дата 14.7.2012, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 1
Всего: 108



думаю можно)


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
MacTep
Дата 14.7.2012, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



Предполагал наличие таковых ответов smile Даже решил проверить, ответят так или все же будут по делу советы smile 
Тогда для тех, кто в танке: господа хорошие, помогите изменить цвет, подскажите, как это сделать?


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Albinos_x
Дата 14.7.2012, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 1
Всего: 108



полагаю, что активность окна можно получить:
Код

if form1.Active then


моменты деактивации и активации
можно отловить стандартными событиями onActivate и Ondeactivate

Добавлено через 6 минут и 46 секунд
где то видел вроде такое свойство такое не нашел пока у него..., но можно в ручную перерисовать.. ловя сообщение drawcell..
наподобии:
Код

Procedure DrawCellGrid(Rect:TRect; Can:TCanvas; BrashColor:TColor; Font:TFont; Text:String);
var bmp:TBitmap;
    s:String;
    x,y:Integer;
begin
bmp:=TBitmap.Create;
bmp.Width:=Rect.Right-Rect.Left;
bmp.Height:=Rect.Bottom-Rect.Top;
bmp.Canvas.Brush.Color:=BrashColor;
bmp.Canvas.Pen.Color:=BrashColor;
bmp.Canvas.Brush.Style:=bsSolid;
bmp.Canvas.Font:=Font;
bmp.Canvas.Rectangle(bmp.Canvas.ClipRect);
S:=Text;
x:=(bmp.Width-bmp.Canvas.TextWidth(s)) div 2;
y:=(bmp.Height-bmp.Canvas.TextHeight(s)) div 2;
bmp.Canvas.TextOut(X,Y,S);
can.Draw(Rect.Left,Rect.Top,bmp);
bmp.Free;
end;



--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
MacTep
Дата 15.7.2012, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



Решил вопрос вот так. Сделал не сам, повзаимствовал с форума компонентов Alpha Controls:
Код

type TMyDBGridEhStyle = class(TDBGridEhStyle)

   public
        function HighlightDataCellColor(AGrid: TCustomDBGridEh; ACol, ARow: Integer;
      DataCol, DataRow: Integer; const Value: string; AState: TGridDrawState;
      InMultiSelect: Boolean; var AColor: TColor; AFont: TFont): Boolean; override;
   end;

var
  Form1: TForm1;
  MyStyle: TDBGridEhStyle;


implementation

function TMyDBGridEhStyle.HighlightDataCellColor(AGrid: TCustomDBGridEh;
  ACol, ARow, DataCol, DataRow: Integer; const Value: string;
  AState: TGridDrawState; InMultiSelect: Boolean; var AColor: TColor; AFont: TFont): Boolean;
begin
  Result := inherited HighlightDataCellColor(AGrid, ACol, ARow, DataCol, DataRow, Value, AState, InMultiSelect, AColor, AFont);
 
  if Result and ([gdFocused] * AState = [gdFocused]) then
    AColor := Form1.sSkinManager1.GetHighLightColor(Form1.Focused);

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
MyStyle := TMyDBGridEhStyle.Create();
DBGridEh1.Style := MyStyle;
end;



--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Аватар
Дата 16.7.2012, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 20.6.2012

Репутация: нет
Всего: нет



Выдернул из проги кусок
Код

procedure TFMDIChild.DBGridEhGetCellParams(Sender: TObject; Column: TColumnEh; AFont: TFont; var Background: TColor; State: TGridDrawState);
begin
  if gdSelected in State then begin
    if not TDBGridEh(Sender).Focused then Background:=clBtnFace;
    Exit;
  end;
  if (TDBGridEh(Sender).DataSource.DataSet.FindField(sdFIELD_METKA)<>nil) and
     (TDBGridEh(Sender).DataSource.DataSet.FieldByName(sdFIELD_METKA).AsString=sdMETKA) then Background:=clYellow;
end;


Это сообщение отредактировал(а) Аватар - 16.7.2012, 18:17
PM MAIL   Вверх
DYUMON
Дата 20.7.2012, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 321
Регистрация: 17.6.2006
Где: Новосибирск

Репутация: 2
Всего: 3



Код

  BkgColor: TColor;
begin
  // if gdSelected in State then OutRect := Rect;
  if not(gdSelected in State) then
    BkgColor := TDBGrid(Sender).Color
  else if TDBGrid(Sender).Focused then // Ãðèä àêòèâåí
    BkgColor := $00FF8C8C // Ñèíèé äëÿ òåêóùåé ñòðîêè
  else
    BkgColor := $0059FFFF; // Ñåðûé äëÿ òåêóùåé ñòðîêè
  TDBGrid(Sender).Canvas.Brush.Color := BkgColor;
  TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
  //
end;



--------------------
Всех программистов надо посадить на целероны, что бы впредь головой думали что пишут.
user posted image
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.2995 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.