Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];

Вниз

Украшение 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.045 c
2-1142356163
Fenix
2006-03-14 20:09
2006.04.02
TreeView


1-1141226867
tzarizm
2006-03-01 18:27
2006.04.02
Прием MMS с GSM-терминала или с любого сотового телефона


4-1137224992
Старик
2006-01-14 10:49
2006.04.02
Память, WinAPI, OpenGL API


15-1141668930
kaZaNoVa
2006-03-06 21:15
2006.04.02
InqSoft Neo Sign 0f Misery


8-1130151436
Fedelio_
2005-10-24 14:57
2006.04.02
Компрессия в MPEG2 с использованием DirectShow





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский