Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Использование DevExpress 2

Автор: OXDBA
Дата сообщения: 14.09.2007 11:05

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

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

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

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

Цитата:

clear2121
F = new TIntegerField(NULL);

Автор: aleksandrus
Дата сообщения: 14.09.2007 11:42
clear2121

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

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

Код: cxGrid1DBTableView1->Controller->EditingController->ShowEdit(cxGrid1DBTableView1->Controller->FocusedItem);
TcxRichEdit *edtCell =
(TcxRichEdit*)cxGrid1DBTableView1->Controller->EditingController->Edit;
if(edtCell)
{
edtCell->SelStart = i;
edtCell->SelLength = j;
}
Автор: OXDBA
Дата сообщения: 14.09.2007 14:29
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;
Автор: RudziakV
Дата сообщения: 14.09.2007 16:42
Здравствуйте. Не могу решить такую проблему.
есть 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.

Автор: brookson
Дата сообщения: 15.09.2007 19:27
доброго всем времени суток!

имеется такой трабл. есть 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?
Автор: aleksandrus
Дата сообщения: 15.09.2007 21:31
brookson
а ты их объявлял?

Код:
mDataString: TStringField;
mDataInteger: TIntegerField;
mDataBoolean: TBooleanField;
mDataFloat: TFloatField;
mDataDateTime: TDateTimeField;
Автор: A_V
Дата сообщения: 16.09.2007 16:18
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'а (формы в твоем случае).
а что, есть какие-то сомнения?
Автор: brookson
Дата сообщения: 16.09.2007 17:00
A_V

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

Не то чтоб сомнения, но не нашёл нигде в описании об этом упоминания.
Ну и программист обязан думать о пользователе. Кроме того недавно зашла речь о функциях "уборки мусора", которые есть в других языках. В Делфи тоже такое есть?
Автор: A_V
Дата сообщения: 16.09.2007 17:24
brookson
уборки мусора нет, за памятью надо следить самому, создал объект - уничтожь, выделил память - освободи. но у каждого наследника TComponent есть св-во Owner, к-й задается в конструкторе. При уничтожении Ownerа убиваются и все компоненты, к-ми он владеет (у контролов, что ты кидаешь на форму в дизайнтайме - owner = форма) + посмотри про TInterfacedObject и TObjectList.
Еще можешь поставить менеджер памяти следящий за утечками - например FastMM.
Но к данному топику все это никакого отношения не имеет
Автор: RudziakV
Дата сообщения: 17.09.2007 09:55
A_V

Что за ColumnFilteredItemList? Такого свойства нет.


Автор: A_V
Дата сообщения: 17.09.2007 10:10
RudziakV
значит DevExpress старый - либо обновляй, либо сам дописывай эту фичу
Автор: RudziakV
Дата сообщения: 17.09.2007 10:32
A_V
Ясно.
А в каком гриде эта фича уже есть?
Автор: A_V
Дата сообщения: 17.09.2007 10:49
RudziakV
в 6-м от DevExpress есть, про другие не слышал
Автор: X11
Дата сообщения: 17.09.2007 13:56
Что лучше использовать?


Код:
actDefine.Visible := dbgItog.DataController.Values[dbgItog.DataController.FocusedRecordIndex,dbgItogCODE1.Index] = 5;
Автор: brookson
Дата сообщения: 17.09.2007 14:32
aleksandrus

спасибо! ошибок компиляции нет. с остальным буду разбираться. хотя после такого "примера" хелп разочаровал окончательно

Добавлено:
X11

Цитата:
Что лучше использовать?


думаю лучше Record. но смотря что тебе нужно.
Автор: A_V
Дата сообщения: 17.09.2007 15:26
X11
естественно правильнее FocusedRecordIndex, достаточно посмотреть на определение Values в DataController'е:

property Values[RecordIndex, ItemIndex: Integer]: Variant read GetValue write SetValue;

а вобше RowIndex это поряковый № визуально отображаемой записи, а RecordIndex - реальный № записи, к-й в DataControllere

Сделай группировку или фильтр - заметишь разницу.
Автор: X11
Дата сообщения: 17.09.2007 15:57
вот мне и интересно, что мне использовать?
Автор: A_V
Дата сообщения: 17.09.2007 16:28
X11
ну епрст.. если значение сфокусированной записи, то естественно FocusedRecordIndex
Автор: X11
Дата сообщения: 17.09.2007 16:49
Всё, всё я понял тебя, A_V. Это я на это ответил:

Цитата:
но смотря что тебе нужно.


Автор: clear2121
Дата сообщения: 18.09.2007 05:59
aleksandrus

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

В смысле флудить? Кому в ПМ? Всем? Или выборочно? Или тем, кто у меня в списке?
Задается вопрос. Отвечают все желающие, кто сталкивался с темой. Надо понимать, чем отличается форум ВОПРОС-ОТВЕТ от конкретного решения вопроса ТЫ МНЕ-Я ТЕБЕ.
ПРОШУ ПРОЩЕНИЯ ЗА ОФФ_ТОП!
Автор: russko
Дата сообщения: 18.09.2007 07:49
Доброго времени суток.
Раньше в своих разработках я использовал Delphi2006 и февральскую сборку девок от Фенди.
Все проги отлично работали и на XP и на 2000 винде.
Потом я решил обновить и среду разработки на 2007 и девок на июньских и после этого при попытке запустить любую программу на 2000 винде выдается ошибка: Exception EdxSkin in module PLAZMA.exe at 000E042E. Group Bars not found.
Вот и понять не могу - в чем трабла? Интуитивно понимаю, что дело в Девках...а может и нет.
Кто сталкивался?
Автор: OXDBA
Дата сообщения: 18.09.2007 10:12
russko
Скины девок используют GDI+, в w2k сего творения нет. Поэтому либо ставь девок без скинов, либо на каждую w2k
gdiplus_dnld.exe
Автор: Dronton2
Дата сообщения: 18.09.2007 10:21
russko
в июне была бета версия dxSkin. Ужасно глючная. Если не используешь Skin, отключи его при установке. Или исключи из списка установленных пакетов и удали из раздела "uses" соответствующие файлы.

Добавлено:
OXDBA
В девках не только скины используют GDI+. Там ещё где-то используется формат картинок *.png. Можно поискать по ветке, здесь это обсуждалось, была выпущена исправленная версия дев.
Автор: russko
Дата сообщения: 18.09.2007 12:08
Большое спасибо...сейчас затестим.
Автор: Alex47
Дата сообщения: 19.09.2007 10:20
aleksandrus
По поводу поиска посмотри мой ответ russko:

"В конференциях этот вопрос обсуждался. Есть, по крайней мере, три варианта решения..."
http://forum.ru-board.com/misc.cgi?action=printtopic&forum=33&topic=2214
Автор: aleksandrus
Дата сообщения: 19.09.2007 17:49
Alex47
спасибо, но с этого я естественно и начал - перелопатил поиском обе темы
вариант 1 не подошёл, ибо фильтровать и менять что-либо в гриде точно мне не катит.
вариант 2 на сколько я понял тоже фильтрует, поэтому отпадает, да и честно говоря пытался часа 2 его приладить - так и не получилось запустить )
вариант 3 я пытался как раз долго провернуть, но в итоге выяснилось, что исходники чего-либо, кроме исходников моей части проекта, мне менять не разрешили

потом долго пытался понять, по какому же принципу там так все просто выделяется при SelStart := PosSubstring(GetText, Controller.IncSearchingText) , но "снаружи", из своего проекта , как аналогичным простым способом выделить - так и не нашёл..
Автор: Andy_BitOff
Дата сообщения: 19.09.2007 18:44
Дайте, пожалуйста, кому не жалко и у кого есть переводы файлов cxPivotGridStrs.pas, cxGridStrs.pas, cxBarStrs.pas, cxTLStrs.pas и по возможности перевод Printing System.
Заранее спасибо.
Автор: svs123456789
Дата сообщения: 20.09.2007 10:33
подскажите плиз, а как сделать заголовки у строк (столбец с заголовками строк)?
(по умолчанию заголовки есть только у столбцов - а мне надо что бы и сверху и слева были заголовки по аналогии с "печатным бланком-таблицей")
Автор: q2q2q2q2q2
Дата сообщения: 20.09.2007 18:48
Спасибо за интересную информацию
Автор: Serg58rub
Дата сообщения: 20.09.2007 22:20
Кто-нибудь использовал ZeOSlib для доступа к БД Postgres с реализацией графики в полях типа OID? Столкнулся с проблемой интерпретации BLOB-поля в ExpressQuantumGrid. При свойствах компонента ZConnections 'oidasblob=True" формат графического поля (JPEG) в QuantumGrid не воспринимается, в момент записи в БД выдается ошибка "...invalid large-object discriptor: 0".
В аналогичной ситуации компоненты PosgresDAC ведут себя безупречно.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

Предыдущая тема: Язык программирования на русском языке


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.