Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.02;
Скачать: CL | DM;

Вниз

Украшение dbGrid   Найти похожие ветки 

 
yk ©   (2006-02-09 13:45) [0]

Уважаемые мастера помогите, а то я чтото запуталась!

Есть следующие требования к работе с таблицей:
1- пользователь должен иметь возможность раскрашивать строки по своему усмотрению
2- пользователь должен иметь возможность редактировать ячейки выбранной  строки , но хочет чтобы выбранная строка выделялась вся (dbEditing,dbMultiSelect=true  dbRowSelect=false)
3- пользователь должен иметь возможность "перетаскивать" строки

для 1и 2 перегружаем метод OnDrawCell
но при 2 возникает задача - как внутри метода узнать - принадлежит ли текущая прорисовываемая ячейка выбранной строке? Потомучто если использовать (gdSelected in State) то он для выделеных ЯЧЕИК.

При реализации 2 - проблема с тем что в режиме dbEditing не вызываются методы MouseDown и MouseUp

(dbGrid)


 
unknown ©   (2006-02-09 13:56) [1]

в EhLib все это организовать можно без особых проблем.
http://ehlib.com/RUS/ehlibrus.exe - пароль "ФЕВРАЛЬФЕВРАЛЬ"
P/S
EhLib 3.6 - бесплатная для exUSSR.


 
yk ©   (2006-02-09 14:17) [2]

а в 3.3 ??


 
unknown ©   (2006-02-09 15:38) [3]


> yk ©   (09.02.06 14:17) [2]
>
> а в 3.3 ??

Что в 3.3 ?
Если бесплатность - то 3.6 это последняя бесплатная версия,
EhLib платным стал с версии 4.0
Если пароль - так он всегда по-моему таким был...


 
ЮЮ ©   (2006-02-10 02:56) [4]


>  как внутри метода узнать - принадлежит ли текущая прорисовываемая
> ячейка выбранной строке?

См. http://delphimaster.net/view/2-1139385479/


 
ЮЮ ©   (2006-02-10 03:04) [5]


> 3- пользователь должен иметь возможность "перетаскивать"
> строки

Перетаскивать - это что?
Если менять порядок следования, то требуется умудриться изменить "порядок строк" в DataSete, если он должен сохраниться, то в Таблице, ДБгрид здесь ничем не поможет.  


> При реализации 2 - проблема с тем что в режиме dbEditing
> не вызываются методы MouseDown и MouseUp

Чьи? Дело в том, что в режиме dbEditing фокус ввода принадлежит другому окну, порожденному DBGrid, - TDBGrid.InplaceEsit. и, естественно, что до методов и обработчиков грида дело, скорей всего, не доходит.


 
yk ©   (2006-02-10 07:58) [6]

>Как вариант, в AfterScroll DataSet-а запоминать в общедоступном месте >значение ключевого поля, в OnDraw... грида сравнивать его со значением >ключевого поля отображаемого DataSeta.

ужас :(  и непонятно ничего и подумала - раз этот грид такой умный - то пусть сам и определяет где что
я сделала может и тупо - зато работает :выделяется вся СТРОКА а не только выделенная Ячейка
if((gdSelected in State))then
 begin
   dbgStems.Canvas.Brush.Color:=clHighLight;
  dbgStems.Canvas.Font.Color:=clHighLightText;
 end
else
 begin
 dbgStems.DefaultDrawColumnCell(Rect,DataCol,Column, State);
 if(dbgStems.Canvas.Brush.Color<>clHighLight) then
     begin
     dbgStems.Canvas.Brush.Color:=cdsStems.fieldByNAme("color").ASINteger;
     dbgStems.Canvas.Font.Color:=clWhite xor(dbgStems.Canvas.Brush.Color);
     end;
 end;


но тут один существенный недостаток - не видно какого цвета выделеные строки (всмысле что они разных цветов могут быть - не видно) - вот думаю как это сделать чтобы было видно... 8)(

>Если менять порядок следования, то требуется умудриться >изменить "порядок строк" в DataSete, если он должен сохраниться, то в >Таблице, ДБгрид здесь ничем не поможет
это делаю с помощью добавочного поля №строки - по нему идет сортировка
"перетаскивание строки" заключается в изменении номера строки

>Дело в том, что в режиме dbEditing фокус ввода принадлежит другому >окну, порожденному DBGrid, - TDBGrid.InplaceEsit. и, естественно, что до >методов и обработчиков грида дело, скорей всего, не доходит.
здорово (     значит в режиме dbEditing я не могу использовать onmousedown/up --- может намекнете как тогда лучше сделать "перетаскивание строк" ?? у меня не дотумкивается ((


 
yk ©   (2006-02-10 08:02) [7]

> не видно какого цвета выделеные строки - дотумкала - шрифт разный оставила


 
ЮЮ ©   (2006-02-10 08:29) [8]

Манипуляции мышью в окне предназначены для выделения текста в последнем, поэтому, по-моему, не следует вносить путаницу в привычнфй интерфейс.
Да и организовать перетаскивание с помощью Drag&Drop в гриде - занятие не из приятнейших (с точки зрения кодирования). Проще добавить две кнопки "Вверх" и "Вниз" для перемещения текущей записи НД.


 
yk ©   (2006-02-10 08:43) [9]

спасибо за совет - думаю удасться уломать на вариант с кнопочками - т.к. действительно удобнее

БРОСАЮСЬ НА ШЕЮ И ЦЕЛУЮ В ЩЕЧКУ )))))))))))))))))))))))


 
yk ©   (2006-02-10 08:45) [10]

КСТАТИ ТАК МОНА СДЕЛАТЬ И "ПЕРЕТАСКИВАНИЕ" ВСЕЙ ВЫДЕЛЕННОЙ
ГРУППЫ

УРАААААААААААА!!!!!!!!!!!!!!!!!!!!!!



Страницы: 1 вся ветка

Текущий архив: 2006.04.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.043 c
15-1142136652
grisme
2006-03-12 07:10
2006.04.02
Quake 3 серверы


2-1142399205
Тормаз
2006-03-15 08:06
2006.04.02
Многозадачнасть + SerchFiles


1-1141244466
fuzzy
2006-03-01 23:21
2006.04.02
Метод релаксации или Гаусса для системы линейных уранений


2-1142945320
Евстегней
2006-03-21 15:48
2006.04.02
Бинарный код


15-1142354254
TListBox
2006-03-14 19:37
2006.04.02
Не грузится Win2000 после замены видеокарты.