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

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

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

ShIvADeSt (31-12-2009 04:49): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=10884  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

golkanavt



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

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




 
Сами прирученные компоненты частенько приходят на водопой сюда
 
DLL со скинами из библиотеки dxSkins, автор Ziltoid Подробнее... линк обновлен
Продолжение, Первая часть, вторая часть

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 10:31 07-02-2009 | Исправлено: vladman, 14:36 24-10-2009
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f3ka, я так понял, что ему нужно  Incremental Search, только не с начала слова, а поиск по части слова.
 
Вопрос по суммированию и фильтрации.

 
Как правильно бы сделать так, чтобы в гриде отобразить записи только у которых COUNT > какого-либо числа?
 
Добавлено:
В частности где count > 1

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 16:47 22-12-2009
f3ka

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

Цитата:
например введя "иво" бегунок должен спозиционироваться на первое слово в столбце начинающееся на "иво" или на слове которое содержит в себе "иво"

а для вхождения надо обрабатывать напильником

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 16:54 22-12-2009
X11



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

Цитата:
а для вхождения надо обрабатывать напильником  

да,  бы сделал на уровне SQL + Locate
1. Ищем ID записи
select id from table1 where pole1 like %строка_поиска%
(выполнят запрос следует с некоторой задержкой между нажатиями клавиш, чтобы дать пользователю время набрать полностью желаемое сочетание символов, желательно задержку сделать настраиваемой)
 
Позиционируем
2. DataSet.locate('ID', ID, []);

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 17:16 22-12-2009
kii

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть вопрос
Предположем, что есть отфильтрованный набор данных в QGrid 6  
-> можно ли этот набор вывести в отчет с помощью fast-report ...  и КАК?

Всего записей: 137 | Зарегистр. 11-02-2004 | Отправлено: 17:22 22-12-2009
X11



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

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 17:46 22-12-2009 | Исправлено: X11, 17:47 22-12-2009
vladman

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

Цитата:
P.S. На всякий случай: использую D7, "проблемный" принтер - HP Color LaserJet 2600n, второй - Kyocera 3050

Какая версия DevExpress? Как-то был случай что на конкретном принтере в какой-то версии что-то подобное выскакивало. Обновление решило проблему.
 
Добавлено:
SIgor33

Цитата:
Подскажите как сделать поиск части слова в cxgrid не прибегая к фильтрации или изменении параметров запроса?

Если с поиском в начале слова/фразы не возникает трудностей (используйте, как вам уже советовал f3ka, Incremental Search), то с поиском искомой подстроки внутри слова/фразы придется повозиться. Некий Tony Wood даже предлагал DevExpress свое решение. Подробнее: Suggestion: Add ability to perform IncSearch using the entire cell text (not only the beginning of text)
 
 
Добавлено:
X11

Цитата:
Как правильно бы сделать так, чтобы в гриде отобразить записи только у которых COUNT > какого-либо числа? В частности где count > 1

По-моему уже как-то обсуждали эту проблему. На данный момент средствами QuantumGrid решить подобную задачу, опять же по-моему, не представляется возможным. Именно ваш случай уже обсуждался в саппорте DevExpress: Filter grid based on group summary value

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 20:41 22-12-2009
vladman

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

Цитата:
Предположем, что есть отфильтрованный набор данных в QGrid 6  
-> можно ли этот набор вывести в отчет с помощью fast-report ...  и КАК?

Можно. Как - см. ниже.
X11

Цитата:
такой же вопрос я задавал в разделе по FastReport.  Но ответа не дали ... короче как бы ректально получается...

Ну почему ректально, вполне даже работоспособно и несложно. Например:

Код:
var
  i, j: Integer;
begin
  <YourdxMemData>.CreateFieldsFromDataSet(<YourcxGridDBTableViewSource>.DataController.DataSource.DataSet);
  <YourdxMemData>.Active := True;
  for i := 0 to <YourcxGridDBTableViewSource>.DataController.FilteredRecordCount - 1 do
    begin
      <YourdxMemData>.Append;
      for j := 0 to <YourcxGridDBTableViewSource>.ColumnCount - 1 do
        <YourdxMemData>.FieldByName(<YourcxGridDBTableViewSource>.Columns[j].DataBinding.FieldName).Value :=
          <YourcxGridDBTableViewSource>.DataController.Values[<YourcxGridDBTableViewSource>.DataController.FilteredRecordIndex[i], j];
      <YourdxMemData>.Post;
    end;
end;

В результате - <YourdxMemData> содержит набор данных для вашего fast-report.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 23:10 22-12-2009
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f3ka
Он хочет, чтобы не только по началу слова искать.
 
SIgor33
Насколько я помню, такой поиск может быть реализован только самостоятельно.
Нужно пробежаться циклом по записям и сделать поиск по строке. Что-то типа такого:

Код:
 
        for i := 0 to View1.ViewData.RecordCount - 1 do
        begin
                where:=View1.ViewData.Records[i].DisplayTexts[View1MyColumn.Index];
                // DisplayTexts нужно брать, чтобы поиск шел по отображаемым значениям лукапов, например
                // дальше ищите в where
        end;
 

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 23:16 22-12-2009
kii

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman
Премного благодарен !
Нечто подобное я и преполагал, но хотелось бы на прямую без промежуточного DataSet.

Всего записей: 137 | Зарегистр. 11-02-2004 | Отправлено: 08:28 23-12-2009
SIgor33

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
спасибо всем за советы.
Насчет поиска по началу слова у меня не возникало проблем.
Я думал можно не изпользуя sql все сделать. Я то использовал при нажатие клавиши динамически менял sql запрос.

Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 09:23 23-12-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
afiget
мое сообщение внимательно прочитано? для поиска по началу строки достаточно Incremental Search, а далее мои слова

Цитата:
для вхождения надо обрабатывать напильником  

не надо дважды повторять, что поиск не только по началу строки...

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 10:17 23-12-2009
baxram

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

Цитата:
Какая версия DevExpress?  

v42. Считаете, нужно обновить до более свежей?

Всего записей: 2 | Зарегистр. 02-12-2009 | Отправлено: 10:25 23-12-2009
fortezza

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужно чтобы при выборе поля в cxDBLookUpComboBox1 в cxGrid1 отображались определенные данные
пример.  
есть таблицы:
 
table
id    name        id_group
1    яблоко        1
2    помидор    2
3    малина        3
4    груша        1
5    кортошка    2
 
table_gr
id    gr_name
1    фрукт
2    овощ
3    ягода
 
Соответственно ZQuery1, DS1,
ZQuery1.SQL.Text :=  
select * from table where "id_group" = :id_group;
 
ZQuery2, DS2
ZQuery2.SQL.Text :=  
select "id" as "id_group", "gr_name"  from table_gr;
 
Плдключаю так:
1. cxGrid1.cxGridDBTableView1  
DataSource := DS1
 
2. cxDBLookUpComboBox1  
DataSource := DS1
DataField := id_group;
ListSource := DS2
ListFieldNames := gr_name;
KeyFieldNames := id_group;
 
 
Соответственно когда в cxDBLookUpComboBox1 выбираю запись в запрос ZQuery1.SQL должен подставляться параметр id_group. Но этого не происходит, расскажите как правильно настроить компоненты. можно это сделать без программного кода?
 
компоненты доступа к данным Zeos

Всего записей: 98 | Зарегистр. 20-10-2009 | Отправлено: 10:31 23-12-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fortezza
надо бы поподробнее описать задание, а то из этого не понятно, хотите чтобы в поле id_group таблицы table отображалась расшифровка номера или же хотите чтобы таблица table фильтровалась согласно выбранной группе из таблицы table_gr?

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 10:35 23-12-2009
maratea

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
привет еще раз. Меня с моим экспортом все проигнорили, ну и ладно)) я смирилась с ExportGridToExcel, так что теперь вопрос про него. Эта функция умеет экспортировать только данные, которые в гриде хранятся (AValue)? нет ли способа экспортировать отображаемые данные (AText)?
 
Вот например у меня данные приходят как integer, а я потом этот из этого integer делаю красивую строчку ('Секунд: ...') и хочу, чтобы именно эта строчка попала в Excel.

Всего записей: 14 | Зарегистр. 17-12-2009 | Отправлено: 10:39 23-12-2009 | Исправлено: maratea, 10:42 23-12-2009
fortezza

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

Всего записей: 98 | Зарегистр. 20-10-2009 | Отправлено: 10:46 23-12-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fortezza
тогда надо брать не cxDBLookUpComboBox, а просто cxLookUpComboBox и вешать обработчик на изменение  значения в нем (OnEditValueChanged), в нем например формировать запрос для фильтрации...
или как вариант сделать Master-Detail, ZQuery2 - master, ZQuery1 - detail... В DS1 выставить MasterDataSource = DS2, в запрос ZQuery1 насколько я помню надо в качестве параметра написать :MAS_id_group, cxLookUpComboBox.Properties в настройках выставить ListSource, KeyFieldNames, ListFieldNames, ListOptions.SyncMode = True... вроде должно заработать...

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 11:04 23-12-2009 | Исправлено: f3ka, 11:05 23-12-2009
fortezza

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

Всего записей: 98 | Зарегистр. 20-10-2009 | Отправлено: 11:29 23-12-2009
vladman

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

Цитата:
Нечто подобное я и преполагал, но хотелось бы на прямую без промежуточного DataSet.

Без промежуточного, скорее всего, не получится. Может FR что-то и придумал в этом плане, но мне это не известно - FR не использую. А почему, если не секрет, не хочется использовать промежуточный DataSet?
baxram

Цитата:
v42. Считаете, нужно обновить до более свежей?

Думаю, да.
maratea

Цитата:
Меня с моим экспортом все проигнорили

Ну почему же проигнорировали, скорее всего вы пропустили ответ - http://forum.ru-board.com/topic.cgi?forum=33&topic=10123&start=2220#19

Цитата:
нет ли способа экспортировать отображаемые данные (AText)?


Цитата:
Вот например у меня данные приходят как integer, а я потом этот из этого integer делаю красивую строчку ('Секунд: ...') и хочу, чтобы именно эта строчка попала в Excel.

Многое зависит от того как (в каком обработчике) вы делаете эту красивую строчку. Если в onCustomDrawCell - то грид ничего не знает о ваших изменениях, если в OnGetDisplayText - то попробуйте в вызове процедуры экспорта (ExportGridToExcel) установить параметр AUseNativeFormat = False.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 11:33 23-12-2009
X11



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

Цитата:
А почему, если не секрет, не хочется использовать промежуточный DataSet?  

Вот у меня, например, идёт отправка выделенных записей cxGrid`а в промежуточный датасет (девовский), тоже привязанный к другому cxGrid`у.
Оооочень медленно. В dxMemData уже все поля созданы в дизайне.
 
Вот код, может я что-то забыл?

Код:
 
procedure TfmMain.OtborByCxGrid(FromGrid, ToGrid:TcxGridDBTableView);
Var
 i, i2, f:Integer;
 DataSet1:TDataset;
 cxGridDBColumn :TcxGridDBColumn;
begin
  if (FromGrid = nil) or (ToGrid = nil) then Exit;
 
  Screen.cursor := crSQLWait;
  with FromGrid.DataController.DataSet do
  try
    if not ToGrid.DataController.DataSource.DataSet.active then ToGrid.DataController.DataSource.DataSet.Open;
    DisableControls;
    DataSet1 := ToGrid.DataController.DataSource.DataSet;
    for i:=0 to FromGrid.Controller.SelectedRecordCount-1 do begin
      //не пихаем в таблицу отбора одинаковые записи
      i2 := FromGrid.Controller.SelectedRecords[i].Values[FromGrid.GetColumnByFieldName('ID').Index];
      if DataSet1.Locate('ID', i2,[] ) then Continue;
 
      DataSet1.Append;
      for f := 0 to DataSet1.FieldCount-1 do begin
        cxGridDBColumn := FromGrid.GetColumnByFieldName(DataSet1.Fields[f].FieldName);
        if cxGridDBColumn <> nil then
          DataSet1.Fields[f].Value := FromGrid.Controller.SelectedRecords[i].Values[cxGridDBColumn.Index];
      end;
      DataSet1.post;
    end;//for i:=0 to FromGrid.DataController.GetSelectedCount-1 do
     finally
    EnableControls;
    Screen.cursor := crDefault;
  end;//try
end;
 


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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 11:44 23-12-2009
   

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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 3)
ShIvADeSt (31-12-2009 04:49): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=10884


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru