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

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

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

Цитата:
Не пойму cxGridView или FIBPlus виноват: ввожу новую запись, первое поле в табличку, пытаюсь перейти на следующее поле - сразу же вылетат ошибка, Value ***Null***, т.е. постит до того как я все поля введу. Как побороть, если нельзя дефолтные значения подсовывать?

Убери Requred у поля. Преведи датасет в режим кешируемых обновлений... Только реши для себя, надо ли пользователю разрешать не вводить все значения? Если можно то БД неправильно разработана, если нельзя - то ошибка все равно возникнет на этапе передачи данных в базу. А тут сразу, как у собаки павлова, не все набрал - получи ошибку, рефлекс вырабатывается

Всего записей: 231 | Зарегистр. 20-09-2002 | Отправлено: 08:59 06-03-2008
kash9

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delmi777
для этого нужно использовать levels
примеры должны быть вместе с исходниками грида
\ExpressQuantumGrid 6\Demos\Delphi\MasterDetailDemo\
 
или читай хелп
\ExpressQuantumGrid 6\Help\expressquantumgrid6.hlp  
содержание\tutorials\master-detail tutorials
 
там все подробно расписано

Всего записей: 8 | Зарегистр. 28-02-2008 | Отправлено: 09:32 06-03-2008
zver

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

Код:
 
for (int i = 0; i < TableView1->Controller->SelectedRowCount; i++)  {
    TableView1->Controller->SelectedRows(i)->Values(TableView1Col1->Index)="5";
    }
 

Всё отлично, пока юзер не посортирует или пофильтрует по столбцу TableView1Col1.
В момент когда обновляется значение отдельной строки этого столбца грид сам пересортируется и selected индексы слетают. Со StringGrid-oм такого небыло, т.к. сортировка была ручная.
 
Добавлено:
PS.
Кстати разобрался как сделать правильно MultiSelect в гриде:

Код:
 
void __fastcall TForm1::TableView1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
try {
if (D!=-1) {
TableView1->DataController->SelectRows(((D-43)/18)+TOP, ((Y-43)/18)+TableView1->Controller->TopRowIndex);
}
} catch (...) {
}    
}
 

Всего записей: 66 | Зарегистр. 07-06-2004 | Отправлено: 10:13 06-03-2008
makz

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ILSOFT
Прикол в том, что раньше работало вроде все без включения cached updates. В базе есть несколько обязательных полей.
Цитата:
ошибка все равно возникнет на этапе передачи данных в базу

Так почему передаются значения сразу, при вводе поля? мне надо только после Post вручную. Попробую конечно с cached updates теперь.

Всего записей: 1034 | Зарегистр. 17-05-2003 | Отправлено: 16:24 06-03-2008
VikLabel

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На форме есть cxLookUpCombobox, он заполняется из ADODataset select'om
из мастер таблицы (в ней такие поля (для примера): ID, Street, City)
ID - ключевое, выбирается - Street, т.е. cxLookUpCombobox.Text = Street
Все остальные на форме компоненты относяться к деталь таблице, в которую  
необходимо вставить значение ID из мастер таблицы.
Можно ли получить из cxLookUpCombobox значение ID? Т.е. визально выбирается улица,
а например в переменную пихается значение ID. Или как это лучше сделать?

Всего записей: 674 | Зарегистр. 05-03-2003 | Отправлено: 23:43 06-03-2008
kash9

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

Цитата:
Можно ли получить из cxLookUpCombobox значение ID

т.е. у тебя вот так
cxlookupcombobox1.keyfieldnames:=id
cxlookupcombobox1.listfieldnames:=street
 
тогда
cxlookupcombobox1.editvalue в нем id
cxlookupcombobox1.text  в нем street

Всего записей: 8 | Зарегистр. 28-02-2008 | Отправлено: 07:01 07-03-2008
ILSOFT

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

Цитата:
Так почему передаются значения сразу, при вводе поля? мне надо только после Post вручную. Попробую конечно с cached updates теперь.

насколько помню всегда при переходи с записи в режиме dsInsert или dsEdit на любую другую запись в датасете, вызывается post.

Всего записей: 231 | Зарегистр. 20-09-2002 | Отправлено: 07:45 07-03-2008
downloads2005

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скажите, пожалуйста, можно ли сделать в квантумгриде так:

|---------|-----|----------|--------------|--------------|----------|
|         |     |          |  Рабочие дни |  Выходн. дни |          |
| Фамилия | Имя | Отчество |--------------|--------------|   СУММА  |
|         |     |          | Часы | Сумма | Часы | Сумма |          |
|---------|-----|----------|------|-------|------|-------|----------|
|Иванов   |Иван |Иванович  |   10 |   200 |   10 |   400 |      600 |
|---------|-----|----------|------|-------|------|-------|----------|

Т.е. чтобы фамилия, имя, отчество, сумма званимали по две строки заголовка, а остальные делились.. Что-то типа сочетания Table и BandedTable.
Спасибо за ответы, извините, если вопрос уже был (искал - не нашел).

Всего записей: 39 | Зарегистр. 02-01-2006 | Отправлено: 15:22 08-03-2008
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такой вид нужно рисовать самому:
Пример

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 19:53 08-03-2008
Lexus300

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
народ, подскажите, почему при использовании агрегатной функции cstSum в SummaryFooter не происходит никаких действий. т.е. сумма 0,00?
использую dxGrid

Всего записей: 465 | Зарегистр. 16-05-2007 | Отправлено: 17:26 09-03-2008
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lexus300
Колонку указать не забыл?

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 01:01 10-03-2008
programmer1981

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

Цитата:
народ, подскажите, почему при использовании агрегатной функции cstSum в SummaryFooter не происходит никаких действий. т.е. сумма 0,00?  
использую dxGrid


Цитата:
Lexus300  
Колонку указать не забыл?

Еще как вариант - тип поля посмотреть (стринги суммироватся не будут)

Всего записей: 7 | Зарегистр. 07-02-2008 | Отправлено: 08:08 10-03-2008
Lexus300

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

Цитата:
Колонку указать не забыл?

какую колонку?
у столбца CENA указываю: SummaryField = CENA, SummaryFooterField = CENA, SummaryFooterType = cstSum... результат 0.00
что не так?

Всего записей: 465 | Зарегистр. 16-05-2007 | Отправлено: 08:09 10-03-2008
luberello

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
люди, помогите разобратся с сортировкой.
 
такая ситуация:
есть dxDBGrid (версия 3.1), в нем еcть поле которое содержит id. к этому полю привязан LookupComboBox, он содержит два массива TStrings: Items[] и Values[].  
Items - содержит id
Values - содержит текстовые значения  
 
Все отображатся нормально (на гриде в поле видно текстовое значение соответствующее его id), но при нажатии на заголовке поля, даные сортируются по id, а не по отображаемых значениях. Как можно это решить? Мот кто-то уже с таким стыкался?
 
p.s.
В 4 версии грида уже есть property SortByDisplayText которая делает то что надо, но к сожалению перейти на другую версию возможности нет

Всего записей: 21 | Зарегистр. 06-05-2006 | Отправлено: 14:09 10-03-2008
afiget



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

Цитата:
у столбца CENA указываю: SummaryField = CENA, SummaryFooterField = CENA, SummaryFooterType = cstSum... результат 0.00

Какая версия грида?
В 6-ке таких свойств нет. И констант таких нет
У колонки грида при установленных DataBinding указываем в Summary.FooterKind значение skSum.

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 14:11 10-03-2008
Lexus300

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
afiget
дружище, ты гоовришь про cxGrid, а я говорю про dxDBGrid

Всего записей: 465 | Зарегистр. 16-05-2007 | Отправлено: 16:08 10-03-2008
StdNet

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго дня.
Есть 3 таблицы  
tbl1 с полями ID, code, descr
tbl2 с полями ID, code, descr
tbl3 с полями fID, sID
 
на форме 2 gridControl'a в ниэ выведены code, descr с первых двух тблиц нада сделать так что бы юзер мышкой выделил строку в первом гриде, потом во втором, тыцнл энтер и в 3ю таблицы вставились ID с первых двух.
так вот собственно вопрос как узнать ID выделеного элемента в гриде?

Всего записей: 70 | Зарегистр. 03-08-2006 | Отправлено: 18:21 10-03-2008
luberello

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сам себе и отвечаю:
 
можно перекрыть метод грида OnCompare
 

Цитата:
 
procedure TfmMain.grdMaster(Sender: TObject; Node1,
  Node2: TdxTreeListNode; var Compare: Integer);
var
  S1, S2: String;
  SortedCol: TdxTreeListColumn;
  Sign : Integer;
begin
  SortedCol := grdMySortedColumn;
   
  S1 := Node1.Strings[SortedCol.Index];
  S2 := Node2.Strings[SortedCol.Index];
 
  Sign := AnsiCompareStr (S1, S2);
 
  if Sign = 0 then
    Compare := 0
  else
  begin
    if Sign > 0 then
      Compare := 1
    else
      Compare := -1;
 
    if SortedCol.Sorted = csDown then
      Compare := -Compare;
  end;
 
end;
 

 
взято от сюда: http://www.devexpress.com/Support/Center/KB/p/A220.aspx?searchtext=&tid=dee0f498-9b49-42c9-bee9-5530e0ea67f6&pid=d8b2605b-186b-406d-af9f-4a4cc9f8136e

Всего записей: 21 | Зарегистр. 06-05-2006 | Отправлено: 18:56 10-03-2008
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть ли возможность в cxGride динамически узнать максимальное значение поля?
 
Мне нужно включить фильтр по полю ID, но сначала нужно узнать максимальное значение, чтобы были видны только вновь добавляемые записи?

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 15:20 11-03-2008
X11



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

Код:
 
procedure TfmMain.SetFilterByMaxID();
Var
 iMaxID:integer;
begin
  dbgReklama.DataController.Filter.Active := false;
  iMaxID := DM.GenId('gen_treklama_id');
  WITH dbgReklama.DataController.Filter.Root do begin
    Clear;
    AddItem(dbgReklamaID, foGreater, iMaxID, 'Автофильтр по ID');
  end;
end;
 

 
 
фильтр нормально и правильно строится, только не включается, т.е. внизу (слева) он виден, но галка не установлена, как активировать фильтр? Брал код из справки:
 

Код:
 
procedure TFilterByCodeMainForm.SetOnlyGridsFilter;
begin
  with tvCustomers.DataController.Filter.Root do
  begin
    //clear all existing filter conditions
 
    Clear;
    //set the logical operator
    //by which new conditions are combined
    BoolOperatorKind := fboOr;
    //add new filter conditions
    AddItem(tvCustomersPRODUCTID, foEqual, cExpressQuantumGridID, 'ExpressQuantumGrid');
    AddItem(tvCustomersPRODUCTID, foEqual, cXpressQuantumGridID,  'XpressQuantumGrid');
    AddItem(tvCustomersPRODUCTID, foEqual, cXtraGridID, 'XtraGrid');
    AddItem(tvCustomersPRODUCTID, foEqual, cASPXGridID, 'ASPX Grid');
  end;
end;
 

 
здесь нет чего-то похожего на активацию фильтра

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 09:33 12-03-2008
   

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