Текущий архив: 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.48 MB
Время: 0.044 c