Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 3)

Модерирует : ShIvADeSt

ShIvADeSt (31-12-2009 04:49): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=10884  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121

   

golkanavt



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DevExpress

Обмен опытом, обсуждение нюансов и решение проблем возникающих при использовании библиотеки компонент Developer Express




 
Сами прирученные компоненты частенько приходят на водопой сюда
 
DLL со скинами из библиотеки dxSkins, автор Ziltoid Подробнее... линк обновлен
Продолжение, Первая часть, вторая часть

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 10:31 07-02-2009 | Исправлено: vladman, 14:36 24-10-2009
Postscriptum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Блин, помогите со старой проблемой - уже обращался я и так и не сделал - как подсветить удаленные записи в cxDBGride (без создания всяких дополнительных колонок, индексов и т.д.)? Могу даже пример выложить (только там для доступа к dbf используется компонент Advantage Tdataset Descendant). Вот смотрите - на форме 2 грида - один стандартный, один девовский. Код для стандартного:

Код:
 
procedure TForm4.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  OldC: TColor;
begin
 if not (gdFocused in State) then
  begin
   // получаю по номеру записи (AdsTable1.AdsGetRecordNum) в dbf-ке - удалена ли она
   if AdsTable1.AdsIsRecordDeleted(AdsTable1.AdsGetRecordNum) then
   begin
    OldC := dbGrid1.Canvas.Brush.Color;
    dbGrid1.Canvas.Brush.Color := clRed;  
    dbGrid1.Canvas.FillRect(Rect);
    dbGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    dbGrid1.Canvas.Brush.Color := OldC;
   end;
  end;
end;
 

Вот код для девовского грида:

Код:
 
procedure TForm4.cxGrid1DBTableView1CustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
  OldC: TColor;
begin
 OldC := aCanvas.Brush.Color;
 if AdsTable1.AdsIsRecordDeleted(AdsTable1.AdsGetRecordNum) then
    ACanvas.Brush.Color :=  clRed
 else
   ACanvas.Brush.Color:=OldC;
end;
 

Вот скрин после запуска программы -  
   
а вот просто ткнул мышкой на удаленную запись в стандартном гриде -  
   
 

Всего записей: 464 | Зарегистр. 31-01-2004 | Отправлено: 14:28 24-09-2009
Cryogen2003



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Отказываюсь в своих проектах совсем от EhLib в пользу девок.
Возникли вопросы по гриду:
1) Можно ли как-нибудь показывать как было сделано в EhLib у индикатора записи номер записи? Создавать новое поле не хочу.
2) Есть ли автоматическая подсветка строк (ну там когда четные строчки подсвечиваются), либо же придется самому красить строчки?


----------
Холодильники мы

Всего записей: 745 | Зарегистр. 08-12-2004 | Отправлено: 14:42 24-09-2009
xokc

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cryogen2003

Цитата:
1) Можно ли как-нибудь показывать как было сделано в EhLib у индикатора записи номер записи? Создавать новое поле не хочу

можно. для начала прочесть предыдущую страницу этого форума.
 

Цитата:
2) Есть ли автоматическая подсветка строк (ну там когда четные строчки подсвечиваются), либо же придется самому красить строчки?  

Есть. Воспользоваться стилями для Odd и Even строк.

Всего записей: 477 | Зарегистр. 22-09-2002 | Отправлено: 14:57 24-09-2009
Cryogen2003



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
xokc
По поводу стилей спасибо, реально забыл, что все по поводу стилей.
 
А по поводу номера записей там просто обсуждалось, как этот номер записи получить и не более.

----------
Холодильники мы

Всего записей: 745 | Зарегистр. 08-12-2004 | Отправлено: 15:02 24-09-2009
SIgor33

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman

Цитата:
Используйте вместо FieldByName('Fam').AsString оператор TcxCustomEdit(Sender).EditingValue

Спасибо за совет. И еще вопросик.  На этом обрабочике у меня весит несколько TcxTextEdit и TcxdateEdit которые отвечают за поля фамилия имя Отчество и дата рождения как узнать какой едит за действован и его значение и если не задейсвован то же значение нужно . Нужно это для вывода повторных значений. Поэтому я использовал FieldByName('Fam').AsString соотвественно

Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 15:08 24-09-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Chukotka

Цитата:
После этого при попытке закрыть форму с контейнером происходит ошибка.

Delphi 2007, DevExpress 45 ничего похожего не показывает
_http://rapidshare.com/files/284334389/Project5.rar.html
 
Добавлено:
Cryogen2003

Цитата:
1) Можно ли как-нибудь показывать как было сделано в EhLib у индикатора записи номер записи? Создавать новое поле не хочу.  

Без нового поля не получится.

Цитата:
2) Есть ли автоматическая подсветка строк (ну там когда четные строчки подсвечиваются), либо же придется самому красить строчки?  

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

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 15:47 24-09-2009
Cryogen2003



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vladman
Со скинами уже посмотрел, в принципе прикольно, но честно говоря не особо красиво получается. Например при Caramel голубой и карамельный. Смотрится просто убойно
 
По поводу индикатора понял, честно говоря очень и очень жаль. А может можно как-то с помощью стилей индикатора такое слепить?


----------
Холодильники мы

Всего записей: 745 | Зарегистр. 08-12-2004 | Отправлено: 16:04 24-09-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Postscriptum

Цитата:
помогите со старой проблемой

В таком виде и не будет верно работать.  
Ведь в обработчике CustomDrawCell AdsTable1.AdsGetRecordNum не меняется.
Прочитайте статью в Support Center "Row/record index confusion", ссылка на которую была приведена в моем сообщение http://forum.ru-board.com/topic.cgi?forum=33&topic=10123&start=1540#9.
Вам нужно указывать что-то вроде  
 if AdsTable1.AdsIsRecordDeleted(AViewInfo.GridRecord.RecordIndex).
 

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 16:15 24-09-2009
Cryogen2003



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vladman
А не подскажешь как можно сделать в этом гриде так же, как было сделано DBGridEh с поддержкой дерева.  
То есть есть данные с количеством столбцов около 10. Есть id и parentid, то есть нужно в режиме грида нарисовать дерево. Такое возможно в TcxGrid или нет?

----------
Холодильники мы

Всего записей: 745 | Зарегистр. 08-12-2004 | Отправлено: 17:03 24-09-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cryogen2003

Цитата:
Со скинами уже посмотрел, в принципе прикольно, но честно говоря не особо красиво получается

Вы легко сами сможете менять цвет заливки четных и нечетных строк при примененных скинах.

Цитата:
По поводу индикатора понял, честно говоря очень и очень жаль. А может можно как-то с помощью стилей индикатора такое слепить?  

С помощью стилей - нельзя, но что-то придумать можно, например:

Код:
procedure <YourForm>.<YourcxGridDBTableView>CustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo:
    TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
var
  vRect: TRect;
begin
  if AViewInfo is TcxGridIndicatorRowItemViewInfo then
    begin
      vRect := AViewInfo.Bounds;
      ACanvas.FillRect(VRect);
      ACanvas.DrawComplexFrame(VRect, clBlack, clBlack, [bBottom, bLeft, bRight], 1);
      InflateRect(VRect, -2, -2);
      ACanvas.Font.Color := clBlack;
      ACanvas.Brush.Style := bsClear;
      ACanvas.DrawTexT(IntToStr(TcxGridIndicatorRowItemViewInfo(AViewInfo).RowViewInfo.Index),
        vRect, cxAlignCenter or cxWordBreak or cxShowEndEllipsis);
      ADone := True;
    end;
end;

А чем вызвано такое нежелание добавлять новое поле для нумареации? Да и так ли необходима эта нумерация? Может легче где-то писать (кстати Postscriptum недавно спрашивал как) "Запись N из M".
 

Цитата:
А не подскажешь как можно сделать в этом гриде так же, как было сделано DBGridEh с поддержкой дерева...Такое возможно в TcxGrid или нет?

Да возможно. DBGridEh никогда не использовал, а из DevExpress для этих целей подойдет TcxDBTreeList.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 17:13 24-09-2009 | Исправлено: vladman, 17:19 24-09-2009
Postscriptum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman

Цитата:
Вам нужно указывать что-то вроде  
 if AdsTable1.AdsIsRecordDeleted(AViewInfo.GridRecord.RecordIndex).

Пробовал. AViewInfo.GridRecord.RecordIndex, насколько я понял - номер записи в гриде. Т.е. если, допустим, в dbf-ке удалена 3-я запись. Когда компонент настроен на показ удаленных записей - все хорошо на этой записи и AdsTable1.AdsGetRecordNum=3 и AViewInfo.GridRecord.RecordIndex+1=3. А вот если компонент  настроен на скрытие удаленных записей, то в гриде на 3-й позиции окрашивается строка в красный цвет (а в dbf-ке на самом деле она 4-я), потому что на позиции AdsTable1.AdsIsRecordDeleted(AViewInfo.GridRecord.RecordIndex+1) запись-то удалена. Я понятно объяснил?

Всего записей: 464 | Зарегистр. 31-01-2004 | Отправлено: 17:13 24-09-2009 | Исправлено: Postscriptum, 17:17 24-09-2009
Cryogen2003



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vladman
На основной форме проекта такое пишется, что запись 1 из 5000, но на других просто статусбар реально как-то не к месту, да и пользователи привыкли так сказать контролировать свой темп работы Хотя конечно можно поставить и статус бар с такими данным, просто на девок хочется перейти, но в тоже время чтобы пользователи не меняли своих привычек.
 
А за код, спасибо, попробую
 
Добавлено:
vladman
А так разве можно использовать большое количество столбцов?

----------
Холодильники мы

Всего записей: 745 | Зарегистр. 08-12-2004 | Отправлено: 17:18 24-09-2009
Postscriptum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cryogen2003
Тоже перешел на девок с EHLib. Без стакана хрен разберешься А если еще с английским ну очень большие проблемы...

Всего записей: 464 | Зарегистр. 31-01-2004 | Отправлено: 17:25 24-09-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Postscriptum

Цитата:
AViewInfo.GridRecord.RecordIndex, насколько я понял - номер записи в гриде

Нет - номер записи в датасете. Еще раз обратитесь к "Row/record index confusion" для четкого понимания что есть что.

Цитата:
А вот если компонент  настроен на скрытие удаленных записей

Так что тогда должно краситься в гриде, если и датасет их (удаленные записи) не возращает? Сделайте обыкновенную проверку, что-то в виде

Код:
if AdsTable1.AdsIsRecordDeleted(...) and AdsTable1.<ShouldShowDeletedRecord> then
    ACanvas.Brush.Color :=  clRed  
 else
   ACanvas.Brush.Color:=OldC;  

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 17:28 24-09-2009
Cryogen2003



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Postscriptum
Если не секрет, почему перешел с ehLib? Меня доконали ошибки, которые возникают благодаря двум пакетам. А когда были еще некоторые компоненты от TMS, то вообще ужас был
 


----------
Холодильники мы

Всего записей: 745 | Зарегистр. 08-12-2004 | Отправлено: 17:32 24-09-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cryogen2003

Цитата:
А так разве можно использовать большое количество столбцов?

Не совсем понял к чему это...
Postscriptum

Цитата:
Тоже перешел на девок с EHLib

You are welcome!

Цитата:
А если еще с английским ну очень большие проблемы...

Но тут мне вам тяжело помочь, разве что ссылкой http://translate.google.com
А "Row/record index confusion" обязательно прочитайте, думаю, для разбора приведенного там примера не обязательно глубоко владеть английским.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 17:35 24-09-2009
Cryogen2003



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vladman
Просто привык к тому, что обычно в деревьях больше одного столбца не бывает, а тут - и столбцы, и даже бэнды есть. Сижу, просто, извиняюсь, поскуливаю от удовольствия, когда видишь насколько все продуманно в девках. Пусть не особо бывает понятно, как разрулить ту или иную ситуацию, но мягко говоря прикольно.

----------
Холодильники мы

Всего записей: 745 | Зарегистр. 08-12-2004 | Отправлено: 17:39 24-09-2009
Postscriptum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cryogen2003

Цитата:
Если не секрет, почему перешел с ehLib?

Впечатлился возможностми девовского грида. Единственное "но" - сложность в освоении (для меня, по крайней мере).  
vladman

Цитата:
Так что тогда должно краситься в гриде, если и датасет их (удаленные записи) не возращает? Сделайте обыкновенную проверку, что-то в виде

Я уже совсем отупел. А почему тогда стандартный грид понимает и красит все правилбно - и когда удаленные записи отображаются, и когда не отображаются.

Цитата:
Нет - номер записи в датасете. Еще раз обратитесь к "Row/record index confusion" для четкого понимания что есть что.

Ну тогда должно работать при скрытии удаленных записей - но не работает же. И в статье ведь речь идет о записи, на которой фокус стоит, правильно? А в данном случае красятся записи до получения оного. Или я туплю?
 

Всего записей: 464 | Зарегистр. 31-01-2004 | Отправлено: 17:42 24-09-2009 | Исправлено: Postscriptum, 17:42 24-09-2009
Cryogen2003



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Postscriptum
Ну мне тоже их грид очень нравиться, хотя в принципе 70 процентов из всего этого есть и TDBGridEh

----------
Холодильники мы

Всего записей: 745 | Зарегистр. 08-12-2004 | Отправлено: 17:44 24-09-2009
Postscriptum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman
Мне кажется - мы не понимаем друг друга. Вот 1 скрин - показываются удаленные записи (3-я) и все праильно подсвечивается:
 
   
Вот 2-й скрин - не показываются удаленные записи. И зачение AViewInfo.GridRecord.RecordIndex+1=3 у четвертой строки!!! И она подсвечена как удаленная.
 
 

Всего записей: 464 | Зарегистр. 31-01-2004 | Отправлено: 18:00 24-09-2009 | Исправлено: Postscriptum, 18:02 24-09-2009
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 3)
ShIvADeSt (31-12-2009 04:49): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=10884


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru