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

» Использование DevExpress (часть 3)

Автор: Neogar
Дата сообщения: 28.06.2009 15:57
День добрый.. Использую в Builder 2009 TcxSpreadSheetBook. Все было нормально до тех пор пока не подключил Fastreport. При компиляции выдает:

(590): E2015 Ambiguity between 'fsSolid' and 'Cxsstypes::fsSolid'
(590): W8006 Initializing TcxSSFillStyle with TfrxFrameStyle

Посмотрел - действительно fsSolid есть в devExpress
cxSSTypes.hpp
....
#pragma option push -b-
enum TcxSSFillStyle { fsSolid, fsGray75, fsGray50, fsGray25, fsGray12, fsGray6, fsHorzStrip, fsVertStrip, fsRevDiagonalStrip, fsDiagonalStrip, fsDiagCrossHatch, fsThickCrossHatch, fsThinHorzStrip, fsThinVertStrip, fsThinRevDiagonalStrip, fsThinDiagonalStrip, fsThinDiagCrossHatch, fsThinThickCrossHatch };
#pragma option pop
.....

и в FastReport
Frxclass.hpp
....
#pragma option push -b-
enum TfrxFrameStyle { fsSolid, fsDash, fsDot, fsDashDot, fsDashDotDot, fsDouble, fsAltDot, fsSquare };
#pragma option pop
....

Подскажите, что можно сделать? namespace?
Автор: f3ka
Дата сообщения: 29.06.2009 07:23
Neogar
ну если когда либо попадалось одинаковое название типов переменных то писали namespace вначале, но как быть с членами перечисляемого типа хз... ну давно бы попробовал уже namespace дописать и с нами поделиться результатом...
Автор: Neogar
Дата сообщения: 29.06.2009 10:06
f3ka
Сорри, сам ступил.. namespace'ы там есть
в юните поменял везде
типа

SetCellPattern(2, 27, 3, 32, 19, 5, fsSolid);
на
SetCellPattern(2, 27, 3, 32, 19, 5, Cxsstypes::fsSolid);

и все ОК...
Автор: ecix
Дата сообщения: 29.06.2009 13:14

Цитата:
ecix

Цитата:Как можно отледить события сортировки или группировки колонок? ... События cxGrid.DataController.OnSortingChanged и OnGroupingChanged не вызываются

Именно этими событиями и можно отследить. Только что проверил - обрабатываются. Может у вас что-то специфическое? Давайте пример кода, попробуем разобраться.


У меня события вызываются в гриде на фрейме. Сейчас попробовал - работает. Видимо был глюк... или у среды или у меня :)...



Цитата:
ecix

Цитата:Как можно перечислить строки в cxGrid в том порядке...

Посмотреть в сторону TcxCustomDataController.ForEachRow


Эта функция перечисляет только ВИДИМЫЕ строки, а нужны и НЕВИДИМЫЕ (не развернутые значком "+"). Видимые, кстати, можно без просто перечислить в цикле как Grid.ViewData.Records[x].
Автор: Meister Floh
Дата сообщения: 29.06.2009 15:43
Господа, кто подскажет есть у меня cxComboBox в нем список таблиц в БД, если в пропертиз ставлю ридонли, то редактировать имя таблицы нельзя - то, что мне и нужно, но и выбрать другое значение из списка тоже нельзя.. А мне нужно менять значение, только теми, что в списке, но запретить возможность что-либо набирать с клавиатуры - кто чего подскажет?
Автор: Roma4ke
Дата сообщения: 29.06.2009 15:45
скажите кто знает, как сделать так что бы значение в ячейке устанавливались ,только тогда жмешь кнопку enter, а то у ихнем гриде , сменил фокус и значение уже занесено в ячейку.
Автор: f3ka
Дата сообщения: 29.06.2009 16:21
Meister Floh
TcxComboBox.Properties.DropDownListStyle = lsEditFixedList ?

Добавлено:
Roma4ke
вообще то это не в ихнем гриде, а в любом датасете такое поведение... так что тут отлавливать например событие OnBeforePost например... или какое либо другое
Автор: Meister Floh
Дата сообщения: 29.06.2009 19:13
f3ka ага спасибочки.. недосмотремши..
Автор: vladman
Дата сообщения: 29.06.2009 19:38
ecix

Цитата:
Посмотреть в сторону TcxCustomDataController.ForEachRow ...
Эта функция перечисляет только ВИДИМЫЕ строки, а нужны и НЕВИДИМЫЕ

Желательно внимательней и до конца читать описание этой функции по ссылке, которая была указана в посте.
В описании указано -

Цитата:
It takes into account data records and grouping rows which are visible or potentially visible by scrolling (i.e. not hidden in a collapsed group). You can use the MakeRecordVisible method first to make a particular record visible if it is hidden within a collapsed group.
Автор: clear2121
Дата сообщения: 30.06.2009 06:28
Привет всем!!!
В проекте использую TcxTreeList. Делаю колонки. В одной из них хочу отобразить картинку из листа. При нажатии на строку буду менять картинку в этом столбце. Пробую, не получается. Подскажите (по пунктам 1,2,3...) что надо сделать.

Указал, что столбец типа ГРАФ, а куда указать на индекс картинки из ИМАДЖЛИСТ не могу найти.
СПАСИБО!
Автор: f3ka
Дата сообщения: 30.06.2009 07:53
clear2121
для реализации того что хочется надо у cxTreeList'а установить свойство ImageList в котором необходимые картинки для узлов листа... при заполнении листа узлами надо прописывать у узлов свойства ImageIndex, SelectedIndex и StateIndex необходимые для поставленной задачи...
Автор: clear2121
Дата сообщения: 30.06.2009 10:32
f3ka,
я так и делаю, но это глобально на всю строчку. А у меня мысль именно в колонке показать картинку. В проекте 2 колонки будут с картинками, которые отвечают за разные действия. Вот как это сделать?
Пробую так:

Код:
TcxTreeListNode *MR = G2->Nodes->Root->AddChild();
MR->Values[0] = IL->GetImage...;
MR->Values[1] = "";
MR->Values[2] = IL->GetImage(...;
Автор: JohnSilver182
Дата сообщения: 30.06.2009 13:09
Hi All
А вот когда после запроса cxGrid сортирует колонки , то курсор у DATASET стоит на первой записи и поэтому можно увидеть середину или конец таблицы .

А как сказать cxGrid что бы показал сначала ?
Автор: jicoff
Дата сообщения: 30.06.2009 16:13
JohnSilver182

GridView->ViewData->Rows[0]->Focused = true;

Добавлено:
clear2121

Как-то так:

Graphics::TBitmap *image;

image->LoadFromStream(...);
image->TransparentMode = tmAuto;
image->Transparent = true;
ImageList->AddMasked(image, image->TransparentColor);
Автор: JohnSilver182
Дата сообщения: 30.06.2009 17:13
jicoff
Спасибо , жаль что я аналога в Дезайнере не нашел .
Автор: volser
Дата сообщения: 30.06.2009 21:31
clear2121

Для этих целей можно использовать Properties для колонки ImageComboBox. Если не нужно редактировать установить свойство ReadOnly.
Автор: clear2121
Дата сообщения: 01.07.2009 09:27
volser
СПАСИБИЩЕ!!! Получилось как надо!
Теперь всплыл другой вопрос - а как менять эту картинку программно. В ИДЕ для TcxTreeListColumn в свойстве Проперти есть свойство DefaultImageIndex. А вот программно как к нему долезть не знаю.
Пока копаю в сторону

Код:
TcxTreeListNode *MR = G2->Nodes->Root->AddChild();
MR->Values[0] - а тут не знаю что добавить
Автор: f3ka
Дата сообщения: 01.07.2009 09:48
clear2121

Цитата:
В ИДЕ для TcxTreeListColumn в свойстве Проперти есть свойство DefaultImageIndex. А вот программно как к нему долезть не знаю.

ну наверно приведением типов Properties

Код: TcxImageComboBoxProperties(<YourColumnName>.Properties).DefaultImageIndex
Автор: volser
Дата сообщения: 01.07.2009 09:58
clear2121
DefaultImageIndex это немного не то. Что бы все работало нужно заполнить следующие свойства Properties. Images - список картинок. Items - указать Value, ValueType, Image. Теперь в зависимости от значения в колонке (Values[]) будет отображаться соответствующая картинка.
Автор: clear2121
Дата сообщения: 01.07.2009 10:12
f3ka,
<YourColumnName> распространяется на всю колонку, а я хотел бы толко на строчку. Пока не могу найти.
СПАСИБО ЗА УЧАСТИЕ!


Добавлено:
volser
СПАСИБИЩЕ!!! ВСЕ ПОЛУЧИЛОСЬ КАК НАДО!
Может ты ещё знаешь как поймать, что пользователь кликнул по этой колонке?
НУ СПАСИБО!
Автор: volser
Дата сообщения: 01.07.2009 10:20
clear2121

Цитата:
..пользователь кликнул по этой колонке?


Это где? Заголовок или ячейка?
Автор: JohnSilver182
Дата сообщения: 01.07.2009 10:22
А вобще правильно делать cxLookupComboBox для поиска справочника в 100 000 позиций ??

Юзер как набирает 3-буквы , я обновляю РекордСет : where Поле Like 'ABC% ' что бы LOCATE не бегал по 100 000 записей .

Только после обновления РекордСет , список выпадает из ОДНОЙ строки . Надо еще одну букву ввсети , тогда выпадает нормально .
СНошался долго , помогло только GridMode=true;
Автор: afiget
Дата сообщения: 01.07.2009 10:28

Цитата:
А вобще правильно делать cxLookupComboBox для поиска справочника в 100 000 позиций ?

А сам как думаешь?
Вот открыл ты список, в ползунок скролинга можешь мышкой попасть?

Минимум - листбокс. Максимум - отдельная форма с возможностью фильтрации и поиска на месте.
Автор: volser
Дата сообщения: 01.07.2009 10:29
JohnSilver182

Цитата:
А вобще правильно делать cxLookupComboBox для поиска справочника в 100 000 позиций ??


Лучше так не делать. Чтобы использовать лукап желательно что бы записей было не больше 50. Для большого количества записей лучше использовать отдельную форму в которой находится грид и панель фильтрации.
Автор: clear2121
Дата сообщения: 01.07.2009 10:34
volser,
прости не уточнил - ячейке. У меня CellSelect = false, поэтому выделение идет всей строки. И если я кликаю на ячейку с рисунком (да вообще любую), то ничего не происходит.
Автор: volser
Дата сообщения: 01.07.2009 10:37
clear2121
На событие OnClick листа повесь следующий код


Код:
var
AHitTest: TcxTreeListHitTest;
begin
AHitTest := TcxTreeList(Sender).HitTest;

if Assigned(AHitTest) then
with AHitTest do
if HitAtColumn and (HitAtNode or HitAtNodePreview) then
ShowMessage('Ok');
end;
Автор: clear2121
Дата сообщения: 01.07.2009 11:10
volser?
ВЫРУЧИЛ!!! СПАСИБО!!!
Захотелось сделать красиво. СДЕЛАЛ!
БЛАГОДАРЮ!!!



Добавлено:
Подскажите!
Хочу с помощью TcxTreeList сделать отображение текстовых данных наподобие чата. ЧТоб, если много инфы, то строка растягивалась для вмещения этой инфы. Но на других строках это не отражалось. Возможно это? Думаю использовать поле типа РичЕдит.
Может кто то порекомендует что то ещё?
СПАСИБО!
Автор: data man
Дата сообщения: 01.07.2009 12:26
clear2121
Может использовать событие Column.GetEditProperties (или GetEditingProperties) ?
Автор: volser
Дата сообщения: 01.07.2009 12:37
clear2121
У листа есть свойство Preview. Если же нужно что бы обычная строка растягивалась по высоте, то свойство OptionsView.CellAutoHeight.
Автор: Roma4ke
Дата сообщения: 01.07.2009 14:00
помогите разобраться. использую сxGrid. функции GetFieldByName() нету. как можно заносить данные в поля по имени.
спасибо.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081

Предыдущая тема: Delphi: tcp клиент в потоке


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