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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
gpi

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

Цитата:
Цитата:Какой тип редактора в ячейке?  
Не понял вопрос.  

Alex47 спрашивает, какое значение прописано в cxGridDBTableViewColumn.Properties
 

Всего записей: 432 | Зарегистр. 30-05-2004 | Отправлено: 13:25 09-01-2006
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vitus_Bering
Работает такой вариант:
 
1. В обработчик View.OnInitEdit вставить код
if AItem.Caption = 'Нужная колонка' then // Если нужна проверка на колонку,
                                             // так как обработчик работает для всех колонок
   PostMessage(Handle,CM_EndText, 0, 0); // Посылаем сообщение
2. Само сообщение в Implementation:
  procedure TMyForm.CMEndText(var Msg: TMessage);
  begin
     with TcxCustomTextEdit(cxGrid1DBTableView1.Controller.EditingController.Edit) do
            SelStart := length(Text);
  end;
3. Еще строки для определения сообщения:
unit
...
interface
uses
...
const
  CM_ENDTEXT = WM_USER + 1111;
type
  TMyForm= class(TForm)
 ......
  private
   procedure CMEndText(var Msg: TMessage); message CM_ENDTEXT;
  protected
    { Protected declarations }
  public
    { Public declarations }
  end;

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 14:56 09-01-2006 | Исправлено: Alex47, 14:57 09-01-2006
magic2003

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем доброго времени суток!
Кто-нить сталкивался с такой проблемой с dxDBTreeList:
подключаю его к запросу следующего содержания:
sqlText:=
  'select date_name_string as model_name, model_id as parent_id, '+
  'calc_data.date_id as model_id, '+calc_data_section+ ' from CALC_DATA, DATES_DOLLAR '+
  'where calc_data.date_id=dates_dollar.date_id AND date_name>=:date1 '+
  'AND date_name<=:date2'+#13+
  'union'+#13+
  'select model_name, PARENT_ID, MODEL_ID, '+goods_section+ ' from GOODS';
 
запрос отображает в виде дерева товары, при разворачивании узла с товарами появляются даты. На пересечении дат и колонок с фирмами указываются цены.
Так вот, такой запрос все корректно отображает в трилисте, но при навигации по узлам и ячейкам компонента не меняется Parent_id в принципе! Как будто трилист не связан с dataset-ом.
И если пролистать в конец дерева, а затем поменять какие-нибудь 2 бэнда местами, трилист опять фокусируется на первую запись из CALC_DATA.
Может кто-нибудь знает в чем проблема?

Всего записей: 1 | Зарегистр. 27-12-2005 | Отправлено: 15:06 09-01-2006
Alex47



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

Цитата:
Не проще ли найти место, где рисуется градиент и чуть-чуть его подправить?  
Собственно, я этим и занимаюсь (ищу место).  

Если Вас больше вдохновляет путь правки исходников, то вероятно поможет следующее:
 
1. Если в unit cxSchedulerCustomResourceView
поправить следующую функцию, то градиент исчезает
function TcxSchedulerDayHeaderCellViewInfo.CheckSelection: Boolean;
begin
  //Result := True; // Убрано
  Result := False;
end;
 
2. Или можно править функцию
procedure TcxSchedulerHeaderCellViewInfo.ValidateSelection;
begin
  {if CheckSelection and (Date = DateOf(FDateTime)) then
    FButtonState := cxbsHot;} //Убрано
  if Selected then
  begin
    if Selected then
      TextColor := FSelectionTextColor;
    FSelectionRect := PainterHelper.ExcludeBorders(Bounds, Borders);
    if FButtonState = cxbsHot then
    begin
      FSelectionRect.Left := Max(FSelectionRect.Left, FSelectionRect.Right -
        PainterHelper.TextWidth(Font, DisplayText) - cxTextOffset * 2);
    end;
  end;
end;
3. Или можно заменить на какую-то свою процедуру
class procedure TcxSchedulerPainterHelper.DrawGradientRect

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Данные в ExpressQuantumGrid 5 у меня отображаются в виде карточки. Eсть поле “Param” тип bit, если в поле 1, тогда эта запись должна быть обведена в рамку , т.е   Styles=>CardBorder=>color=>clMaroon, а если 0 тогда отображать в нормальном виде т.е без рамки.  Как сделать чтобы не все данные обводились в рамочку, а с заданным параметром  т.е по полю “Param”. Если 1— то с рамочкой, если 0—то без.  
Или проще чтобы первая и вторая запись обводилась в рамочку, а остальные не обводились- как это сдалать,если можно с примером.

Всего записей: 29 | Зарегистр. 18-09-2004 | Отправлено: 17:23 09-01-2006
korobovmax



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alex47, такой вариант (такие варианты ) устраивают.
Благодарю за ответ и за терпение.

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

Alone Wanderer
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alexpiv
В проект добавить StyleRepository, создать стиль cxStyle1

Код:
procedure TMainForm.cvPersonsStylesGetCardBorderStyle(
  Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
  out AStyle: TcxStyle);
begin
     if ARecord.Index<2 then
       AStyle:=cxStyle1
     else
       AStyle:=nil;
end;


Всего записей: 432 | Зарегистр. 30-05-2004 | Отправлено: 21:01 09-01-2006
Vitus_Bering



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

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



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
Подскажите, можно ли в cxGridе сделать Footer в несколько строк.
В каждой строке своя сумма.

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Deedl1
а зачем? рядом не умещаются суммы? FooterAutoHeight должно помочь

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



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
рядом умещаются... визуально не очень красиво все выходит....
мне нужно под одним столбцом показать 2 суммы, которые суммируются данными из этого столбца по какому-либо признаку....
в моем случае - признак оплаты.
т.е. хочу чтобы выглядело это так - Оплачено: ХХХ  
                                                       Долг:ХХХ
 
И смотрелось бы все красивее и понятнее....
 
Знаю что в Eh-ом гриде есть такая штука, как высота строки подвала...
а в этом уже 2 дня копаюсь, ничего похожего не нахожу...
 
пыталась задавать на один column - видим только первый...

Всего записей: 2 | Зарегистр. 10-01-2006 | Отправлено: 11:11 11-01-2006
alexpiv

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите не могу разобраться, как получить значения полей на против которого стоит галочка? Надо что бы при нажатии кнопки, все строчки на против которых стоят галочки скопировались в другую таблицу, но как получить значение этих полей. Как таблице CompT.FieldByName('firmy').AsString присвоить значение поля напротив которого стоит галочка. Т.е у меня пробегает цикл по записям и проводится проверка если галочка стоти значит скопировать ее в в другую таблицу.  
 
procedure Tfr_Main.dxBarButton4Click(Sender: TObject);
var i:integer;
val:boolean;
begin
j:=0;
try
  for I:=0 to cxGrid1DBTableView1.DataController.RecordCount-1 do
     begin
     val := cxGrid1DBTableView1.DataController.GetValue(i,cxGrid1DBTableView1Column1.Index);
    if val then
       begin
         compt.Append;
        CompT.FieldByName('firmy').AsString:=(Как получить значение поля на против которого стоит галочка?);
       end;
     end;
except
compt.Append;
CompT.FieldByName('firmy').AsString:=;
end;

Всего записей: 29 | Зарегистр. 18-09-2004 | Отправлено: 11:54 11-01-2006
felixz



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

Цитата:
alexpiv

Скорей всего нужно бежать по cxGrid1DBTableView1.DataController.DataSource.DataSet
и проверять значения соотв. полей.

Всего записей: 47 | Зарегистр. 20-05-2003 | Отправлено: 13:37 11-01-2006
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alexpiv
Часто использую цикл по cxGrid1DBTableView1.ViewData - там хранятся видимые  
записи грида, с учетом текущего фильтра. Ниже дан пример с точностью до идеи.
Count := cxGrid1DBTableView1.ViewData.RecordCount;
IndexCheck := cxGrid1DBTableView1CheckColumn.Index; // Индекс колонки в которой  
for I := 0 to Count-1 do                               // проставляются галочки
 begin
  if cxGrid1DBTableView1.ViewData.Records[I].Values[IndexCheck] = True then
   begin             // это, если тип данных в колонке с галочкой - boolean, считаем, что при True  
    compt.Append;         // галочка проставлена, а при false - нет
    CompT.FieldByName('firmy').AsString:= cxGrid1DBTableView1.ViewData.
                                                               Records[I].Values[IndexCheck];
     или  
    CompT.FieldByName('firmy').AsString:= cxGrid1DBTableView1.ViewData.
                                                               Records[I].DisplayTexts[IndexCheck];
 
   end;
 
 
Добавлено:
Deedl1
 
Сделать можно, но, практически, ручками. Вот ответ Sinan Demir  
на подобный вопрос от 20.11.2003:  
 
- Создать a style for the footer
- Выбрать в Style двойной размер шрифта,  
  чтобы получить место для двух строк
  (Double the style.Font.Size. eg. 16 instad of 8
  => you get two lines, no auto height!)
- Нарисовать футер в обработчике CustomDrawFooterCell:
 (Ваш код прорисовки, естественно, будет отличаться)
procedure TForm1.YourViewCustomDrawFooterCell(
  Sender: TcxGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
var FBounds: TRect;
begin
   ACanvas.Font.Size := 8;
   ACanvas.FillRect(AViewInfo.Bounds);
   FBounds := AViewInfo.TextAreaBounds;
   FBounds.Bottom := FBounds.Bottom*2;
   ACanvas.DrawTexT(AViewInfo.Text, FBounds,cxWordBreak);
   ACanvas.FrameRect(AViewInfo.ContentBounds,clGray);
   ADone := True;
end;
Для последних версий Grid5 может быть возможны и другие варианты.
 

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



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Deedl1
Не знаю можно ли две строки в футере, но в демке есть как поле в футере через контекстное меню поменять на другое

Всего записей: 120 | Зарегистр. 16-07-2004 | Отправлено: 17:44 11-01-2006
Legion



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос по DBTreeList
В 3-й версии, если утащить строку на "пустое" место, то эта запись переносилась на самый верхний уровень.
В 4-й с удивлением обнаружил, что этот вариант уже не проходит, запись остается там, где была.
Поигрался с подходящими по смыслу опциями - результат нулевой.
Как с этим бороться? Неужто самому drag-drop обрабатывать?

Всего записей: 159 | Зарегистр. 23-09-2003 | Отправлено: 20:43 11-01-2006
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Deedl1
 
Похоже, можно сделать проще:  
 
У TcxGridDBTableSummaryItem есть событие OnGetText.
В его обработчик и можно вставить формат текста на две строки.
Я пробовал такой вариант:
 
procedure TwsSalesInput.cxGrid1DBTableView1TcxGridDBDataController
TcxDataSummaryFooterSummaryItems0GetText(
  Sender: TcxDataSummaryItem; const AValue: Variant; AIsFooter: Boolean;
  var AText: String);
begin
 AText := 'Строка1'+#10+'Строка2';
end;
Футер на экране выглядит так:
    Строка1
    Строка2
FooterAutoHeight должно быть True.
Остается получить нужные значения вместо Строка1 и Строка2.
Сделать это можно.  

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 15:41 12-01-2006 | Исправлено: Alex47, 17:57 12-01-2006
sasku



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
При экспорте с помощью ExportGrid4ToExcel числа сохраняются как текст, а если поле в Properties определить как Calc,Currency - то в екселе сохраняется как дельги и без копеек - как лечить ?

Всего записей: 413 | Зарегистр. 30-05-2002 | Отправлено: 20:27 12-01-2006
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sasku
Если не читали, то прочитайте в Help раздел
ExportGrid4ToExcel - определенная информация там есть.

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2 Alex47
 
> 1. В DataSet (первая таблица) вашего cxGrid1DBTableView1 создать lookupfield "Direction"  
 
в самой FB+ DataSet? научите как в ней это создавать...
 
> с KeyFields = часть IP адреса;порт  
> c LookupKeyFields = часть IP адреса;порт  
> c LookupDataSet = вторая таблица  
> c LookupResultField = направление  
 
> 2. В cxGrid1DBTableView1 завести column с FieldName = Direction
 

Всего записей: 41 | Зарегистр. 30-09-2003 | Отправлено: 08:28 13-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