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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Насчёт ActiveSheet.SelectionRect то как я понимаю это ячейки выбранные в текущий момент.
И если я работаю с ячейкой SetCellText(1,2, FieldByName('N').AsString) то она и должна быть текущей.
Если пере этим сдепать так
   ActiveSheet.SelectCell(0,3,true);
то компонент не может передать фокус текущей ячейке
а если   ActiveSheet.SelectCell(0,3,false); то строки все равно не добавляются

Всего записей: 7 | Зарегистр. 18-03-2006 | Отправлено: 10:54 01-09-2006
jicoff

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

Цитата:
 И если я работаю с ячейкой SetCellText(1,2, FieldByName('N').AsString) то она и должна быть текущей.

 
Не хочется ломать проект для проверки этого утверждения, но у меня есть сомнения в этом.

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 16:09 01-09-2006
VadimLou



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

Цитата:
SetCellText

  Поюзал я этот cx-ких Spread Sheet в одном проекте. Тормозной он жуть. В итоге все их высокоуровненвые методы доступак ячейкам я выбросил (не использую).
Вместо этого обращають напрямую минуя обёртки. Скорость возросла несравненно. В их обёртках при любом обращении создаютяс доп обьекты + какието проверки ... в итоге на больших обьёмах полный пипец.  
В общем код, авось на что натолкнёт ... Подробнее...

Всего записей: 702 | Зарегистр. 22-07-2004 | Отправлено: 21:59 01-09-2006
educat

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо всем кто откликнулся по поводу сxSpreadSheetBook.
После серии экпериментов я выяснил, что у меня в общем-то все было правильно, только я сам в начале защищал лист,  
cxSpreadSheetBook1.Protected:=true;  
и пытался добавить,  а надо то всего лишь наоборот.
А по поводу активной ячейки согласен, что  
SetCellText(Col,Row, Text) не делаёт её активной
надо ActiveSheet.SelectCell(Col,Row);  

Всего записей: 7 | Зарегистр. 18-03-2006 | Отправлено: 06:19 04-09-2006
X11



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

Цитата:
подскажите как в cxGrid обработать MultiSelect.  Задача - берем и перетягиваем ДрагЭндДропом записи в другое место, они должны как то обработаться. С одной записью - сделал. а с кучей?

 
procedure TfmNewArrival.bRecalcSelectedClick(Sender: TObject);
begin
  with dbgArrivalDet.DataController do
  begin
    BeginUpdate;
    try
      ForEachRow(True, RecalcSelected);
    finally
      EndUpdate;
    end;
  end;
end;
 
 
procedure TfmNewArrival.RecalcSelected(ARowIndex: Integer; ARowInfo: TcxRowInfo);
Var
 id:integer;
begin
  with dbgArrivalDet.DataController do begin
    //Test whether a row is a data record
    if ARowInfo.Level = Groups.GroupingItemCount then
    //unbound or provider mode
    with dm do begin
      id := Values[ARowInfo.RecordIndex, dbgArrivalDetID.Index];
      if tArrivalDet.Locate('ID',id,[]) then begin
        tArrivalDet.Edit;
        tArrivalDetPRICE_RETAIL.Value := tArrivalDetPRICE_W_VAT.Value * ceCoeff.Value;
        tArrivalDet.post;
      end;//if tArrivalDet.Locate('ID',id,[]) then begin
    end;//with dm do begin
  end;//with dbgArrivalDet.DataController do begin
end;


----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 13:36 04-09-2006
JayDi

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скажите, можно ли в cxTreeList (и ему подобные) разбить одну ячейку таблицы на несколько и, если да, то как? И можно ли вставить в ячейку дерева еще одно дерево (т.е. свой контрол)?
-----------------------------
       |        | dfg |          |
       | dfg  |------|         |
 fgd |------| dfg  |  dfg   |
       | dfg  |------|         |
       |        | dfg  |         |
-----------------------------

Всего записей: 3 | Зарегистр. 02-09-2006 | Отправлено: 23:36 04-09-2006 | Исправлено: JayDi, 06:39 05-09-2006
jicoff

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

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 12:03 05-09-2006 | Исправлено: jicoff, 12:03 05-09-2006
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В базе (FB2.0) есть текстовое поле, которое может иметь значения 'T' или 'F', т.е. эмуляция boolean-поля. В библиотеке EhLib в столбце грида ставлю значение True в свойстве CheckBox и заполняю свойство KeyList:TStrings значениями:
T;t;1;Y;y;
F;f;0;N;n;
 
и в гриде появляется вместо 'T' - галочка , а вместо 'F', поле без галочки, так вот. Внимание вопрос: как реализовать похожее в cxGrid???

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 14:21 05-09-2006
vadson6666



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

Цитата:
Внимание вопрос: как реализовать похожее в cxGrid???

 
 
Внимание, ответ: ставишь у поля в Пропертиес ЧекБокс, потом в пропериесах есть Валуе Чекед, Грейед, Анчекед, там выставляешь требуемые значения.

Всего записей: 267 | Зарегистр. 08-07-2004 | Отправлено: 14:29 05-09-2006
JayDi

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

 
Дело в том, что эту фичу (вывод таблицы с несколькими разнородными ячейками) нужно реализовать с помощью Дерева -- включение Грида утяжеляет и без того большой exe'шник, поэтому все таблички сделаны с помощью одного контрола.

Всего записей: 3 | Зарегистр. 02-09-2006 | Отправлено: 22:09 05-09-2006
uranic2

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

Цитата:
Дело в том, что эту фичу (вывод таблицы с несколькими разнородными ячейками) нужно реализовать с помощью Дерева -- включение Грида утяжеляет и без того большой exe'шник, поэтому все таблички сделаны с помощью одного контрола

 
М-да, такого извращения я еще не слашал: чтобы использовать TreeList вместо грида, ради уменьшения размера exe! Ну бедет твой exe на 1Мбайт больше, Ну что с того? 1Мбайт на диске сейчас стоит меньше 2 копеек - сравни со своим дневным заработком, стоит ли так напрягаться?
 
Хочеться красивого интерфейса- используй Devexpress, хочеться маленькго exe возьми например библиотеку KOL.
 
Добавлено:
Имеется TcxDateNavigator под названием dtNav
Пытаюсь прогрммно выделить период:
 
  dtNav.SelectedDays.Clear;
 
  DaySel := Trunc(FFinish) - Trunc(FStart);
  for I := 0 to DaySel do    // Iterate
    dtNav.SelectedDays.Add(IncDay(FStart,I));
     
  dtNav.Repaint;  //это пробы всякие
  dtNav.Refresh;
 
Ничего не выделяет (вернее выделяет только одну дату)! Но стоит провести над ним мышкой и в момент когда мышь теряет пределы навигатора, он нормально отрисовывает период. Пробовал принудительно dtNav.SetFocus тоже не помагает. Как быть?  
 
 
 
Добавлено:
Вопрос снят, после вовряния справки
 
 LayoutChanged;
 
Description
Use the LayoutChanged method to indicate that the cxDateNavigator control’s layout has been changed and it needs to be repainted.
 

Всего записей: 297 | Зарегистр. 17-08-2004 | Отправлено: 09:23 06-09-2006
JackOff



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

Цитата:
Внимание, ответ: ставишь у поля в Пропертиес ЧекБокс, потом в пропериесах есть Валуе Чекед, Грейед, Анчекед, там выставляешь требуемые значения.

 
Еще удобно добавить чекбокс в ЕдитРепозиторий один раз настроить значение полей и юзать потом в разных местах как шаблон. Например, в основном гриде и отдельной форме редактирования/добавления записи.

Всего записей: 73 | Зарегистр. 13-11-2005 | Отправлено: 14:49 06-09-2006 | Исправлено: JackOff, 14:50 06-09-2006
X11



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

Цитата:
Еще удобно добавить чекбокс в ЕдитРепозиторий один раз настроить значение полей и юзать потом в разных местах как шаблон. Например, в основном гриде и отдельной форме редактирования/добавления записи.

а подробнее про "ЕдитРепозиторий" можно?

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 15:24 06-09-2006
JackOff



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Все очень просто и удобно кидаешь на форму cxEditRepository. В него добавляешь те едит контролы которые тебе нужны, например тот же CheckBox. Задаешь проперти прописываешь эвенты если надо. Потом в гриде задаешь филд или на форму кидаешь едитконтрол у них будет проперти RepositoryItem выбираешь уже готовый из списка и все уже настроено! Очень удобно, например, когда у тебя есть основная форма с гридом и форма отдельная для ввода данных.

Всего записей: 73 | Зарегистр. 13-11-2005 | Отправлено: 00:35 07-09-2006
golkanavt



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возникала ли у кого необходимость в сохранении настроек сортировки грида (порядок колонок в сортировке) с последующей возможностью загрузки их пользователем? Также интересна возможность в отображении этих настроек а-ля настройки фильтрации.

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 16:19 07-09-2006
Alex47



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
golkanavt
Для сохранения настроек есть функции: View.StoreToIniFile / View.RestoreFromIniFile,
Store/RestoreToRegistry - смотри Help.
 
В Knowledge Base на офф. сайте есть статья "How to store View settings in a database".
 
У Bastian Bauwens на http://www.aixware.de/samples.html есть пример:
   "How to save view settings to database and use them for printing"
 
По поводу отображения порядка сортировки колонок: может заинтересует подход, который был доведен до работающего кода с помощью техподдержки DevExpress в 2004г. В заголовках колонок рисуются номера для визуализации порядка сортировки.
Используется обработчик OnCustomDrawColumnHeader Подробнее...

Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 11:19 08-09-2006 | Исправлено: Alex47, 11:22 08-09-2006
UrfinJuse

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброе время суток всем!
У меня следующая проблема(возможно это даже и пионерство, но я уже упарился):
TcxGrid кинул на форму, заполнил данными, есть не только строки, но и другие типы отображения.
При установке курсора в какое-либо поле значение пропадает и на попытки внести данные ничего не происходит. В столбцах выставлено значение Options->Editing = true, Properties->ReadOnly = false. Данные заполняются программой вручную без привязки к рекордсету.
QuantumGrid4
 
Суть вопроса: как можно сделать возможность ручного редактирования данных?

Всего записей: 4 | Зарегистр. 08-09-2006 | Отправлено: 12:28 08-09-2006
golkanavt



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

Цитата:
Для сохранения настроек есть функции: View.StoreToIniFile / View.RestoreFromIniFile,  
Store/RestoreToRegistry - смотри Help.  
 
В Knowledge Base на офф. сайте есть статья "How to store View settings in a database".  
 
У Bastian Bauwens на http://www.aixware.de/samples.html есть пример:  
   "How to save view settings to database and use them for printing"  

Я в курсе всего этого и давно этим пользуюсь. В моем вопросе имелась ввиду возможность сохранения/загрузки ТОЛЬКО настроек сортировки, ибо у юзеров есть несколько паттернов сортировок, которыми они периодически пользуются, и если случайно сбивается паттерн - по памяти восстановить нереально.
 

Цитата:
По поводу отображения порядка сортировки колонок: может заинтересует подход, который был доведен до работающего кода с помощью техподдержки DevExpress в 2004г. В заголовках колонок рисуются номера для визуализации порядка сортировки.  

Спасибо за наводку

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 12:41 08-09-2006
SkySi

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте. Возникла следующая проблема. Есть грид с двумя уровнями и, соответственно, с двумя вложенными View (TableView, не DB!). Данные во view заносятся через Tv1->DataController->AppendRecord() и Tv1->DataController->SetValue(). Для первого (Master) вью все ок, а вот для detail - не могу понять, каким образом указать связь с записью из MasterView. Добавление во второй вью происходит таким же образом, как и в первый:
 
int RecNo2 = Tv2->DataController->AppendRecord();
Tv2->DataController->SetValue(RecNo2, 0, Tv1->DataController->GetValue(RecNo, 0));
Tv2->DataController->SetValue(RecNo2, 1, ProductId);
и т.д.
 
Но строки нет, как будто ее и не добавляли. Как решить эту проблему? Может быть я вообще не с той стороны подошла к задаче?
 
И еще, прочитала всю ветку, несколько раз натыкалась на упоминание о клонах и о том, что необходимо их использовать, но так и не поняла, в чем их смысл.
 
 

Всего записей: 4 | Зарегистр. 08-09-2006 | Отправлено: 13:55 08-09-2006 | Исправлено: SkySi, 13:56 08-09-2006
golkanavt



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SkySi
Cвязь дочерних View с родительским View настраивается с помощью свойств KeyFieldNames, MasterKeyFieldNames, DetailKeyFieldNames.  
Добро пожаловать, приятно видеть представительницу женского пола в этой ветке

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 14:22 08-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