а как в дизайне или программно запихнуть в GroupByBox?
		
		» Использование DevExpress 2
X11 
 
Цитата:
Ну в дизайнере судя по скринам ты уже умееш группировать
 
Програмно можно так: Column1.GroupBy(1, False);
 
		
		Цитата:
а как в дизайне или программно запихнуть в GroupByBox?
Ну в дизайнере судя по скринам ты уже умееш группировать
 Програмно можно так: Column1.GroupBy(1, False);
Подскажите, как программно развернуть всё или свернуть всё, т.е. полностью все ветки грида? 
  
Добавлено:
разобрался
 
dbgItog.ViewData.Collapse(True);
dbgItog.ViewData.expand(True);
		
		Добавлено:
разобрался
 dbgItog.ViewData.Collapse(True);
dbgItog.ViewData.expand(True);
На форме лежит cxRadioGroup, в нем три итема, проблема в том, запускаю программа, щёлкаю по компоненте, а выбрать получатся только получается только первый, как ни щёлкай, остальные 2 выбрать не получается, что я не так делаю? 
На другой форме тоже есть точно такой же cxRadioGroup и он нормально пашет
 
Друзья, что делать, выручайте как можно быстрее
 
  
Добавлено:
да вот даже на одной форме лежит нескольк cxRadioGroup`оп, у одних можно все итемы выбрать, у других только первый, вернее нулевой
  
Добавлено:
даже в дизайне ставлю ItemIndex хоть 1, хоть 2 в Инспекторе Свойств, всё равно выбран нулевой итем
  
Добавлено:
дошло вроде, у ненормальных компонент, итемы имеют тип значения Boolean, а у нормальных (Null)
  
Добавлено:
vожет кто-нить пояснить, как же тогда выбирать итемы, когда у них тип не Null?
  
Добавлено:
Кто подскажет, как изменить программно колонтитулы в dxComponentPrinter?
		
		На другой форме тоже есть точно такой же cxRadioGroup и он нормально пашет
 Друзья, что делать, выручайте как можно быстрее
 Добавлено:
да вот даже на одной форме лежит нескольк cxRadioGroup`оп, у одних можно все итемы выбрать, у других только первый, вернее нулевой
Добавлено:
даже в дизайне ставлю ItemIndex хоть 1, хоть 2 в Инспекторе Свойств, всё равно выбран нулевой итем
Добавлено:
дошло вроде, у ненормальных компонент, итемы имеют тип значения Boolean, а у нормальных (Null)
Добавлено:
vожет кто-нить пояснить, как же тогда выбирать итемы, когда у них тип не Null?
Добавлено:
Кто подскажет, как изменить программно колонтитулы в dxComponentPrinter?
Разрешил пользователям менять высоту строк, да теперь текст в яцейках виден в 2-3 строки, но при печати текст всё равно в одну строку, есть решение этой проблемы? 
{DevExpr_11_apr_2007}
  
Добавлено:
Вопрос по CxGrid: как выделять записи с помощью Ctrl и мыши, ну т.е. мне нужно выделить записи вразброс: первую, вторую, пятую, седьмую.
		
		{DevExpr_11_apr_2007}
Добавлено:
Вопрос по CxGrid: как выделять записи с помощью Ctrl и мыши, ну т.е. мне нужно выделить записи вразброс: первую, вторую, пятую, седьмую.
X11 
включи MultiSelect в труе
		
		включи MultiSelect в труе
так включено, подряд несколько записей или все записи можно выделить, а как выделить первую, третью и пятую (с пом. Ctrl и мышки), а???
		
		Доброе время суток. 
Я честно пытался найти ответ в обеих темах, но совсем запутался.
Как можно в cxGridDBTableView выделить подстроку в ячейке? (по аналогии как выделяется текст, если использовать инкрементный поиск).
я написал что-то навроде этого:
  
if( (cxGrid1DBTableView1->DataController->GetDisplayText(i, j)).AnsiPos(asText) > 0)
{
cxGrid1DBTableView1->Controller->FocusedRecordIndex = i;
cxGrid1DBTableView1->Controller->FocusedColumnIndex = j;
cxGrid1DBTableView1->Controller->EditingItem = cxGrid1DBTableView1->Controller->FocusedItem;
TcxCustomTextEdit *edtTest =
(TcxCustomTextEdit*)cxGrid1DBTableView1->Controller->FocusedItem;
if(edtTest)
{
edtTest->SetSelection(0,1);
}
  
Но работает только если в гриде разрешено редактировать ячейки, а у меня как раз стоит cxGrid1DBTableView1->OptionsDara->Editing = false; и ячейки "readonly", соответственно edtTest получается NULL.
Пытался понять как выделяет встроенный "инкрементный поиск", но так и не смог, буду благодарен, если кто-нибудь наставит на "путь истинный".
		
		Я честно пытался найти ответ в обеих темах, но совсем запутался.
Как можно в cxGridDBTableView выделить подстроку в ячейке? (по аналогии как выделяется текст, если использовать инкрементный поиск).
я написал что-то навроде этого:
if( (cxGrid1DBTableView1->DataController->GetDisplayText(i, j)).AnsiPos(asText) > 0)
{
cxGrid1DBTableView1->Controller->FocusedRecordIndex = i;
cxGrid1DBTableView1->Controller->FocusedColumnIndex = j;
cxGrid1DBTableView1->Controller->EditingItem = cxGrid1DBTableView1->Controller->FocusedItem;
TcxCustomTextEdit *edtTest =
(TcxCustomTextEdit*)cxGrid1DBTableView1->Controller->FocusedItem;
if(edtTest)
{
edtTest->SetSelection(0,1);
}
Но работает только если в гриде разрешено редактировать ячейки, а у меня как раз стоит cxGrid1DBTableView1->OptionsDara->Editing = false; и ячейки "readonly", соответственно edtTest получается NULL.
Пытался понять как выделяет встроенный "инкрементный поиск", но так и не смог, буду благодарен, если кто-нибудь наставит на "путь истинный".
Доброго времени суток! 
  
Проблема следующая.
d2005, qgrid 6. cxgrid, cxtableview
  
Нужно в runtime присваивать значения ячейкам грида.
В хелпе написано, что так можно. В тестовом примете получилось с первого раза:
  
cxTableView.DataСoltroller.Values[i,j]:=...;
  
Но вот в чём прикол. Повторить такое чудо больше не удалось, как ни стараюсь.
Пробую копировать этот грид на эту же форму, сверяю ВСЕ свойства вью, код тот же, а ячейки просто пустые.
  
Где собака зарыта, подскажите кто-то!! Опыта работы с этим монстром пока нет, и хелп ничем не смог помочь
 
 
		
		Проблема следующая.
d2005, qgrid 6. cxgrid, cxtableview
Нужно в runtime присваивать значения ячейкам грида.
В хелпе написано, что так можно. В тестовом примете получилось с первого раза:
cxTableView.DataСoltroller.Values[i,j]:=...;
Но вот в чём прикол. Повторить такое чудо больше не удалось, как ни стараюсь.
Пробую копировать этот грид на эту же форму, сверяю ВСЕ свойства вью, код тот же, а ячейки просто пустые.
Где собака зарыта, подскажите кто-то!! Опыта работы с этим монстром пока нет, и хелп ничем не смог помочь
 Код:
cxTableView.DataСoltroller.Values[cxTableView.DataСoltroller.focusedRecordIndex, cxTableViewColumn1.index ]:=...;
Не работает 
 
Собственно код теперь вот такой (там вначале часть данных берётся из квери):
  
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;
  
Строки есть в итоге, но пустые.
		
		
 Собственно код теперь вот такой (там вначале часть данных берётся из квери):
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;
Строки есть в итоге, но пустые.
ну конечно НЕ работает, ты ж забыл вызвать 
сxGrid1TableView1.DataController.append;
  
....
  
сxGrid1TableView1.DataController.post;
		
		сxGrid1TableView1.DataController.append;
....
сxGrid1TableView1.DataController.post;

Теперь кусок имеет вид: 
  
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)"
Уже совсем ничего не понимаю. %(
		
		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)"
Уже совсем ничего не понимаю. %(
посмотри, на какой строке кода вываливается сообщение
		
		в последней. 
 
		
		Цитата:
cxGrid2TableView1.EndUpdate;
в этой что-ли?
cxGrid2TableView1.EndUpdate; 
да, в этой. причём в дебагере видно, что значения ячейкам присваиваются.
но после ошибки грид пустой.
  
 
		
		да, в этой. причём в дебагере видно, что значения ячейкам присваиваются.
но после ошибки грид пустой.
Цитата:
cxGrid2TableView1.BeginUpdate;
Цитата:
cxGrid2TableView1.EndUpdate;
закомментируй эти строки и посмотри что получиццо
пробовал 
 ошибка возникает тогда на  
  
cxGrid2TableView1.DataController.RecordCount:=QueryRep.RecordCount;
  
та же: list index...
		
		
 ошибка возникает тогда на  cxGrid2TableView1.DataController.RecordCount:=QueryRep.RecordCount;
та же: list index...
Цитата:
cxGrid2TableView1.DataController.RecordCount:=QueryRep.RecordCount;
зачем ты это делаешь, убери
попробовал. интересная штука: ставлю Watch на cxGrid2TableView1.DataController.RecordCount. После  
cxGrid2TableView1.DataController.Append;
записей 1, после Post опять 0. следующая итерация - опять 1 (а i у нас уже 2), и тут ошибка появлеется типа
Record Index out of range
		
		cxGrid2TableView1.DataController.Append;
записей 1, после Post опять 0. следующая итерация - опять 1 (а i у нас уже 2), и тут ошибка появлеется типа
Record Index out of range
а так? 
  
 
Код:
Grid1.DataController.append;
Grid1.Columns[1].EditValue := tlf2;
Grid1.Columns[4].EditValue := re1.lines[i];
Grid1.DataController.post;
  
		
		Код:
Grid1.DataController.append;
Grid1.Columns[1].EditValue := tlf2;
Grid1.Columns[4].EditValue := re1.lines[i];
Grid1.DataController.post;
да!! так заработало! большущее спасибо, дружище!

Есть у меня функция: 
[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 := ...
  
т.к. пользователь может переместить колонки
		
		[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 := ...
т.к. пользователь может переместить колонки
Доброе время суток. 
Хотя на предыдущий мой вопрос
 
Цитата:
так никто и не ответил, у меня возник ещё один:
как GridDBTableView осуществляет передачу фокуса? У меня как-то странно получается:
если например 50-100 тысяч записей, скроллбаром перехожу в самый низ таблицы - все отрисовывается быстро, я вижу последние записи. Но если по ним щелкнуть мышкой - перед тем, как эта ячейка выделится, проходит несколько минут, в течение которых что-то выполняется из msadce.dll, насколько я понял это связано с AdoDataSet. Никто не разбирался в подобных подробностях?
 
		
		Хотя на предыдущий мой вопрос
Цитата:
Как можно в cxGridDBTableView выделить подстроку в ячейке? (по аналогии как выделяется текст, если использовать инкрементный поиск).
так никто и не ответил, у меня возник ещё один:
как GridDBTableView осуществляет передачу фокуса? У меня как-то странно получается:
если например 50-100 тысяч записей, скроллбаром перехожу в самый низ таблицы - все отрисовывается быстро, я вижу последние записи. Но если по ним щелкнуть мышкой - перед тем, как эта ячейка выделится, проходит несколько минут, в течение которых что-то выполняется из msadce.dll, насколько я понял это связано с AdoDataSet. Никто не разбирался в подобных подробностях?
aleksandrus 
тут имхо проблемы не у грида, а у ADO. Там банальный Locate на большем кол-ве записей будет очень долго идти. Можно конечно выставить GridMode, что-бы данные кешировались, но тогда ты не сможешь проскролить сразу грид до конца, так что лучше взять быстрые компоненты прямого доступа к твоей субд (SDAC/ODAC/..) или AnyDAC (имхо он помедленние SDAC'а). Еще можно залить содержимое датасета в ClientDataSet, операция долгая, зато потом при скроле никаких тормозов не будет
  
насчeт первого вопроса - можно воспользоваться стандартным search'ем, после установки FocusedRecordIndex:
DataController.Search.Locate(ColumnIndex, Text)
он и выделит нужный текст в текущей ячейке...
		
		тут имхо проблемы не у грида, а у ADO. Там банальный Locate на большем кол-ве записей будет очень долго идти. Можно конечно выставить GridMode, что-бы данные кешировались, но тогда ты не сможешь проскролить сразу грид до конца, так что лучше взять быстрые компоненты прямого доступа к твоей субд (SDAC/ODAC/..) или AnyDAC (имхо он помедленние SDAC'а). Еще можно залить содержимое датасета в ClientDataSet, операция долгая, зато потом при скроле никаких тормозов не будет
насчeт первого вопроса - можно воспользоваться стандартным search'ем, после установки FocusedRecordIndex:
DataController.Search.Locate(ColumnIndex, Text)
он и выделит нужный текст в текущей ячейке...
Hi! 
Задача в следующем:
есть главная таблица, в которой автоинкрементальное поле является ключом к другим таблицам. На форме есть два грида. Их нужно заполнить до того, как я получу ключ из главной таблицы, сохранив в нее запись. Как можно отобразить в гридах значения без записи их в соответствующие таблицы?
  
СПАСИБО!
		
		Задача в следующем:
есть главная таблица, в которой автоинкрементальное поле является ключом к другим таблицам. На форме есть два грида. Их нужно заполнить до того, как я получу ключ из главной таблицы, сохранив в нее запись. Как можно отобразить в гридах значения без записи их в соответствующие таблицы?
СПАСИБО!
clear2121, ты хочешь средствами cxGrid`а такое провернуть? а смысл.
		
		Люди добрые, подскажите, где скачать ExpressSkins Library для D7 ? Умаялся искать ужо. Если можете ссылку, либо архив, киньте на IceMan_T@mail.ru
		
		X11 
Смысл в том, что если пользователь откажется от ввода, то я все просто забываю. Идея в следующем: имеем ящик, а в нем кучу инструментов. Делаю форму, где пользователь заносит имя ящика, а в гриде перечисляет инструменты. Так вот, ящик еще не записан в таблицу и я не знаю его кода, но инструменты пользователь уже заносит. Если он откажется, то я все забываю, если нет, то сохраняю запись в главной таблице, получаю код и в цикле (думаю так) сохраняю записи из грида. Но как такое провернуть с помощью cxGridа не знаю. Может есть другой механизм?
  
СПАСИБО!
		
		Смысл в том, что если пользователь откажется от ввода, то я все просто забываю. Идея в следующем: имеем ящик, а в нем кучу инструментов. Делаю форму, где пользователь заносит имя ящика, а в гриде перечисляет инструменты. Так вот, ящик еще не записан в таблицу и я не знаю его кода, но инструменты пользователь уже заносит. Если он откажется, то я все забываю, если нет, то сохраняю запись в главной таблице, получаю код и в цикле (думаю так) сохраняю записи из грида. Но как такое провернуть с помощью cxGridа не знаю. Может есть другой механизм?
СПАСИБО!
Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
Предыдущая тема: Язык программирования на русском языке
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.
