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

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



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не работает
Собственно код теперь вот такой (там вначале часть данных берётся из квери):
 
  cxGrid1TableView1.BeginUpdate;
  cxGrid1TableView1.DataController.RecordCount:=QueryRep.RecordCount;
  i:=0;
  while not QueryREP.Eof do begin
    сxGrid1TableView1.DataController.Values[i,сxGrid1TableView1Column1.Index]:=QueryRep.FieldByName('l_name').AsString;
     cxGrid1TableView1.DataController.Values[i,сxGrid1TableView1Column2.Index]:=QueryRep.FieldByName('ss').AsString;
     cxGrid1TableView1.DataController.Values[i,сxGrid1TableView1Column3.Index]:=QueryRep.FieldByName('sp').AsString;
     QueryRep.Next;
     i:=i+1;
  end;
  cxGrid1TableView1.EndUpdate;
 
Строки есть в итоге, но пустые.

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 11:31 07-09-2007
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну конечно НЕ работает, ты ж забыл вызвать
сxGrid1TableView1.DataController.append;
 
....
 
сxGrid1TableView1.DataController.post;

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



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Теперь кусок имеет вид:
 
  cxGrid2TableView1.BeginUpdate;
  cxGrid2TableView1.DataController.RecordCount:=QueryRep.RecordCount;
  i:=0;
  while not QueryREP.Eof do begin
     cxGrid2TableView1.DataController.Append;
     cxGrid2TableView1.DataController.Values[i,0]:=QueryRep.FieldByName('l_name').AsString;
     cxGrid2TableView1.DataController.Values[i,1]:=QueryRep.FieldByName('ss').AsString;
     cxGrid2TableView1.DataController.Values[i,2]:=QueryRep.FieldByName('sp').AsString;
     cxGrid2TableView1.DataController.Post;
     QueryRep.Next;
     i:=i+1;
  end;
  cxGrid2TableView1.EndUpdate;
 
И ошибка "List index out of bounds(0)"
Уже совсем ничего не понимаю. %(

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 12:36 07-09-2007
X11



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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 12:56 07-09-2007
brookson



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

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 13:15 07-09-2007
X11



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

Цитата:
cxGrid2TableView1.EndUpdate;  

в этой  что-ли?

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 13:26 07-09-2007
brookson



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cxGrid2TableView1.EndUpdate;
да, в этой. причём в дебагере видно, что значения ячейкам присваиваются.
но после ошибки грид пустой.
 

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 13:40 07-09-2007
X11



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

Цитата:
cxGrid2TableView1.BeginUpdate;  


Цитата:
cxGrid2TableView1.EndUpdate;

закомментируй эти строки и посмотри что получиццо

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 14:03 07-09-2007
brookson



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
пробовал ошибка возникает тогда на  
 
cxGrid2TableView1.DataController.RecordCount:=QueryRep.RecordCount;
 
та же: list index...

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 14:10 07-09-2007
X11



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

Цитата:
cxGrid2TableView1.DataController.RecordCount:=QueryRep.RecordCount;  

зачем ты это делаешь, убери

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 14:33 07-09-2007
brookson



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
попробовал. интересная штука: ставлю Watch на cxGrid2TableView1.DataController.RecordCount. После  
cxGrid2TableView1.DataController.Append;
записей 1, после Post опять 0. следующая итерация - опять 1 (а i у нас уже 2), и тут ошибка появлеется типа
Record Index out of range

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 14:42 07-09-2007
X11



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

Код:
 
        Grid1.DataController.append;
        Grid1.Columns[1].EditValue := tlf2;
        Grid1.Columns[4].EditValue :=  re1.lines[i];
        Grid1.DataController.post;
 

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 14:49 07-09-2007
brookson



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

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 15:14 07-09-2007
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть у меня функция:
[code]
function CheckGridLink(ActiveControl:TObject): Boolean;
Var
cxGrid : TcxGrid;
AView : TcxGridDBTableView;
 
begin
.....
 
if (ActiveControl is TcxGridSite) then begin
как дальше выяснить цепочку, которая привела бы собственно к cxGridDBTableView
где и можно добраться к данным
 
 
этот код нерабочий, из справки вычитал, что Container возвращает TcxGrid, справка, правда ещё по четвертой версии
if (ActiveControl is TcxGridSite) then begin
cxGrid := (TcxGridSite(ActiveControl).Container as TcxGrid);
AView := (cxGrid.ActiveLevel.GridView as TcxGridDBTableView);
 
if AView.DataController.DataSource = nil then begin
ShowMessage('Таблица не привязана к источнику данных');
result := false;
exit;
end
....
[code]
 
Добавлено:
можно так, как Вы уже догадались, наверное:
 
Grid1.Columns[Grid1Column1.index].editvalue :=  ...
 
т.к. пользователь может переместить колонки

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 15:17 07-09-2007
aleksandrus



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброе время суток.
Хотя на предыдущий мой  вопрос  

Цитата:
Как можно в cxGridDBTableView выделить подстроку в ячейке? (по аналогии как выделяется текст, если использовать инкрементный поиск).  

так никто и не ответил, у меня возник ещё один:
как GridDBTableView  осуществляет передачу фокуса? У меня как-то странно получается:
если например 50-100 тысяч записей, скроллбаром перехожу в самый низ таблицы - все отрисовывается быстро, я вижу последние записи. Но если по ним щелкнуть мышкой - перед тем, как эта ячейка выделится, проходит несколько минут, в течение которых что-то выполняется из msadce.dll, насколько я понял это связано с AdoDataSet. Никто не разбирался в подобных подробностях?

Всего записей: 9 | Зарегистр. 29-01-2006 | Отправлено: 17:08 07-09-2007
A_V

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
aleksandrus
тут имхо проблемы не у грида, а у ADO. Там банальный Locate на большем кол-ве записей будет очень долго идти. Можно конечно выставить GridMode, что-бы данные кешировались, но тогда ты не сможешь проскролить сразу грид до конца, так что лучше взять быстрые компоненты прямого доступа к твоей субд (SDAC/ODAC/..) или AnyDAC (имхо он помедленние SDAC'а). Еще можно залить содержимое датасета в ClientDataSet, операция долгая, зато потом при скроле никаких тормозов не будет  
 
насчeт первого вопроса - можно воспользоваться стандартным search'ем, после установки FocusedRecordIndex:
DataController.Search.Locate(ColumnIndex, Text)
он и выделит нужный текст в текущей ячейке...

Всего записей: 770 | Зарегистр. 07-04-2002 | Отправлено: 15:24 08-09-2007
clear2121



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hi!
Задача в следующем:
есть главная таблица, в которой автоинкрементальное поле является ключом к другим таблицам. На форме есть два грида. Их нужно заполнить до того, как я получу ключ из главной таблицы, сохранив в нее запись. Как можно отобразить в гридах значения без записи их в соответствующие таблицы?
 
СПАСИБО!

Всего записей: 311 | Зарегистр. 07-04-2005 | Отправлено: 08:28 10-09-2007
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
clear2121, ты хочешь средствами cxGrid`а такое провернуть? а смысл.

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 08:59 10-09-2007
IceMan T

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди добрые, подскажите, где скачать ExpressSkins Library для D7 ? Умаялся искать ужо. Если можете ссылку, либо архив, киньте на IceMan_T@mail.ru

Всего записей: 8 | Зарегистр. 10-05-2007 | Отправлено: 09:08 10-09-2007
clear2121



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
Смысл в том, что если пользователь откажется от ввода, то я все просто забываю. Идея в следующем: имеем ящик, а в нем кучу инструментов. Делаю форму, где пользователь заносит имя ящика, а в гриде перечисляет инструменты. Так вот, ящик еще не записан в таблицу и я не знаю его кода, но инструменты пользователь уже заносит. Если он откажется, то я все забываю, если нет, то сохраняю запись в главной таблице, получаю код и в цикле (думаю так) сохраняю записи из грида. Но как такое провернуть с помощью cxGridа не знаю. Может есть другой механизм?
 
СПАСИБО!

Всего записей: 311 | Зарегистр. 07-04-2005 | Отправлено: 09:22 10-09-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