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

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

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

ShIvADeSt (29-01-2007 03:17): идем сюда
http://forum.ru-board.com/topic.cgi?forum=33&topic=7918
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

golkanavt



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

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




 
Сами прирученные компоненты частенько приходят на водопой сюда

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 10:42 08-10-2003 | Исправлено: golkanavt, 15:41 08-09-2006
korobovmax



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
В шедулере создаю событие, о котором должно напомниться через 1 минуту. Как нужно "пнуть" шедулер, чтобы он напомнил о событии вовремя, а не когда он в штатном режиме обновляет записи?
 
А ещё в силе остаётся вопрос: "как отучить Шедулер рисовать градиент над сегодняшним днём?"

Всего записей: 276 | Зарегистр. 23-01-2005 | Отправлено: 15:26 07-01-2006
vcrank

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Совсем дурацкий вопрос:
1. Как узнать какая запись активна? Через Grid
2. Что пользователь набрал, но не применил
 
Или это только через базу (Table) можно смотреть?

Всего записей: 1067 | Зарегистр. 24-10-2005 | Отправлено: 16:10 07-01-2006
korobovmax



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
По вопросу №1:
GridTableView.Controller.SelectedRows[n] - массив выделенных записей. Если SelectedCount = 1, то то, что нужно.
Дальше можно вызвать GridTableView.ViewData.GetRecordIndexByRecord() и получить ID записи.

Всего записей: 276 | Зарегистр. 23-01-2005 | Отправлено: 16:19 07-01-2006
vcrank

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Попробую.
Хотя
Цитата:
Дальше можно вызвать GridTableView.ViewData.GetRecordIndexByRecord() и получить ID записи
маленько не подходит, т.к. у меня всего два поля (ключевых нет в принципе). Т.к. для базы я использую csv-файл (из JEDI VCL)
 
Добавлено:
У меня следующая цель: Пользователь выбирает запись в базе, нажимае кнопку, происходят вычисления. Может быть есть способ лучше?
 
Добавлено:
Что-то не найду свойство, чтобы можно было выделять строку, но не переходить в режм редактирования

Всего записей: 1067 | Зарегистр. 24-10-2005 | Отправлено: 17:01 07-01-2006
Alex47



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

Цитата:
1. Как узнать какая запись активна? Через Grid  

Есть понятие FocusedRecord - посмотри Help или этот топик, ниже одна
из возможных цитат из него по этому поводу:
 
"Предположим, что нам надо будет потом найти строку на которой сейчас стоит фокус.  
 Код, примерно, такой:  
 1. Находим индекс строки на которой стоит фокус:  
 RecordIndex := TcxGridDBTableView
 (cxGrid1.FocusedView).DataController.FocusedRecordIndex;  
 2. По индексу находим идентификатор строки и запоминаем его:  
 RecordId := TcxGridDBTableView(cxGrid1.FocusedView).DataController.GetRecordId
 (RecordIndex);  
 3. В нужный момент в нужном обработчике используем запомненный идентификатор  
 строки для LocateByKey:  
 TcxGridDBTableView(cxGrid1.FocusedView).DataController.LocateByKey(RecordId);  
 4. Для DetailView надо всегда использовать конструкцию  
 TcxGridDBTableView(cxGrid1.FocusedView) - чтобы обратиться к созданному клону  
 DetailView."
 
 
Добавлено:
korobovmax

Цитата:
А ещё в силе остаётся вопрос: "как отучить Шедулер рисовать градиент над сегодняшним днём?"

 
1. Градиент - это последствие применения Style = Office11, или нечто другое?  
2. Чем он  (градиент) плох?

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 21:49 07-01-2006
korobovmax



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alex47, насчёт вопроса, который задал vcrank - GetRecordId возращает значение идентификатора, который записан в таблице. А в описанном случае с csv - "ключевых нет в принципе".
 
Насчёт градиента:
1. Этот градиент есть во всех стилях, кроме Office11. В 11 он рисуется по-другому.
2. Свои видом  
Ну, кто сказал DevExpress'овцам, что градиент от некого цвета ($00B19388, он же - #8893B1, он же - 136,147,177) к серому устраивает всех пользователей?

Всего записей: 276 | Зарегистр. 23-01-2005 | Отправлено: 01:12 08-01-2006
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
korobovmax
 
1. Цитату я дал на всякий случай полностью, но думал, что полезной из нее будет
    строка кода:
RecordIndex := TcxGridDBTableView(cxGrid1.FocusedView).DataController.FocusedRecordIndex;
или  
TcxGridDBTableView(cxGrid1.FocusedView).DataController.FocusedRowIndex;  
Зная индекс строки, на которой стоит фокус, можно добраться до данных в ее полях:
cxGrid1.FocusedView.ViewData.Records[RecordIndex].DisplayTexts[IndexColumn]
или
cxGrid1.FocusedView.ViewData.Rows[RecordIndex].Values[IndexColumn];
 
2. А Style Office11 - не подходит? Мы сейчас его, в основном, используем.

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 02:39 08-01-2006 | Исправлено: Alex47, 13:09 08-01-2006
vcrank

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Разобрался со всем, кроме последнего
 
Добавлено:
И с последним разобрался

Всего записей: 1067 | Зарегистр. 24-10-2005 | Отправлено: 07:32 08-01-2006
korobovmax



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alex47, надо избавиться от градиента. Office11 - это красиво, но в нашем проекте есть стиль "классический".

Всего записей: 276 | Зарегистр. 23-01-2005 | Отправлено: 10:44 08-01-2006
Alex47



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

Цитата:
надо избавиться от градиента

 
Но ведь если в CustomDrawDemo в обработчике TCustomDrawDemoMainForm.SchedulerCustomDrawDayHeader
убрать строку:
//FillGradientRect(ACanvas, AViewInfo.Bounds, $A0A0A0, $707070, False),
то градиент убирается. В чем проблема?

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 14:11 08-01-2006 | Исправлено: Alex47, 14:58 08-01-2006
korobovmax



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
В примере CustomDraw текст выводится вручную и, если вы заметили, границы рисуются простейшим ACanvas.FrameRect, что явно контрастирует с не сегодняшним днём.  
Тогда, чтобы границы рисовались как они должны рисоваться по умолчанию, надо комментировать ADone := True, а тогда появляется градиент

Всего записей: 276 | Зарегистр. 23-01-2005 | Отправлено: 15:07 08-01-2006
Vitus_Bering



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

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 16:15 08-01-2006
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
korobovmax
Для CustomDrawDemo со следующим кодом в обработчике CustomDrawDayHeader
у меня вроде все отлично: и границы, и градиента нет.
procedure TCustomDrawDemoMainForm.SchedulerCustomDrawDayHeader(
  Sender: TObject; ACanvas: TcxCanvas;
  AViewInfo: TcxSchedulerDayHeaderCellViewInfo; var ADone: Boolean);
var
Rec: TRect;
begin
  if not miHeaders.Checked then Exit;
  AViewInfo.Transparent := True;
  //FillGradientRect(ACanvas, AViewInfo.Bounds, $A0A0A0, $707070, False);
  //ACanvas.FrameRect(AViewInfo.Bounds, clGray);
  ACanvas.Brush.Style := bsClear;
  if AViewInfo.DateTime = Date then
     ACanvas.Brush.Color := clSkyBlue
  else
     ACanvas.Brush.Color := clYellow;
  Rec := AViewInfo.Bounds;
  Rec.TopLeft.X := Rec.TopLeft.X - 1; // Было несовпадение границ на пиксель
  ACanvas.FillRect(Rec);
  ACanvas.Font := csItalic.Font;
  ACanvas.DrawText(AViewInfo.DisplayText, AViewInfo.Bounds, cxAlignCenter);
  ACanvas.Brush.Style := bsSolid;
  ACanvas.FrameRect(Rec, clBlack);
  ADone := True;
end;
 
 
Добавлено:
Vitus_Bering
Какой тип редактора в ячейке?

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 21:45 08-01-2006
korobovmax



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alex47, поймите, у меня другая задача - не нарисовать своими руками DayHeader, а сделать вид всех заголовков одинаковым, чтобы впоследствии просто сделать шрифт надписи текущего дня жирным. То есть дорога одна - убрать градиент.  
 
В конце 29 страницы я ещё был расстроен, что DevExpress не показали как это делать, а, вместо этого, показали как рисовать DayHeader самому.

Всего записей: 276 | Зарегистр. 23-01-2005 | Отправлено: 21:55 08-01-2006 | Исправлено: korobovmax, 21:56 08-01-2006
Alex47



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

Цитата:
поймите, у меня другая задача - не нарисовать своими руками DayHeader, а сделать вид всех заголовков одинаковым

Но ведь с тем кодом в CustomDrawDayHeader вид всех заголовков получился абсолютно
одинаковым, только заголовок текущего дня отличается цветом - я так сделал, а можно сделать, чтобы отличался не цветом, а шрифтом.

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 22:13 08-01-2006
korobovmax



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Мммм. Ок, я сказал неправильно. Надо не "одинаковый", а "стандартный".  
"Системный" вид.

Всего записей: 276 | Зарегистр. 23-01-2005 | Отправлено: 22:51 08-01-2006
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
korobovmax
Я часто использую механизм CustomDraw для прорисовки футеров, заголовков(для Grid5). Пока не было случаев, чтобы рисовалось как-то не так, отличаясь от остального. У DevExpress - это стандартный механизм прорисовки чего-либо с нужными изменениями. Поэтому они и описали его в Help. В нашем случае надо говорить конкретно:
1. Что данный мной код  в CustomDrawDayHeader рисует отлично от
"Системного"  вида?  
2. Что такое в Вашем понимании "Системный" вид?

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 23:09 08-01-2006 | Исправлено: Alex47, 23:11 08-01-2006
korobovmax



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
1. Границами. Цвета ведь легко заменить на "системные" (привязанные к системным). Но вот границы.. Они не такие, какие можно наблюдать в проводнике, например.
 
2. Вы видели заголовки столбцов в проводнике с отображением папок и файлов в виде "таблица". Вот такой вид понимается как системный/стандартный. "Вырисовывать" руками (граница сверху и слева - белая, справа и снизу - цвет 128,128,128, всё - в обрамлении прямоугольников с цветом 64,64,64) для каждого столбца возможно.
 
Однако, есть дополнительная проблема - необходимость рисовать руками (если мы выбираем этот путь) заголовки при включенных стиля Windows.
 
Не проще ли найти место, где рисуется градиент и чуть-чуть его подправить?
Собственно, я этим и занимаюсь (ищу место).  
 
Спасибо.

Всего записей: 276 | Зарегистр. 23-01-2005 | Отправлено: 01:01 09-01-2006
golkanavt



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

Цитата:
Вы видели заголовки столбцов в проводнике с отображением папок и файлов в виде "таблица". Вот такой вид понимается как системный/стандартный.

 
ЕМНИП, этот вид настраиваемый а не "системный" и при желании может быть изменен на другой

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 11:38 09-01-2006
Vitus_Bering



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

Цитата:
Какой тип редактора в ячейке?

Не понял вопрос.

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 12:22 09-01-2006
   

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress
ShIvADeSt (29-01-2007 03:17): идем сюда
http://forum.ru-board.com/topic.cgi?forum=33&topic=7918


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru