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

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

Автор: ShIvADeSt
Дата сообщения: 29.01.2007 02:16
DevExpress

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



Ресурсы:
Home page
Knowledge Base
Online documentation
Community blog
DX-Squad - комсомольцы-добровольцы, защитники слабых и угнетенных
DevExpress Extentions
Free DevExpress Addons
Кое-какие сэмплы(давно не обновлялся, но все же)


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

DLL со скинами из библиотеки dxSkins, автор Ziltoid [more] Наконец-то дошли руки до выкладки на файлообменник.
Скачать DLL можно здесь: http://rapidshare.com/files/166902064/SkinDLL.rar

Архив включает в себя:
- DLL со скинами (помимо скинов есть битмапы 16х16 для ImageCombobox'ов, битмапы 32х32 для RibbonGallery, константы цветов полосатости и фонов для каждого скина)
- модулек SkinHandle.pas с процедурками загрузки и навешивания скина на приложение.
- тестовый пример.
[/more] линк обновлен
Продолжение, начало тут

Автор: Vudr
Дата сообщения: 30.01.2007 16:43
Вопрос.
Приложение содержит много форм с гридами.
Колонки в гридах создаются в runtime. Примерно по 70 колонок на каждый грид.
При определенном количестве открытых форм начинает появлятся ошибка: недосточно памяти, для выполнения операции. Ошибка эта происходит или при создании очередной вьюхи или при создании очередной колонки во вьюхе. Кто сталкивался с такой проблемой?
Автор: Alex47
Дата сообщения: 31.01.2007 12:46
Vudr

Может посмотреть с помощью какого-либо профайлера как расходуется память?
Автор: Vudr
Дата сообщения: 31.01.2007 13:08
А какой профайлер посоветуешь? Я смотрел с помощью деспетчера задач, винда даже свопить не начинает хотя оперативка почти вся израсходованна.
Тестовое приложение в котором я просто создаю вьюхи в репозитарий дает тотже результат на 2000х объектах. Хотя обычных контролов я могу насоздавать хоть 60000.
Проблема именно в девах. А мне нужно много вьюх и много колонок в каждой.
В базе знаний девов подобной проблемы нет.
Автор: Bol970
Дата сообщения: 31.01.2007 13:25
Здравия желаю All.
Имеется необходимость создать в Grid систему master-detail.
Но есть особенность нужно использовать просто таблицу (Table)
не DBTable. А там в свойствах вида не могу найти где настроить
по какой колонке будет производится операция выборки.
У меня сейчас в master таблице (тоже не DBTable) есть колонка "col1",
а в подчиненной таблице "dcol1" по которым и нужно делать выборку.
Помогите, в примерах все завязано на DBTable.
Сейчас у меня хотя в detail- таблице и есть данные
в grid они не показываются вовсе.
Автор: ArtemiyUO
Дата сообщения: 31.01.2007 14:25
Vudr
Есть хороший профилер в варезнике AutomatedQA.AQTime.
А может попробовать девок обновить?
Автор: Vudr
Дата сообщения: 31.01.2007 15:19
На декабрьских тестил, баг присутствует
Просто в цикле создавал вьюхи.
Автор: drunk2
Дата сообщения: 02.02.2007 18:06
В программе DelphiComp Reader (та, что с обменником работает) реализован инкрементальный поиск как в firefox + при нажатии на "Показать" выделяется совпадающий текст во всем гриде. как это реализовать ?
у меня поиск только по первому столбцу нормально идет(

Код:
0: найдено совпадение
-1: не найдено совпадение
-2: совпадений нет

function IncSearchTextInView(AGrid: TcxGrid; IncSearchText: String;
var AIncSearchItem: Integer; AForward: Boolean; SearchResult: Integer): Integer;
var
AView: TcxGridTableView;
begin
Result:=SearchResult;

AView := TcxGridTableView(AGrid.FocusedView);
if IncSearchText='' then
begin
AIncSearchItem:=0;
AView.DataController.Search.Cancel;
Exit;
end;
if (Result=-2) or (Result=0) then
Exit
else
begin
// поиск уже идет
if AView.Controller.IsIncSearching then
begin
if AView.DataController.Search.LocateNext(AForward)=false then
begin
// ищем следующий
if AForward=true then
begin
if (AIncSearchItem)<=(AView.VisibleColumnCount-1) then
begin
inc(AIncSearchItem);
end
else
begin
AIncSearchItem:=0;
AView.DataController.Search.Cancel;
Result:=-2;
Exit;
end;
end
// ищем предыдущий
else if AForward=false then
begin
if (AIncSearchItem-1)>=0 then
begin
dec(AIncSearchItem);
end
else
begin
AIncSearchItem:=0;
AView.DataController.Search.Cancel;
Result:=-2;
Exit;
end;
end;
Result:=IncSearchTextInView(AGrid, IncSearchText, AIncSearchItem, AForward,Result);
end
else
begin
Result:=0;
Exit;
end;
end
// начало поиска
else
begin
AView.Controller.EditingController.HideEdit(True);
AView.DataController.GotoFirst;
if AView.DataController.Search.Locate(AIncSearchItem, IncSearchText)=true then
begin
Result:=0;
Exit;
end;
end;
end;
end;

Автор: ArtemiyUO
Дата сообщения: 05.02.2007 09:12
Ребята посмотрел DelphiComp Reader
тоже заинтересовал поиск.

Кто нибудь знает имя автора?

Так же интересен вопрос - как можно для строки грида показать произвольный хинт?
Автор: OXDBA
Дата сообщения: 05.02.2007 10:08

Цитата:
Кто нибудь знает имя автора?

3SCrack

Цитата:
Так же интересен вопрос - как можно для строки грида показать произвольный хинт?

Надеюсь это поможет
How to programmatically display cell hints within a grid
Насколько я понимаю в DelphiComp Reader используется TMS. а не девки.

Автор: skast
Дата сообщения: 06.02.2007 09:46
Подскажите возможно ли сделать в CxGrid одну ячейку неактивной, типа ReadOnly?????
Автор: Dennica
Дата сообщения: 06.02.2007 13:54
skast
Именно ячейку по какому-то условию или весь столбец устроит?
Автор: skast
Дата сообщения: 06.02.2007 14:24
Dennica
Именно ячейку, точнее ячейки, которые отвечают какому-либо условию!
Автор: Dronton2
Дата сообщения: 06.02.2007 15:48
skast
У TableView есть event OnEditing:
TcxGridEditingEvent = procedure(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem; var AAllow: Boolean) of object;
property OnEditing: TcxGridEditingEvent;

проверяешь параметры Sender и AItem и устанавливаешь когда нужно AAllow := false;
Автор: kasia
Дата сообщения: 07.02.2007 16:39
Доброе время суток.
Есть такая проблема:
В таблице в одной колонке есть имена файлов. По нажатию на кнопку происходит обработка этих файлов и в зависимости от того как прошла обработка, в другой колонке напротив каждого имени файла выставляется статус (текстовая запись).
Вопрос: Надо чтобы каждому статусу соответствовал свой цвет записи. Например "Fault" должно быть написано красным.

А в третьей колонке идут кнопки, надо что бы в случае если статус Fault - кнопка была неактивна, иначе активна
Спасибо.
Автор: golkanavt
Дата сообщения: 07.02.2007 16:54
kasia
OnCustomDrawCell
Автор: kasia
Дата сообщения: 07.02.2007 17:45
А как быть с кнопкой?

Добавлено:
И еще.
А нельзя ли как-то обратится к стилю конкретной ячейки, наподобие колонка такая-то, строка номер такая-то.
Автор: A_V
Дата сообщения: 07.02.2007 23:00
kasia
стиль меняй на OnGetContentStyle колонки, кнопку на OnGetProperties
Автор: Nicka_Grey
Дата сообщения: 08.02.2007 01:24
Vudr
По поводу твоего вопроса, для начала уточни плз при выдаче ошибки сколько свободных ресурсов на машине и какие еще проги запущены, и еще какие компоненты юзаешь в проекте? Нет ли часом Raize-ов, особенно их RzPageControl-a?
Есть подозрение что не хватает именно GDI- ресурсов винлды.
Автор: ChudinovSS
Дата сообщения: 08.02.2007 10:46
Здравствуйте.
Проблема такая:
в cxGrid данные сгруппрированы (3 уровня вложенности):
[+]территория
[+] отрасль
профессия
как, зная наименование территории, отрасли и професии сделать expand на соответствующих уровнях и установить указатель на нужной професии...
пробовал вот таким методом:
With cxGrid3DBTable1 do
begin
i:=DataController.FindRecordIndexByText(0,2,Terrs.text.text,true,true,true);
n:=DataController.GetRowIndexByRecordIndex(i,true);
ViewData.Rows[n].Expand(True);

i:=DataController.FindRecordIndexByText(i,6,Otrs.text,true,true,true);
n:=DataController.GetRowIndexByRecordIndex(i,true);
ViewData.Rows[n].Expand(True);

i:=DataController.FindRecordIndexByText(i,4,Prof.text,true,true,true);
n:=DataController.GetRowIndexByRecordIndex(i,true);

Controller.FocusedRowIndex:=n;

end;

Конечно код не очень оптимизированный
может сам алгоритм корявый, но в итоге получается, что правильно определяется только "территория" (и почему-то раскрывается 1-я во вложенном списке отрасль), а остальное нет
Хелп, плиз. Я уже замучился.
Автор: jicoff
Дата сообщения: 08.02.2007 12:46
ChudinovSS

Да... Определенно, фигня какая-то...

Переводить на Паскаль не буду.

Идея в следующем:

DataGroupIndex = GridView->DataController->Groups->DataGroupIndexByRowIndex[RowIndex]

где

RowIndex можно найти по DataController->GetRowIndexByRecordIndex, т.е в данном случае это Территория

далее, по этому DataGroupIndex можно получить количество записей в подгруппе (в родителе Территории):

GridView->DataController->Groups->ChildCount[DataGroupIndex]

или принципиально понять, что подгруппа не пустая:

GridView->DataController->Groups->GroupingItemCount

далее у меня применяется такой подход:

RowIndex2 = GridView->DataController->Groups->ChildRecordIndex[DataGroupIndex][RowIndex]
RowIndex2 = GridView->DataController->GetRowIndexByRecordIndex(RowIndex2, false)

где RowIndex - это индекс в подгруппе, т.е. может быть индекс в Отрасли по отношению к родителю Территория

дальше можно использовать GridView->ViewData->Rows[RowIndex2] для получения TcxCustomGridRecord

По всем функциям обращайся к хелпу.
Автор: Dronton2
Дата сообщения: 08.02.2007 14:41
ChudinovSS

var tv: tableview;
...
for i := 0 to tV.RecordCount - 1 do
if (tV.DataController.Values[i, Terrs.index] = 'xxx') and
(tV.DataController.Values[i, Otrs.index] = 'YYY') and
(tV.DataController.Values[i, Prof.index] = 'zzz') then
begin
tv.controller.MakeRecordVisible(tv.viewdata.records[i]);
tv.controller.FocusedRecordIndex := i;
break;
end;

примерно так (не проверял)

Добавлено:
Пардон, ошибся.
Автор: SerjP75
Дата сообщения: 09.02.2007 15:13
А где можно взять русификацию для шестой венрсии грида?
Автор: hostage2002
Дата сообщения: 09.02.2007 16:17
Добрый день, уважаемые.

Подскажите - где взять русские ресурсы для контролов(всех!) 3 (третьей! серии). У меня установлены DevExp начала 2006 г (включают все версии гридов и контролов, от 3 до 5.NET), волею судеб в одном проекте используются старые (3.2.2) дбгриды и дбконтролы. Нужен перевод на русский основных контролов - дбгрид, дбтреевью, дблукапы. Где взять? Спасибо.
Автор: BUALEX
Дата сообщения: 09.02.2007 17:18
Вопрос.

Подскажите пожалуйста:
есть ли возможнсть печати из spreadsheet от devexpress?
Кто организовывал печать xls без excel или может есть другая альтернатива быстро выводить на печать табличные данные (БЕЗ ole)?


Автор: BUALEX
Дата сообщения: 10.02.2007 21:42
Уважаемый Аll, подскажите пожалуйста по spreadshet, как организовать печать его содержимого или кто-нибудь знает как по другому распечатать xls без Excel?
Автор: A_V
Дата сообщения: 11.02.2007 01:58
BUALEX
Ничего не знаю про 'spreadsheet', но с xls разумеется можно работать и без OLE, с его родным BIFF форматом. Так что либо разбирайся сам, описания есть, например http://genrep.nm.ru/xls/biff.htm , либо ищи готовые компоненты, на torry есть такие: http://www.torry.net/quicksearchd.php?String=BIFF&Title=No
Автор: Nicka_Grey
Дата сообщения: 11.02.2007 04:00
BUALEX
На сколько мне известно у DevEX можно печатать почти все.
У них для этого есть PrintingSystem. Посмотри в его сторону.
Автор: Darl
Дата сообщения: 12.02.2007 15:49
Никто часом не встречал What's new к DevExpressу от 01.02.07
Автор: jicoff
Дата сообщения: 12.02.2007 17:48
Darl

В обменнике лежит.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

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


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