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

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

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

ShIvADeSt (07-02-2009 14:53): Продолжаем тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10123#1
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 122

   

ShIvADeSt



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

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




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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 03:16 29-01-2007 | Исправлено: VitaliM, 15:47 24-11-2008
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
clear2121
Похоже в DataBinding->DataField

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 10:17 11-09-2007
clear2121



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OXDBA
СПАСИБО!

Всего записей: 311 | Зарегистр. 07-04-2005 | Отправлено: 10:23 11-09-2007
IceMan T

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мужчины, ну подскажите же наконец где взять ExpressSkins Library для Delphi 7. Ну очень надо. Если есть у кого - скиньте на мыло IceMan_T@Mail.ru. Премного благодарен

Всего записей: 8 | Зарегистр. 10-05-2007 | Отправлено: 10:54 11-09-2007
clear2121



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

Всего записей: 311 | Зарегистр. 07-04-2005 | Отправлено: 11:09 11-09-2007
OXDBA

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

Цитата:
А что там может быть не так?

Либо пусто, либо указано неверное имя поля.

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 11:18 11-09-2007
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
clear2121
 
Не знаю как на счет TmpData1->Fields->Add( F ), но в своих проектах использую Field->DataSet = MemData
 
Добавлено:
Правда дело может быть в том, что в конце добавления полей надо сделать DataSet->FieldDefs->Update()

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 12:41 11-09-2007
clear2121



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OXDBA
Проверил. И поле правильное, и данные там есть. Он же мне елозит. Причем сколько записей, столько пустых строк. Ладно, пользуюсь гридом

Всего записей: 311 | Зарегистр. 07-04-2005 | Отправлено: 13:30 11-09-2007
X11



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

Всего записей: 3260 | Зарегистр. 24-11-2005 | Отправлено: 14:33 13-09-2007 | Исправлено: X11, 17:15 13-09-2007
ArtemiyUO

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
clear2121
Если все еще не получилось динамически создать поле в датасете, то вот код которым пользуюсь я.
 

Код:
var
  Link : TField;
   // создадим дополнительный филд
      with TFloatField.Create(oraDataSet) do begin
        FieldName := 'xx';
        DataSet := oraDataSet;
        Name := 'xx';
        oraDataSet.FieldDefs.Add(Name, ftFloat);
      end;
 
  // удалим динамически созданные поля
  if oraDataSet.FieldDefs.IndexOf('xx') >= 0 then
  begin
    Link := oraDataSet.Fields.FieldByName('xx');
    oraDataSet.Fields.Remove(Link);
    FreeAndNil(Link);
    oraDataSet.FieldList.Update;
  end;

Всего записей: 539 | Зарегистр. 12-12-2005 | Отправлено: 08:38 14-09-2007
clear2121



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

Всего записей: 311 | Зарегистр. 07-04-2005 | Отправлено: 11:27 14-09-2007
OXDBA

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

Цитата:
Спасибо, попробую

Что народ хэлп не читает из прЫнципа, это я уже привык...

Цитата:
TField Class
...
Do not create instances of TField...

Но вот не читать ответы на свои вопросы...

Цитата:
 
clear2121  
F = new TIntegerField(NULL);


Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 12:05 14-09-2007
aleksandrus



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

Цитата:
Спасибо, попробую

Скажи, так обязательно флудить? это же не твой личный консультационный центр, больше половины того, что ты тут писал, можно было писать в пм.
=================
к сожалению, мой вопрос уже на несколько страниц уполз и так никто не ответил, может я его сформулировал неточно.
Всё, что мне удалось найти в плане выделения произвольных букв в ячейке - коды навроде:

Код:
cxGrid1DBTableView1->Controller->EditingController->ShowEdit(cxGrid1DBTableView1->Controller->FocusedItem);
TcxRichEdit *edtCell =
  (TcxRichEdit*)cxGrid1DBTableView1->Controller->EditingController->Edit;
if(edtCell)
{
  edtCell->SelStart = i;
  edtCell->SelLength = j;
}

То есть ячейка открывается на редактирование и выделяется что нужно нормально. Но если грид "readonly", то EditingController->Edit = NULL.
На http://www.devexpress.com/Support/Center/p/B3656.aspx?searchtext=Allow нашел фразу

Цитата:
I assume that you apply our code for the column with its Options.Editing set to False whereas the cell’s editor should be activated when using the RichEdit’s FindText....
I suggest that you try to restrict editing via the View’s OnEditing event handler and its AAllow var-parameter. This will allow to restrict editing for users and allow it when implementing the search within editor.

Но если я разрешаю редактирование в гриде и выставляю в евенте cxGrid1DBTableView1Editing AAllow = false - происходит то же самое, что и когда грид "readonly".
Никак не пойму, ведь инкрементный поиск как-то выделяет нормально буквы при любом гриде (правда только с начала строки, что мне не подходит).

Всего записей: 9 | Зарегистр. 29-01-2006 | Отправлено: 12:42 14-09-2007
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
aleksandrus
А что тебе мешает  в onCustomDrawCell самому нарисовать что нужно? InternalTextOut и вперед
как вариант...

Код:
 
procedure TCustomDrawTableViewDemoMainForm.tvCarsCustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
  ARec: TRect;
  ATextToDraw, val: String;
  AIsVertical: Boolean;
begin
  ARec := AViewInfo.Bounds;
  ACanvas.Canvas.FillRect(ARec);
  ATextToDraw := AViewInfo.GridRecord.DisplayTexts[AViewInfo.Item.Index];
  InternalTextOut(ACanvas.Canvas, TcxCustomTextEditViewInfo(AViewInfo.EditViewInfo),
  PAnsiChar(ATextToDraw),  ARec, TcxCustomTextEditViewInfo(AViewInfo.EditViewInfo).DrawTextFlags, 1,
  5, clRed, clBlack);
  ADone := True;
end;
 

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 15:29 14-09-2007
RudziakV

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте. Не могу решить такую проблему.  
есть 4 поля в cxGrid. Допустим, поля и данные выглядят таким образом:
 
________________________________________________
Валюта | Стоимость1 | Стоимость2 | Разница в стоимости
________________________________________________
 
BYB      | 36               | 36              |0
-------------------------------------------------------------------
BYB      | 108             | 99              |9
--------------------------------------------------------------------
USD      |0.05506       | 0.05075      |0.00431
--------------------------------------------------------------------
USD      |0.00822       | 0.00904      |-0.00082
--------------------------------------------------------------------
 
 
В правом углу каждого поля есть выпадающее мини-меню (фильтр) с пунктами "Все", "Выбор..." и данными, забитыми в ячейки поля (для более быстрой выборки, как я понял).
Внимание, вопрос )))
 
Например, я вызвал меню поля "Валюта", выбрал в списке фильтра "USD". Но вызвав вслед за этим меню поля "Разница в стоимости" и выбрав в фильтре "0", - я никаких данных получить не смогу, так как такого значения для USD нет. Тоже самое справедливо и для всех остальных полей.
А как сделать так, чтобы в выпадающем списке присутствовали только те записи,
удовлетворяющие первому фильтру(в нашем случае 0.00431 и -0.00082)? Просто записей
очень много и не знаешь, относиться это к USD или BYB.
 

Всего записей: 3 | Зарегистр. 14-09-2007 | Отправлено: 17:42 14-09-2007
brookson



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
доброго всем времени суток!
 
имеется такой трабл. есть dxMemData, который заполняется записями, состоящими из полей различного типа, похоже как в хелпе по ExpressMemData, How to Add Different Types of Data to MemData.
 

Цитата:
uses  
...., dxmdaset;
...
var
 p:pointer;
 vrowcnt1:integer;
...
dxMemDataServ.Data.Items[0].AddValue(@vrowcnt1);
VariantToMemDataValue(combo1.Text, p, mDataString);
dxMemDataServ.Data.Items[1].AddValue(p);

 
 
и вот на строке VariantToMemDataValue(combo1.Text, p, mDataString); компилятор выдаёт ошибку:
Undeclared identifier: 'mDataString'
 

И еще может кто знает - в какой момент высвобождается память, выделенная под dxMemData?

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 20:27 15-09-2007 | Исправлено: brookson, 20:41 15-09-2007
aleksandrus



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
brookson
а ты их объявлял?

Код:
 
mDataString: TStringField;
mDataInteger: TIntegerField;
mDataBoolean: TBooleanField;
mDataFloat: TFloatField;
mDataDateTime: TDateTimeField;
 

OXDBA
спасибо, мешало то, что я не знал про неё да и к тому же с ondrawcell я уже пытался что-нибудь провернуть, ибо там хоть есть доступ к текущей ячейке, а вот как снаружи получить ссылку на конкретную ячейку (в частности, её ACanvas, AViewInfo) пока не нашёл - мне же надо текст выделить только в определённой ячейке. Но это уже другое дело, главное теперь знаю про InternalTextOut
И не понял про DrawTextFlags - я у TcxCustomTextEditViewInfo такого свойства не нашёл Но в принципе, у меня всё равно выравнивание текста везде "слева", буду нолик посылать туда, чтобы не заморачиваться.

Всего записей: 9 | Зарегистр. 29-01-2006 | Отправлено: 22:31 15-09-2007 | Исправлено: aleksandrus, 23:11 15-09-2007
A_V

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RudziakV
GridView.Filtering.ColumnFilteredItemList := True
 
aleksandrus

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

Делает и обратную вещь - после locate по датасету, выбирает эту запись и в гриде.
 

Цитата:
а вот как снаружи получить ссылку на конкретную ячейку (в частности, её ACanvas, AViewInfo) пока не нашёл  

Получить то можно, например
ACellViewInfo := GridView.ViewInfo.RecordsViewInfo.Items[ARowIndex].GetCellViewInfoByItem(AColumn);
канвас можно получить, сделав crack-класс над CelViewInfo:
ACanvas := TCellViewInfoAccess(AViewInfo).Canvas;
Другой вопрос, зачем это делать, ведь если ты что-то там нарисуешь, грид это при своей отрисовке затрет,
так что все равно придется это обрабатывать на CustomDrawCell.
 

Цитата:
И не понял про DrawTextFlags - я у TcxCustomTextEditViewInfo такого свойства не нашёл

Странно, должно быть такое. Вобще тогда уж передавай не нолик,
а константу из cxDrawTextUtils типа CXTO_DEFAULT_FORMAT.
 
brookson

Цитата:
И еще может кто знает - в какой момент высвобождается память, выделенная под dxMemData?

при уничтожении компонента наверное, к-е автоматом произойдет при уничтожении owner'а (формы в твоем случае).
а что, есть какие-то сомнения?

Всего записей: 770 | Зарегистр. 07-04-2002 | Отправлено: 17:18 16-09-2007
brookson



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

Цитата:
при уничтожении компонента наверное, к-е автоматом произойдет при уничтожении owner'а (формы в твоем случае).  
а что, есть какие-то сомнения?

Не то чтоб сомнения, но не нашёл нигде в описании об этом упоминания.  
Ну и программист обязан думать о пользователе. Кроме того недавно зашла речь о функциях "уборки мусора", которые есть в других языках. В Делфи тоже такое есть?

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 18:00 16-09-2007
A_V

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
brookson
уборки мусора нет, за памятью надо следить самому, создал объект - уничтожь, выделил память -  освободи. но у каждого наследника TComponent есть св-во Owner, к-й задается в конструкторе. При уничтожении Ownerа убиваются и все компоненты, к-ми он владеет (у контролов, что ты кидаешь на форму в дизайнтайме - owner = форма)  + посмотри про TInterfacedObject и TObjectList.
Еще можешь поставить менеджер памяти следящий за утечками - например FastMM.  
Но к данному топику все это никакого отношения не имеет

Всего записей: 770 | Зарегистр. 07-04-2002 | Отправлено: 18:24 16-09-2007 | Исправлено: A_V, 18:38 16-09-2007
RudziakV

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A_V
 
Что за ColumnFilteredItemList? Такого свойства нет.
 
 

Всего записей: 3 | Зарегистр. 14-09-2007 | Отправлено: 10:55 17-09-2007
   

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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress 2
ShIvADeSt (07-02-2009 14:53): Продолжаем тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10123#1


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru