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

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

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

ShIvADeSt (29-01-2007 03:17): идем сюда
http://forum.ru-board.com/topic.cgi?forum=33&topic=7918
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

golkanavt



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

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




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

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 10:42 08-10-2003 | Исправлено: golkanavt, 15:41 08-09-2006
golkanavt



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

Цитата:
А это что за "зверь" такой? В GridView есть такое понятие?

Объясняю - есть грид с тремя уровнями, назовем их Master, Detail1, Detail2. Необходимо блокировать записи в Detail2 по условию в Detail1 и блокировать оба уровня Detail1, Detail2 - по условию в Master. Надеюсь, внятно изложил.

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 20:35 29-08-2006
hobest

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
golkanavt
 
Мне, например, не понятно само слово "блокировать". Что под этим подразумевается? Просто перевести DetailView в состояние ReadOnly? Если это - то можно на событие FocusedRecordChanged в MasterView переводить DetailView в состояние ReadOnly. Если эти условия получаются из БД и не могут быть изменены в программе, то можно при создании клона DetailView сразу выставлять ReadOnly.

Всего записей: 86 | Зарегистр. 20-03-2006 | Отправлено: 00:32 30-08-2006
Widoms



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Delphi 6, кидаю на форуму dxBarManager
при компиляции вываливается ошибка
 
Unit dxBar was compiled with a different version of dxCommon.dxDrawText

Всего записей: 378 | Зарегистр. 09-01-2004 | Отправлено: 09:12 30-08-2006
hobest

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Widoms
 
Возможно где-то есть другие версии файлов, поищи файл dxCommon.pas.

Всего записей: 86 | Зарегистр. 20-03-2006 | Отправлено: 09:43 30-08-2006
unfreqient



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть грид 4 (TcxGrid), в нём могут быть разные столбцы. Обрабатываю выделения по
 
for i:=0 to cxGrid1DBTableView1.Controller.SelectedRowCount-1 do
 s[j]:=cxGrid1DBTableView1.Controller.SelectedRecords[i].DisplayTexts[4]
 
если пользователь перемещает четвёртый столбец, то как к его значению обратиться зная его имя? То есть надо пройти по выделенным и запомнить значения из определённого столбика.

Всего записей: 104 | Зарегистр. 20-07-2006 | Отправлено: 12:52 30-08-2006
golkanavt



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
hobest
Да, все верно, под блокировкой имеется ввиду запрет редактирования. Такого свойства как ReadOnly у View нет.

Цитата:
то можно при создании клона DetailView сразу выставлять ReadOnly.

с этого места поподробнее, если можно - каким образом и что выставлять?
 
Добавлено:
unfreqient
ViewName.GetColumnByFieldName(FieldName);

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 13:50 30-08-2006
unfreqient



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
golkanavt
Благодарен безмерно,  
через s[j]:=cxGrid1DBTableView1.GetColumnByFieldName('CODE').EditValue обратился,
но как все выделенные то перебрать?

Всего записей: 104 | Зарегистр. 20-07-2006 | Отправлено: 14:16 30-08-2006 | Исправлено: unfreqient, 14:23 30-08-2006
golkanavt



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unfreqient
не понял - выделенные что? записи? так у тебя выше ответ есть:

Код:
 
for i:=0 to cxGrid1DBTableView1.Controller.SelectedRecordCount-1 do
begin
  ARecord := TcxGridDataRow(Controller.SelectedRecords[i]);
  ...
end;
 

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 15:01 30-08-2006
unfreqient



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

Всего записей: 104 | Зарегистр. 20-07-2006 | Отправлено: 15:15 30-08-2006
golkanavt



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

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

Вся информация для этого у тебя уже есть, от тебя требовалось лишь сделать маленький шажок самому:

Код:
 
for i:=0 to cxGrid1DBTableView1.Controller.SelectedRecordCount-1 do  
begin  
  ARecord := TcxGridDataRow(Controller.SelectedRecords[i]);  
  ColumnID := cxGrid1DBTableView1.GetColumnByFieldName('CODE').index;
  ColumnValue[i] :=ARecord.Values[cxGrid1DBTableView1.Columns[ColumnID].Index];
  ...  
end;  
 

 
Примерно так. Дальнейшую работу над ошибками/доработку напильником придется тебе самому.

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 15:38 30-08-2006
unfreqient



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
golkanavt
Ещё раз спасибо, уже сам догадался, вот так сделать:
for i:=0 to cxGrid1DBTableView1.Controller.SelectedRowCount-1 do
    begin
       s[j]:=cxGrid1DBTableView1.Controller.SelectedRecords[i].DisplayTexts[cxGrid1DBTableView1.GetColumnByFieldName('CODE').Index];

Всего записей: 104 | Зарегистр. 20-07-2006 | Отправлено: 15:43 30-08-2006
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
golkanavt
 
Во-первых, у GridLevel есть событие OnGetGridView. Туда приходит MasterRecord. Событие назначается для DetailLevel. Это событие хорошо использовать для создания разных View. Если у DetailView (паттерна) выставлено свойство Synhronization, то изменение любого свойства одного из клонов, т.е. созданных DetailView по образу паттерна, или самого паттерна, приведет к изменению этого свойства у всех созданных DetailView. В этом случае надо создавать 2 разных паттерна: для одного разрешено редактирование, другому нет.
 
Есть у Grid событие OnFocusedViewChanged. Можно в нем определять, во-первых, является ли  View детейлом, во-вторых, в зависимости от условий MasterRecord - разрешать или запрещать во View редактирование. В этом случае не придется создавать два DetailView паттерна.
 
Может есть еще способы решения проблемы. На мой взгляд второй лучше, с первым возни будет больше.

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 15:55 30-08-2006
golkanavt



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

Цитата:
Есть у Grid событие OnFocusedViewChanged

Вот об этом свойстве не знал, спасибо за информацию, попробую 2ой способ. Хотя скорее всего проще окажется слегка изменить логику работы гридов на форме, отказавшись от такого вложения уровней View.

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 19:28 30-08-2006 | Исправлено: golkanavt, 19:31 30-08-2006
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
golkanavt
 
Вообще говоря, по опыту, больше 2-х уровней уже перебор. У нас было 3 и 4, это приводило пользователей в шок, так как начиналась путаница с вертикальными скроллбарами. Да и сам начинал путаться, и уже пользователю не удавалось объяснить что по чем. И пользователя просто отказывались работать с программой. Еще не надо забывать, что существует группировка, которая "подольет масла в огонь".

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 20:05 30-08-2006
educat

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужно добавить строки в cxSpreadSheetBook на форме ReportsForm. На форме есть кнопка  
с кодом  
      ActiveSheet.InsertCells(ActiveSheet.SelectionRect,msAllCol);  
всё прекрасно добавляется
 
Но когда я вызываю ReportsForm (она MDIChild) из другой формы то это не работает.
 
 
    ReportsForm:=TReportsForm.Create(Application);
//Загружаем файл шаблона, где есть шапка и низ, посередине нужно вставить данные  
//из таблицы
    ReportsForm.cxSpreadSheetBook1.LoadFromFile('reports\sample.xls');
     with ReportsForm.cxSpreadSheetBook1 do begin
         ShowHeaders:=false;
          Protected:=true;
          ShowGrid:=false;
          BeginUpdate;
          ReportsForm.SetCellText(1,2, dsConst.FieldValues['ORG_SNAME']);
          ReportsForm.SetCellText(0,4, datetostr(DatePr.date));
          CurRow := 10;
          ...
             While NOT dsTable.EOF do begin
                  ReportsForm.SetCellText(1,CurRow, FieldByName('N').AsString);
                  ReportsForm.SetCellText(2,CurRow, FieldByName('FIO').AsString);
//**************
                  ActiveSheet.InsertCells(ActiveSheet.SelectionRect,msAllCol);  
//это не работает, данные вставляются поверх других в шаблоне
//**************
 
                  CurRow := CurRow +1;
                  Next;
              end;
        end;
//В общем подскажите кто знает как это сделать чтобы добавлять строки, данные то я в ячейки заношу, а строки ну никак и все тут.
 
Заранее благодарен, за любую помошь

Всего записей: 7 | Зарегистр. 18-03-2006 | Отправлено: 13:16 31-08-2006
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
educat
 
А каким образом устанавливается ActiveSheet.SelectionRect? Какие ячейки он объединяет в каждый момент времени?

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 13:49 31-08-2006
DimonXP

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cxGird.
Два наборы данных связанны как master-detail. В детальном наборе выделяется только первая запись, на другие не могу перейти ни с помощью мыши ни клавиатуры. В чем может быть дело?
 
 
Добавлено:
Все разобрался, вообще глупая ошибка, скопировал Grid, а поле    DataController.KeyFieldNames = 'CLIENT_ID' изменить забыл

Всего записей: 325 | Зарегистр. 23-10-2003 | Отправлено: 16:09 31-08-2006
Dennica



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В cxGridDBTableView у меня есть одна колонка в которой содержаться для всех строк одни и теже значения (достаточно длинный текст). Мне нужно объединить все ячейки в этом столбце и написать этот текст 1 раз. В принципе получилось так сделать с помощью CellMerging, но когда выставляю OptionsSelection.CellMultiSelect в true, InvertSelect в false да еще разворачиваю грид на весь экран, тормоза просто жуть. На моем компе то работать невозможно (P4 2,40GHz) про пользователей вообще молчу, у них машинки слабенькие. Так вот, может можно без использования CellMerging как-то обойтись?

Всего записей: 235 | Зарегистр. 19-12-2005 | Отправлено: 09:54 01-09-2006 | Исправлено: Dennica, 09:55 01-09-2006
hobest

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dennica
 
Если у тебя всегда в одной колонке один и тот же текст, то лучше поставить отдельно стоящий компонент, например, мемо редактор, и выводить текст туда, тем более он большой.

Всего записей: 86 | Зарегистр. 20-03-2006 | Отправлено: 10:02 01-09-2006
Dennica



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

Всего записей: 235 | Зарегистр. 19-12-2005 | Отправлено: 10:10 01-09-2006
   

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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress
ShIvADeSt (29-01-2007 03:17): идем сюда
http://forum.ru-board.com/topic.cgi?forum=33&topic=7918


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru