Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

StringGrid и пунктир if gdFocused (DrawFocusRect)?


Cosinus ©   (2004-10-08 15:30:00) 

Помогите найти и прибить кусок кода из Grids.pas, отвечающий за прорисовку курсивной линии, если gdFocused in Stateвокруг активной ячейки. Вот не могу найти и все:(((


Леприкон   (2004-10-11 07:24:00) [1]

У меня получилось. Открыл файл Grids.pas, закомментировал все DrawFocusRect в нём, сохранил его в другом месте, затем "Add file to project" добавил его к проекту, после этого при компиляции уже брался он, а не Grids.dcu из Lib.


ЮЮ   (2004-10-11 04:01:00) [2]

DefaultDrawing = false и кроме сетки грида ничто тебя не побеспокоит :)

И теперь в OnDrawCell рисуешь что хочешь и как хочешь


Cosinus   (2004-10-08 17:27:00) [3]


> Игорь Шевченко ©   (08.10.04 17:16) [4]

Вслух? Говорил. И даже монитор протирал - не помогает :)
А если серьезно, что вы имели ввиду?


Игорь Шевченко   (2004-10-08 17:16:00) [4]


> Помогите найти и прибить кусок кода из Grids.pas, отвечающий
> за прорисовку курсивной линии, если gdFocused in State вокруг
> активной ячейки


Попробуй еще раз сказать DrawFocusRect


Cosinus   (2004-10-08 16:57:00) [5]

DrawFocusRect я все от безысходности прибил... Либо не то, либо я что то не так делаю.
ЗЫ А то, что это t
> в TCustomGrid процедуру Paint, в ней внутреннюю процедуру
> DrawCells

это в общем то как раз понятно :))))


Skeptik   (2004-10-08 16:30:00) [6]

посмотри: в TCustomGrid процедуру Paint, в ней внутреннюю процедуру DrawCells, а там ищи этот код (где-то в конце):

if DefaultDrawing and not (csDesigning in ComponentState) and
  (gdFocused in DrawState) and
  ([goEditing, goAlwaysShowEditor] * Options <>
   [goEditing, goAlwaysShowEditor])
  and not (goRowSelect in Options) then
begin
 if not UseRightToLeftAlignment then
    DrawFocusRect(Canvas.Handle, Where)
 else
   begin
     AWhere := Where;
     AWhere.Left := Where.Right;
     AWhere.Right := Where.Left;
     DrawFocusRect(Canvas.Handle, AWhere);
   end;
end;

но это только если not (goRowSelect in Options)
если интересует условие goRowSelect in Options,
то тогда в самой Paint ищи (тоже в конце):

if not (csDesigning in ComponentState) and
 (goRowSelect in Options) and DefaultDrawing and Focused then
begin
 GridRectToScreenRect(GetSelection, FocRect, False);
 if not UseRightToLeftAlignment then
   Canvas.DrawFocusRect(FocRect)
 else
   begin
     AFocRect := FocRect;
     AFocRect.Left := FocRect.Right;
     AFocRect.Right := FocRect.Left;
     DrawFocusRect(Canvas.Handle, AFocRect);
   end;
end;


Леприкон   (2004-10-08 16:19:00) [7]

может где то в районе 1893 строки? (D7)


Наверх

Титульная страница Поиск, карта сайта Написать письмо