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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте! Подскажите пожалуйста ,если кто работал с XtraPrintingSystem, как правильно отрисовывать Image на PrintControl. Столкнулся со следующей проблемой:
1. Имею набор Image-ов (страницы документа);
2. Начинаю отрисовывать их по мере их просмотра;
3. Отрисовываю страницы, используя их же размеры;
4. При отрисовке получается не то что надо, то ли размеры не те, то ли по другому делать надо. Если кто знает подскажите пожалуйста, очень надо!!!
 
Функция, выполняющаяся перед отрисовкой страницы
 
void printingSystem1_BeforePagePaint(object sender, PageEventArgs e)
        {
             
             
            Image img; страница            
                if (e.Page.Index < massPage.Length)//massPage.Length-массив страниц
                {
                    if (massPage[e.Page.Index] == 0)
                    {
/* происходит заполнение img */                        
printingSystem1.Graph.DrawImage(img,
                            new RectangleF(new PointF(0, printingSystem1.Graph.ClientPageSize.Height * e.Page.Index), printingSystem1.Graph.ClientPageSize),
                            BorderSide.None, Color.Transparent).SizeMode = PictureBoxSizeMode.Zoom;
                        massPage[e.Page.Index] = 1;
                        printingSystem1.End();
                     }          
           
        }
printingSystem1.Graph.ClientPageSize.Height * e.Page.Index)-для перехода на начало следующей страницы.

Всего записей: 1 | Зарегистр. 16-07-2007 | Отправлено: 22:35 16-07-2007
Dennica



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

Цитата:
Мне что-то совсем не понятно, как без DetailInSQLMode получить + для детейлов?

 
можно связать мастер и детали используя сво-ва
MasterKeyFieldNames
DetailKeyFieldNames
 
При этом нужно чтобы детали содержали все записи которые могут потребоваться. Фильтрацию осуществляет сам грид. организация мастер-деталей таким образом работает намного шустрей например для небольших справочников чем постоянное обращение за деталями в БД.

Всего записей: 235 | Зарегистр. 19-12-2005 | Отправлено: 07:52 17-07-2007
AlphaBet



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Коллеги, кто нибудь пользовался в проектах FastMM? Это модуль-менеджер памяти? отлавливает утечки памяти в проектах. Так вот у меня при использовании компоненты TcxSpreadSheetBook, постоянно вылазят утечки памяти. Уже столкнулся с парой глюков, отловил их с помощью EurekaLog и FastMM. Например при изменении стиля нескольких тысяч ячеек (4-5-6тыс.) при закрытии формы возникает куча ошибок. Переполнялся список ундо команд. Решил его частой очисткой истории редактирования. Все равно вылазят ошибки. Кто то может прокоментировать такую работу компонентов? Может есть какие то стабильные версии этих компонент без ошибок? Как то тратить время на отлов глюков не хочется... Кстати не только с этим компонентом проблемы. Компонента скинов сразу же вызывает утечки памяти, об этом говорит FastMM.

Всего записей: 145 | Зарегистр. 09-02-2005 | Отправлено: 11:12 17-07-2007
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dennica
 
Это очень интересная информация, у меня для детейлов обычно процедура вызывается, поэтому даже и не задумывался о других возможностях. Попробую воспользоваться ею, у меня есть в одном месте в программе тормоза, может поможет.

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 13:34 17-07-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Столкнулся с неприятной вещью:
Пользователь в компоненте TcxFilterControl задает фильтр для грида и сохраняет его:
FilterCtl.SaveToStream(Stream);
На следующий день пользователь открывает грид, загружает фильтр, выполняя
FilterCtl.LoadFromStream(Stream).
Всё хорошо до тех пор, пока количество колонок или их порядок в гриде не поменяются. В этом случае получается полная каша: Если добавить в грид колонку в начало списка, то загруженный фильтр не поёмёт этого, и в фильтре будут отображены названия соседних еолонок, вместо нужных.
Чую, что придётся писать самостоятельно процедуры сохранения и загрузки из потока.
Кто-нибудь лечил это?

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 18:16 17-07-2007
saltmi1



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

Цитата:
можно связать мастер и детали используя сво-ва
MasterKeyFieldNames
DetailKeyFieldNames

Хотел просто уточнить, что надо всегда  выставлять в DataController GridMode True, иначе будут проблемы, промучился раз почти целый день с этим.
 

Всего записей: 36 | Зарегистр. 11-05-2007 | Отправлено: 20:30 17-07-2007
zver

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В программе есть cxGrid. У грида два TableView связанных по Master-Detail.
Для TableView1 (Master) текущая позиция узнаётся без проблем или по гриду или по датасорсу.
Для TableView2 (Detail) текущая позиция ="-1" а датасорс на первой позиции вне зависимости от того, что выбрано.
И собственно вопрос: Как узнать позицию курсора в Detail-таблице?
 
Добавлено:
Тут немного подумал. Можно конечно через Ж*** индек получить:
"
TcxCustomGridRecord* ARecord = TableView1->Controller->FocusedRecord;
int Index = ARecord->RecordIndex;
int RelIndex = ARecord->ViewData->DataController->GetDetailActiveRelationIndex(Index);
TcxCustomDataController* DetailDataController = TableView1->DataController->GetDetailDataController(Index,RelIndex);
ShowMessage(DetailDataController->Values[DetailDataController->FocusedRowIndex][1]);
"
 
Но а просто по набору TableView2 (Detail) нельзя???
 
Добавлено:
Что по каждой строке MasterTableView создается свой DetailDataController что-ли?

Всего записей: 66 | Зарегистр. 07-06-2004 | Отправлено: 23:38 17-07-2007
Shadi



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dronton2
 
Насчет потока не пробовал, то через SaveToFile работает с большим количеством полей
(~100 полей) и меняется туда сюда без проблем..
 
Потом сохраняю инишник и filter.flt в полях-блобе...
 
Получаю именнованые снимки, которые при желании на лету могут менять настройки грида.
 
 

Код:
 
    if Grid.FocusedView <> nil then
      if Length(TcxGridDBTableView(Grid.FocusedView).DataController.Filter.FilterText) > 0 then
      begin
        try
          AFilterControl := TcxFilterControl.Create(Self);
          AFilterControl.LinkComponent := GridDB;
          AFilterControl.SaveToFile('filter.flt');
        finally // wrap up
          AFilterControl.Free;
        end; // try/finally
      end;
 

 
ЗЫ:
 
Работаю с ОДАК и там хранимка с динамически подставляемой процедурой возвращающей курсор..
 
такое в динамике не идет.. Нет такого свойства  DisplayFormat !!!
Пробовал  такой в самом начале работы.
 

Код:
 
  spRun.Fields[i].DisplayFormat := ',0.00';
 

 
 
Добавлено:
Dronton2
 
Да ты как всегда прав! Так намного легче, но для динамики нуна вот так..
ПАСИБ...
 

Код:
 
TFloatField(spRun.Fields[i]).DisplayFormat := ',0.00';
 

Всего записей: 110 | Зарегистр. 07-05-2003 | Отправлено: 10:23 18-07-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shadi
Спасибо, но ситуация в другом:
Допустим, вначале были колонки с именами: 'город', 'улица' и '№ дома'. При этом, грид привязан к датасету и колонки привязаны к полям f2, f3 и f4 соответственно. И фильтр был такой:
FilterCaption: (город = Ростов)
FilterText: (f2 = 237).
Сохраняем фильтр п потоке (или файле, это всё равно).
 
Через несколько дней пользователь добавляет в датасет поле f1 'область' (поля формируются динамически и это поле будет в списке на первом месте), добавляется соответствующая этому полю колонка в грид.
Загружаем фильтр и видим:
FilterCaption: (область = Ростов)
FilterText: (f1 = 237).
При этом, на самом FilterControl отображается: 'область = ', т.к. это Lookup-поле и в выпадающем списке для поля 'область' отсутствует значение 'Ростов'.
Т.е. в фильтре поля сместились.
Видно, придётся писать процедуры сохранения и чтения фильтра самостоятельно, привязываясь к названиям полей в датасете.

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 11:19 18-07-2007 | Исправлено: Dronton2, 11:20 18-07-2007
Shadi



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dronton2
 
 
Можешь смастерить маленький пример с твоей проблемой? Чтобы глянуть в действии..
Где у тебя храняться настройки грида? Сразу может после создания поля f1 надо УДАЛЯТЬ файл настройки и пересоздавать его???

Всего записей: 110 | Зарегистр. 07-05-2003 | Отправлено: 12:38 18-07-2007
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zver
 
Да, именно так.
 
Добавлено:
saltmi1
 
Не совсем понял, для какого случая нужно выставлять GridMode = True, когда все данные в DataSet мастаре и DataSet детейле есть? Мне еще не приходилось пользоваться GridMode = True, а практически все гриды с детейлами.

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 12:58 18-07-2007
Barsakov



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здравствуйте,
использую ExpressPivotGrid.v1.1.0 и возникло несколько вопросов:
 
1. Возможно ли сделать расчет GrandTotal'a независимо от таблицы. Т.е. я так понимаю какой  укажешь в значениях SummaryType(stMax,stMin,stAverage и т.д.) такой и будет расчет GrandTotal'a. А мне необходимо в таблице показывать среднее значение за сутки, а GrandTotal'е отобразить сумму этих средних значений за весь период.
Возможно ли такое сделать в этом компоненте? Или как это лечится?
 
2. У меня большое количество группирующих столбцов из-за этого не видно самих значений.Я уменьшаю ширину столбцов до 1(это максимум) После чего прорисовывается жирная полоска из спрятанных столбцов.Есть ли другой вариант спрятать столбцы?
 
P.S. По данным вопросам смотрел на оф. сайте, но ничего подобного не нашел.

Всего записей: 8 | Зарегистр. 11-05-2007 | Отправлено: 16:45 18-07-2007
drunk2



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как приклеить последний столбец к правой стороне, как в explore? Банды не предлагать.

Всего записей: 204 | Зарегистр. 27-10-2005 | Отправлено: 09:31 20-07-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shadi
маленький пример не получится. Процедуры сохранения уже написал, привязываются к названию поля в базе данных.
drunk2
У меня в эксплорере последний столбец не привязывается к правой стороне. Или я не тот эксплорер смотрю?
Проще использовать бэнды. Иначе придется отслеживать несколько событий и менять в них ширину колонки.

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 11:12 20-07-2007
drunk2



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dronton2
Не совсем точно выразился. В эксплорере 'бесконечный' хидер, его нельзя сузить, вернее его последний пустой столбец. Попробуйте сузить колонки, чтобы хидер был не на всю ширину окна - не получится. Видел такое в гридах многих программ, тоже хочу.

Всего записей: 204 | Зарегистр. 27-10-2005 | Отправлено: 12:49 20-07-2007
Shadi



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

Цитата:
Возможно ли сделать расчет GrandTotal'a независимо от таблицы.

 
Вместо таблицы используй select как выборку из таблицы..
Цитата:
У меня большое количество группирующих столбцов из-за этого не видно самих значений

 
 

Цитата:
Т.е. я так понимаю какой  укажешь в значениях SummaryType(stMax,stMin,stAverage и т.д.) такой и будет расчет GrandTotal'a

 
ДА
 

Цитата:
 А мне необходимо в таблице показывать среднее значение за сутки

 
 
Только если подставлять селект из твоей таблицы -> select avg(поле таблицы) from MyTable..
 

Цитата:
У меня большое количество группирующих столбцов из-за этого не видно самих значений

 
бр-р-р-р.. НЕ понятки??? Что ты имел ввиду? Покажи скрин!

Всего записей: 110 | Зарегистр. 07-05-2003 | Отправлено: 13:32 20-07-2007
Barsakov



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

Цитата:
бр-р-р-р.. НЕ понятки??? Что ты имел ввиду? Покажи скрин!  

Ну когда в поле Row Field ставлю грубо говоря больше 10 столбцов, то значения уже не видно. Вот теперь не могу их корректно спрятать. И так чтоб структура таблицы не ломалась.  

Всего записей: 8 | Зарегистр. 11-05-2007 | Отправлено: 18:15 20-07-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
drunk2
TableView.OptionsView.ColumnAutoWidth := true; будет пропорционально менять ширину всех колонок.
Чтобы менять ширинутолько одной (или нескольких) колонок, то нужно для остальных Item указать: BestFitMaxWidth := <integer>;
или Options.HorzSizing := False;

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 11:47 23-07-2007 | Исправлено: Dronton2, 14:54 23-07-2007
HiTech2003

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день! Интересует следующий вопрос: как в Quantum Grid-е наиболее простым образом осуществить рассчет group summary по своему алгоритму, а не используя стандартные формулы типа skSum, skAverage и т.п.? Т.е, грубо говоря, можно ли при рассчете summary для группы получить доступ к строкам, входящим в нее и работать только с ними и если можно, то как это сделать?

Всего записей: 2 | Зарегистр. 14-12-2005 | Отправлено: 15:32 24-07-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HiTech2003
Используй TcxDataSummaryItems.OnSummary
В хэлпе есть пару примеров. Вот один из них:

Код:
procedure TForm1.cxGrid1DBTableView1TcxGridDBDataControllerTcxDataSummary
DefaultGroupSummaryItemsSummary(
  ASender: TcxDataSummaryItems; Arguments: TcxSummaryEventArguments;
  var OutArguments: TcxSummaryEventOutArguments);
var
  AArea, APopulation: Extended;
begin
  //Locate a value in the specific record for Area item
  AArea := ASender.DataController.Values[Arguments.RecordIndex, DBTableView1Area.Index];
 
  //Locate a value in the specific record for Population item
  APopulation := ASender.DataController.Values[Arguments.RecordIndex, DBTableView1Population.Index];
  //Set population density to Value
  OutArguments.Value := APopulation / AArea;
end;
 
 

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 17:54 24-07-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-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru