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

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



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Версия х.40
Кусок не смогу - очень много всего.
Настройки вью и правда связаны мастер-деталь. Но оно работало очень долгое время, я там ничего не менял.
Мастер tvServ (смотрит на dxMemServ), деталь TvPrep (смотрит на dxMemPrep).
tvServ.KeyFieldNames=RecId;
tvPrep.KeyFieldNames=RecId;
tvPrep.MasterKeyFieldNames=RecId;
tvPrep.DetailKeyFieldNames=servkey;
 
dxMemDataPrep.FieldByName('servkey').AsInteger:=dxMemDataServ.FieldByName('RecId').AsInteger;
Остальные настройки стандартные.
Данные в dxMemPrep добавляются не всегда, т.е. деталь не всегда имеет записи. Но глюк всё равно появляется.
 
Не понимаю даже, в ком проблема: в датасете или во вью. Уже подумываю отказаться от него, сделать в базе таблички....
 

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 12:37 18-11-2009 | Исправлено: brookson, 12:40 18-11-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
brookson
я бы посоветовал (да и сам бы сделал) отказаться от использования поля RecID, а создал бы поля и писал бы туда значения которые мне нужны...

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 12:45 18-11-2009
brookson



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

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 13:00 18-11-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
brookson
ну с индексами тут тоже надо решить, нужны ли они... если объемы данных не большие то зачем?

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 13:19 18-11-2009
sldaac



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
brookson
для начала убери все связи, и проверь добовление данных и обновление их во view
посмотри view - gridmode -?  SyncMode- ?  

Всего записей: 721 | Зарегистр. 15-06-2005 | Отправлено: 13:24 18-11-2009
brookson



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
gridmode = false; syncmode = true
 
Убрал связи и ключи - всё то же самое, на 3-й раз вылетел. Возвращаю назад, мне же нужно, чтоб к мастер-записи показывалась detail, если есть.
Щас попробую пересоздать оба датасета.

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



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

Цитата:
gridmode = false

сделай  = true,  
будет как простой грид...
 
а вообще попробуй kbmMemTable, я когда-то смотрел девовские мемдата,  не помню что, но проблемы было.  

Всего записей: 721 | Зарегистр. 15-06-2005 | Отправлено: 13:37 18-11-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
brookson
Если бы выложили пример, уверен, получили бы решение проблемы намного быстрее.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 14:52 18-11-2009
neznayka3

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
создаю дерево в run-time:

Код:
 
procedure TForm1.Button1Click(Sender: TObject);
var
  Node: TcxTreeListNode;
  ChildNode: TcxTreeListNode;
begin
 
  Node := cxTreeList1.Add;
  Node.Values[tlc_name.Position.ColIndex] := 'Все';
  Node.Values[tlc_id.Position.ColIndex]  := -1 ;
  Node.CheckGroupType:=ncgCheckGroup;
  with ADOQuery1 do
    begin
      open;
      while not eof do
        begin
          ChildNode := Node.AddChild;
          ChildNode.Values[tlc_name.Position.ColIndex]  :=fieldvalues['groups_name'] ;
          ChildNode.Values[tlc_id.Position.ColIndex]  := fieldvalues['id_groups'];
          ChildNode.CheckGroupType:=ncgCheckGroup;
          Next;
        end;
      close;
    end;
end;
у корня дерева "Все" нет checkbox-a. как его получить?

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 14:55 18-11-2009
brookson



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman
Да я понимаю. Но не могу вот так ВЕСЬ проект выложить куда-то.
Сейчас попытаюсь как-то "вырезать" эту форму.

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 15:04 18-11-2009
vladman

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

Цитата:
у корня дерева "Все" нет checkbox-a. как его получить?

Попробуйте указать <YourcxTreeList>.OptionsView.CheckGroups := True;
 
Добавлено:
brookson
Зачем весь проект. Сделайте новое приложение и в нем попытайтесь воспроизвести то что не работает. Если все делается с нуля иногда это помогает более быстро локализовать проблему.

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



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
http://www.speedyshare.com/files/19355627/test.rar
Вот линк.
Суть: добавить в счёт хотя бы одну услугу и сохранить. И так до 3-х раз попробовать.

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 18:32 18-11-2009 | Исправлено: brookson, 18:33 18-11-2009
vladman

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

Цитата:
Вот линк.

Честно говоря, достаточно трудно было понять ваш код и всю логику, которую вы на него возложили, но решить проблему именно с  

Цитата:
Суть: добавить в счёт хотя бы одну услугу и сохранить. И так до 3-х раз попробовать.

вам поможет очистка dxMemDataPrep перед очисткой dxMemDataServ в процедуре  
TF_ORD.AcClearCtrlsExecute. Хотя эти очистки совершенно лишние, исходя из того что вы потом выполняете dxMemDataServ.Close; и dxMemDataPrep.Close;
 
Мое мнение, что-то вы перемудрили в ваших подходах. Весь видимый функционал явно не стоит 1000 строк кода.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 01:44 19-11-2009
sldaac



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

Цитата:
Суть: добавить в счёт хотя бы одну услугу и сохранить. И так до 3-х раз попробовать.

Ну добавляется,... правдя что касается интербйса я выкинкл, по сам код добавленя оставил....   и ни разу ошибки небыло   и комбик я один убрал,  свой набор значений для номера счета сделал

Всего записей: 721 | Зарегистр. 15-06-2005 | Отправлено: 11:16 19-11-2009 | Исправлено: sldaac, 11:17 19-11-2009
brookson



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman
Понимаю Вашу критику. Но всё же - у Вас работал пример?
Я пробовал избавляться от записей просто  
dxMemDataPrep.Close;
dxMemDataServ.Close;
Пробовал удалять по одной, начиная с dxMemDataPrep. У меня всё равно на 3-й раз не отображаются записи в гриде.
 
Добавлено:
Вобщем, закончилось тем, что взял датасеты, смотрящие на таблицы из базы. И всё работает, как надо.
Спасибо за советы и за помощь

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 14:29 19-11-2009 | Исправлено: brookson, 17:33 19-11-2009
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто знает, есть ли у TcxCheckComboBox свойство или функция, возвращающая количество отмеченных элементов?

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

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

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

Цитата:
Понимаю Вашу критику

Да я, собственно, не критиковал, а выражал свое мнение.
Ваш пример у меня вызывал ошибку List index out of bounds при попытке сохранить в счете три услуги. После мелких правок, описанных в прошлом посте, больше ошибок в аналогичном случае не было.
 
Добавлено:
X11

Цитата:
Кто знает, есть ли у TcxCheckComboBox свойство или функция, возвращающая количество отмеченных элементов?

Насколько мне известно - нет. Но это легко узнать из его свойства Value.
Например

Код:
function GetCheckedCount(AValue: Variant): Integer;
var
  i: Integer;
begin
  Result := 0;
  if VarIsNull(AValue) then Exit;
  for i := 7 downto 0 do  //думаю, больше 256 чекбоксов у вас не будет  
    if AValue and (1 shl i) <> 0 then Result := Result + 1;
end;  

 
Вызов - ShowMessage(IntToStr(GetCheckedCount(<YourcxCheckComboBox>.Value)));

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

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

Цитата:
Попробуйте указать <YourcxTreeList>.OptionsView.CheckGroups := True;  

Стоит. если в дизайн-тайм создавать дерево, то работает. а так нет:

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  Node: TcxTreeListNode;
  ChildNode: TcxTreeListNode;
  i: Integer;
begin
  Node := cxTreeList2.Add;
  Node.Values[cxTreeList2Column1.Position.ColIndex] := 'Все';
  Node.CheckGroupType:=ncgCheckGroup;
  for i:=0 to 10 do
    begin
      ChildNode := Node.AddChild;
      ChildNode.Values[cxTreeList2Column1.Position.ColIndex]  :=inttostr(i) ;
      ChildNode.CheckGroupType:=ncgCheckGroup;
    end;
end;
на devexpress.com ответа не нашел
 
upd. плохо искал
Код:
 cxTreeList2.Root.CheckGroupType:=ncgCheckGroup;

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 07:26 20-11-2009 | Исправлено: neznayka3, 09:41 20-11-2009
Chukotka

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

Цитата:
Код:
function GetCheckedCount(AValue: Variant): Integer;
...
  for i := 7 downto 0 do  //думаю, больше 256 чекбоксов у вас не будет  
...
 

Небольшая неточность - 8, а не 256.

Всего записей: 428 | Зарегистр. 01-11-2006 | Отправлено: 07:41 20-11-2009
brookson



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

Цитата:
Ваш пример у меня вызывал ошибку List index out of bounds при попытке сохранить в счете три услуги. После мелких правок, описанных в прошлом посте, больше ошибок в аналогичном случае не было.

Хм... В программировании чудес не бывает. Если у Вас еще остался этот работающий пример, нетрудно выложить куда-нибудь?
Буду очень признателен.

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 10:02 20-11-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