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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



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

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




 
DLL со скинами из библиотеки dxSkins, автор Ziltoid Подробнее... линк обновлен
Продолжение, Первая часть, вторая часть, третья часть

Полезные утилиты:
DxAutoInstaller v2.1.10 Простой и удобный тул для установки девок из исходников
https://mega.nz/#!aJRQzSqI!N7RgfcG1tfF45Z3OgcmBDHT_ZcWlIgJQ5eHHgQ9VupE

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:48 31-12-2009 | Исправлено: G787, 21:12 29-07-2018
LadyOfWood

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

Цитата:
я так понял, что человек хочет видеть первую строку, которая сейчас топавая в гриде...  
 
А я понял, что первая показанная в зависимости от фильтрации и сортировки, но в любом случае что думал ТС знает только он

Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 19:05 02-03-2012
salexn1



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LadyOfWood
Ждемс фидбэка от вопрошающего!

Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 20:18 02-03-2012
delover

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

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 20:26 02-03-2012 | Исправлено: delover, 20:27 02-03-2012
Corsairs

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
Читаем пункт 7 вот тут: http://forum.ru-board.com/topic.cgi?forum=35&topic=47325&start=0&limit=1&m=3#1
Скачиваем по ссылке (там же) DelphiComp Reader, указываем необходимую инфу (т.е. адрес почтового ящика обменника, и ник на форуме), и пользуемся...

Всего записей: 569 | Зарегистр. 30-06-2006 | Отправлено: 21:11 02-03-2012
simplecs

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я поясню насчет первой строки в "гриде".
Мне на самом деле не Важно - первая или вторая - т.к. может быть любая. Просто я к гриду хочу прицепить кнопки "Вырезать" и "Вставить". И соответственно убирать и пастить данные. Но  делать это можно не во все колонки. Скажем 1,2 столбец - данные вставляются (или очищаются при "Вырезать") а третья у меня ReadOnly, а в четвертую опять вставляются. Соответствено моя идея в том, чтобы перебрать все ячейки которые войдут в диапазон и которые представлены на экране, а потом уже поставлять в них данные, а ячейки могут быть соответственно отфильтрованы и отсортированы.

Всего записей: 27 | Зарегистр. 20-10-2010 | Отправлено: 23:18 02-03-2012
LadyOfWood

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

Цитата:
. Просто я к гриду хочу прицепить кнопки "Вырезать" и "Вставить". И соответственно убирать и пастить данные.

Ну а чего тогда голову морочить
<TableView>.ViewData.Controller.FocusedItem
<TableView>.ViewData.Controller.FocusedItemIndex
<TableView>.ViewData.Controller.FocusedRecord
<TableView>.ViewData.Controller.FocusedRecordIndex
Controller спрятан в секции protected.

Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 01:07 03-03-2012
ramis1975

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

Всего записей: 38 | Зарегистр. 29-12-2005 | Отправлено: 08:59 03-03-2012 | Исправлено: ramis1975, 09:39 03-03-2012
wasilissk

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ramis1975
Если только вешаться на событие редактирования записи подсчитывать переводы строк и вручную увеличивать высоту.

Всего записей: 293 | Зарегистр. 25-12-2006 | Отправлено: 11:41 03-03-2012
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос по TcxDBTreeList
Нужно перемещать выделенный узел со всеми своими дочерними узлами на уровень вверх или вниз.
Есть код, которые это делает, но в базе данных изменения не отображаются.
 

Код:
 
procedure TreeMoveUp(cxDBTreeList: TcxDBTreeList);
var
  ANode: TcxDBTreeListNode;
  AParentNode: TcxTreeListNode;
begin
  DM.fibDB.SQLLogger.ActiveLogging := true;
  ANode := cxDBTreeList.FocusedNode as TcxDBTreeListNode;
  if ANode <> cxDBTreeList.Root then
  begin
    AParentNode := ANode.Parent;
    if AParentNode <> nil then
      if AParentNode.Parent <> nil then
        ANode.MoveTo(AParentNode.Parent, tlamAddChild)
      else
        ANode.MoveTo(nil, tlamAdd);
  end;
  ANode.Focused := true;
  cxDBTreeList.SetFocus;
end;
 
procedure TreeMoveDown(cxDBTreeList: TcxDBTreeList);
var
  ANode: TcxDBTreeListNode;
  APrevChildNode, ANextChildNode, AParentNode: TcxTreeListNode;
begin
  DM.fibDB.SQLLogger.ActiveLogging := true;
  ANode := cxDBTreeList.FocusedNode as TcxDBTreeListNode;
  if ANode <> cxDBTreeList.Root then
  begin
    AParentNode := ANode.Parent;
    ANextChildNode := AParentNode.GetNextChild(ANode);
    APrevChildNode := AParentNode.GetPrevChild(ANode);
    if ANextChildNode <> nil then
      ANode.MoveTo(ANextChildNode, tlamAddChild)
    else
      if APrevChildNode <> nil then
        ANode.MoveTo(APrevChildNode, tlamAddChild);
  end;
  ANode.Focused := true;
  cxDBTreeList.SetFocus;
end;
 

 
Узел перемещается, это видно визуально в дереве.
 
Дерево привязано к FibDataSet, все SQL заполнены.
В дереве тоже заполнены все свойсва: PARENTField, KeyField.
 
или дерево само по себе не дёргает датасет и нужно всё самому ручками в базе сделать?

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 13:43 03-03-2012
mdid

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
такой штукой не занимался но...стоят ли галки на SyncMode и ImmediatePost?

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 14:57 03-03-2012
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На SyncMode - да, а ImmediatePost у дерева отсутствует.
 
Добавлено:
Я так понимаю, что нужно всё-таки ручками?
http://www.devexpress.com/Support/Center/p/Q242143.aspx

Цитата:
This behavior is by design. The MoveTo procedure doesn't change the parentID field's values; it reorders nodes at the level of the TreeList.
If you want save the new nodes order, you should change the corresponding values in the dataset.  


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

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

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

Цитата:
или дерево само по себе не дёргает датасет и нужно всё самому ручками в базе сделать?

Ихмо, стандартный dataset просто не содержит функций для поддержки данных операций, поэтому ничего и не дергается. Для TcxTreeListCustomDataSource есть отдельный метод для перемещения  

Код:
 
procedure NodeMoveTo(ARecordHandle, AttachRecordHandle: TcxDataRecordHandle;       AttachMode: TcxTreeListNodeAttachMode; IsCopy: Boolean);
 

Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 16:40 03-03-2012
X11



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

Код:
procedure TreeMoveUp(cxDBTreeList: TcxDBTreeList);
var
  ANode: TcxDBTreeListNode;
begin
  ANode := TcxDBTreeListNode(cxDBTreeList.FocusedNode);//выделенный узел, который нужно поднять на уровень вверх
  if ANode.ParentKeyValue = 0 then exit;//нулевой уровень, выше уже некуда переносить
 
  if ANode.Parent <> nil then//проверяем существование родителя
    with TpFibDataSet(cxDBTreeList.DataController.DataSource.DataSet) do
    begin
      DisableControls;
      Edit;
      //TcxDBTreeListNode(ANode.Parent).ParentKeyValue - значение ключевого поля нового родителя
      FBN('PARENT').Value := TcxDBTreeListNode(ANode.Parent).ParentKeyValue;//нужно переместить на уровень выше своего родителя.
      FBN('ID').Value := TcxDBTreeListNode(ANode).KeyValue;//какой узел перемещаем
      Post;
      EnableControls;
    end//with
  else
    with TpFibDataSet(cxDBTreeList.DataController.DataSource.DataSet) do
    begin//если у родителя нет родителя, то перемещение происходит со 1го на нулевой уровень, а значит parent = 0
        DisableControls;
        Edit;
        FBN('PARENT').Value := 0;//перемещаем на самый верхний уровень
        FBN('ID').Value := TcxDBTreeListNode(ANode).KeyValue;//какой узел перемещаем
        Post;
        EnableControls;
    end;//with
 
  ANode.Focused := true;
  cxDBTreeList.SetFocus;
end;
 
procedure TreeMoveDown(cxDBTreeList: TcxDBTreeList);
var
  ANode: TcxDBTreeListNode;
  APrevChildNode, ANextChildNode: TcxTreeListNode;
begin
  ANode := TcxDBTreeListNode(cxDBTreeList.FocusedNode);
  APrevChildNode := ANode.Parent.GetPrevChild(ANode);//вышестоящий  равноправный уровень
  ANextChildNode := ANode.Parent.GetNextChild(ANode);//нижестоящий равноправный уровень
 
  //в первую очередь стараемcя прилепиться к нижестоящему уровню в качестве дочернего узла
  if ANextChildNode <> nil then
      with TpFibDataSet(cxDBTreeList.DataController.DataSource.DataSet) do
      begin
        DisableControls;
        Edit;
        //TcxDBTreeListNode(ANode.Parent).ParentKeyValue - значение ключевого поля нового родителя
        FBN('PARENT').Value := TcxDBTreeListNode(ANextChildNode).KeyValue;//нужно переместить на уровень ниже своего родителя.
        FBN('ID').Value := TcxDBTreeListNode(ANode).KeyValue;//какой узел перемещаем
        Post;
        EnableControls;
      end//with
    else
      if APrevChildNode <> nil then
        with TpFibDataSet(cxDBTreeList.DataController.DataSource.DataSet) do
        begin
          DisableControls;
          Edit;
          //TcxDBTreeListNode(ANode.Parent).ParentKeyValue - значение ключевого поля нового родителя
          FBN('PARENT').Value := TcxDBTreeListNode(APrevChildNode).KeyValue;//нужно переместить на уровень ниже своего родителя.
          FBN('ID').Value := TcxDBTreeListNode(ANode).KeyValue;//какой узел перемещаем
          Post;
          EnableControls;
        end;//with
 
 
 
  ANode.Focused := true;
  cxDBTreeList.SetFocus;
end;
 

 
Добавлено:

Цитата:
или дерево само по себе не дёргает датасет и нужно всё самому ручками в базе сделать?

дело в ом, что для Drag`N`Drop никаких особых усилий не прилагал, написал только одну строку:   Accept := Sender = Source;
всё, Drag`N`Drop работает, я к датасетам ручками не лезу, дерево всё само делает за меня, вот я и подумал, что перемещение по уровням тоже немного автоматизировано.

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 17:49 03-03-2012
simplecs

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Такая проблема в CxGrid!
Допустим пользователь применил фильтр на первый столбец : показывать только те записи которые содержат «111». Пусть высветилось 5 записей. Тогда, если он редактирует, с кажем первую и изменяет ее, то поле изменения так как она ужк не равна 111, то автоматически сразу же скрывается. Аналогично и с сортировкой -  допустим он отсортировал данные, а потом изменил какую либо запись. CxGrid – автоматически переносит ее в нужное место. Так вот мне этого не нужно! Я хочу чтобы даже при изменении таблица оставалась в том виде, котором была после фильтрации и группировки. А уже потом, после обновления повторного применяла все эти настройки. Где-то должно быть это свойство, но я не могу его найти!

Всего записей: 27 | Зарегистр. 20-10-2010 | Отправлено: 20:41 03-03-2012
X11



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

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

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В простом гриде DBGrid я могу раскрашивать ячейки в зависимости от значения в этой ячейки. Это удобно для пользователя. Фрагмент кода:

Цитата:
 
void __fastcall TForm1::DBGrid3DrawColumnCell(TObject *Sender, const TRect &Rect,
 int DataCol, TColumn *Column, TGridDrawState State)
{
String FName=L"Доходы";
if (Column->Field->FieldName == FName)
{
//min мин. значение к колонке
//max максимальное значение к колонке  
  DBGrid3->Canvas->FillRect(Rect);
  DBGrid3->Canvas->Brush->Color = 0x99FF99;
  DBGrid3->Canvas->Rectangle(Rect.Left, Rect.Top, Rect.Left + Rect.Width()*
  (Column->Field->AsFloat - min)/(max - min),Rect.Bottom);
  DBGrid3->Canvas->Brush->Style = bsClear;
  DBGrid3->Canvas->TextOutA(Rect.Left, Rect.Top, Column->Field->AsString);
}
//и т.д.
 

 
Подскажите, пожалуйста, в каком событии cxGrid, и как такое можно реализовать?

Всего записей: 282 | Зарегистр. 27-02-2007 | Отправлено: 23:22 03-03-2012
X11



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

Код:
 
procedure TfmArendaSearch.dbgArendaStylesGetContentStyle(
  Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
  AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
Var
  Item: TcxCustomGridTableItem;
begin
  Item := TcxCustomGridTableItem(Sender.Tag);
  if AItem = nil then exit;
 
  if AItem.Index = dbgArendaTYPE_NAME.Index then
    if not VarIsNull(чего-нибудь можно проверить) then
    begin
      if not Assigned(AStyle) then
        AStyle := TcxStyle.Create(Sender);
      AStyle.TextColor := clBlue;
    end;
end;
 


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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 00:21 04-03-2012 | Исправлено: X11, 00:30 04-03-2012
Lena44



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Постараюсь быть чуть подробнее. Мне надо раскрасить значения в ячейке в зависимости от номинала, который есть в ячейке. Подробнее на рисунке: http://img40.imageshack.us/img40/3410/gifimb.gif

Всего записей: 282 | Зарегистр. 27-02-2007 | Отправлено: 14:40 04-03-2012
andreybear

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

Всего записей: 132 | Зарегистр. 21-07-2011 | Отправлено: 08:06 05-03-2012
mdid

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andreybear
не вводите в заблуждение...когда то сами дефки просили избегать этого метода...
Lena44
событие OnGetContentStyle  есть как у всей вьюхи так и отдельной колонки...если вам надо ячейка то обрабатывайте OnGetContentStyle  именно колонки

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 09:54 05-03-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 4)


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru