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

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



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

Цитата:
В дизайнтайме линки автоматически создадутся.

 
Ничего  не понял про них .  
Создаются  по непонятному принципу .
 
Идею  Линков  я понимаю  так .  
 Создаю  Линк .  Пишу  OnCliсk  на Link  
К   dxBarButton   цепляю  LINK
 
А  у  dxBarButton  Вобще  свойства linkItem нет !!!
Зато  есть у  dxSusItem .  Нехрена контейнеру !! ItemLINK ???!!
 
 
 
 

Всего записей: 829 | Зарегистр. 03-06-2009 | Отправлено: 09:35 18-01-2011
marser

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

Цитата:
marser, с чего бы это? Код взят из рабочего проекта.

Еще раз проверил. При NewItemRow.Visible := True (наверху весит строчка: "Click here to add a new row") положительного результата получить не удалось.  
 
Добавлено:
JohnSilver182

Цитата:
Создаю  Линк .  Пишу  OnCliсk  на Link
 
У TdxBarItemLink события OnClick нет, есть у TdxBarItem - dxBarButton.  

Цитата:
К   dxBarButton   цепляю  LINK

Наоборот. К линку цепляется dxBarButton:
dxBarItemLink.Item := dxBarItem

Всего записей: 398 | Зарегистр. 29-03-2007 | Отправлено: 10:09 18-01-2011 | Исправлено: marser, 10:35 18-01-2011
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пример организации панели кнопок как у 1С в многодокументальном приложении (MDI).
 
 
На главной форме внизу лежит Bar1 типа TdxBar  
 
Создание и показ кнопки на панели. Этот код вызывается при создании каждой дочерней формы

Код:
procedure TfmMain.CreateFormButton(form1:TForm);
var
  ABar : TdxBar;
  NewButton : TdxBarButton;
  NewItemLink : TdxBarItemLink;
begin
   inc(iButtonsCount);
   ABar := Bar1;
   NewButton := TdxBarButton.Create(self);
   NewItemLink := ABar.ItemLinks.Add;
   NewItemLink.Item := NewButton;
   NewItemLink.Item.Tag := form1.Handle;
   NewButton.Tag          := form1.Handle;
   NewButton.Name         := 'dxButton'+IntToStr(NewButton.Tag);
   NewButton.Caption      := form1.Caption + '[' + IntToStr(iButtonsCount) + ']';
   NewButton.Hint         := form1.Caption;
   NewButton.OnClick      := dxBarButtonClick;
   NewButton.ButtonStyle  := bsChecked;
   NewButton.Down         := true;
   NewButton.PaintStyle   := psCaptionGlyph;
   NewButton.GroupIndex   := 1;
   NewButton.Glyph.Width  := 16;//GetSystemMetrics(SM_CXSMICON);
   NewButton.Glyph.Height := 16;//GetSystemMetrics(SM_CYSMICON);
   NewButton.Glyph.Canvas.Draw(0,0,form1.Icon);
   ABar.Control.RepaintBar;
end;

 
пример использования

Код:
procedure TfmArrival.FormCreate(Sender: TObject);
begin
  fmMain.CreateFormButton(self);
end;

т.е. на каждую форму вешаем код создания кнопки ( fmMain.CreateFormButton(self))
 
Код удаления кнопки с панели при закрытии формы

Код:
procedure TfmMain.DeleteFormButton(form1:TForm);
Var
 i:integer;
begin
  for I := 0 to Bar1.ItemLinks.Count - 1 do
    if Bar1.ItemLinks[i].Item is TdxBarButton then
      if TdxBarButton(Bar1.ItemLinks[i].Item).Tag = form1.Handle then begin
        Bar1.ItemLinks[i].Item.Free;
        Break;
      end;
end;

 
Пример использования (код цепляем на событие закрытия каждой дочерней формы)

Код:
procedure TfmArrival.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  fmMain.DeleteFormButton(self);
  Action    := caFree;
  fmArrival := nil;
end;

 
 
Код подсвечивания кнопки активного окна, тоже цепляем на событие активации каждой дочерней формы

Код:
procedure TfmMain.SetDownFormButton(form1:TForm);
Var
 i:integer;
begin
  for I := 0 to Bar1.ItemLinks.Count - 1 do
    if Bar1.ItemLinks[i].Item is TdxBarButton then
      if TdxBarButton(Bar1.ItemLinks[i].Item).Tag = form1.Handle then begin
        TdxBarButton(Bar1.ItemLinks[i].Item).Down := false;
      end;
  for I := 0 to Bar1.ItemLinks.Count - 1 do
    if Bar1.ItemLinks[i].Item is TdxBarButton then
      if TdxBarButton(Bar1.ItemLinks[i].Item).Tag = form1.Handle then begin
        TdxBarButton(Bar1.ItemLinks[i].Item).Down := true;
        break;
      end;

 
Пример использования

Код:
procedure TfmArrival.FormActivate(Sender: TObject);
begin
  fmMain.SetDownFormButton(self);
end;

 
 
В секции private главной формы

Код:
  private
    { Private declarations }
    iButtonsCount:integer;
    procedure dxBarButtonClick(Sender: TObject);

 
Код который будет выполняться при нажатии на кнопку на панели

Код:
procedure TfmMain.dxBarButtonClick(Sender: TObject);
var
  lWinControl: TWinControl;
begin
  lWinControl := FindControl((sender as TdxBarButton).Tag);
  if Assigned(lWinControl) and (lWinControl is TForm) then
    TForm(lWinControl).BringToFront;
end;

 
 
При создании главной формы

Код:
procedure TfmMain.FormCreate(Sender: TObject);
begin
  iButtonsCount := 0;
end;


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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 11:08 18-01-2011
kirdub

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день.  
Не подскажите как можно выйти из режима редактирования ячейки cxGrida.  
 
Ситуация такая.
У меня на поле висит много обработчиков. и когда я встаю на ячейку попадаю в режим редактирования ячейки. дальше если начать прокручивать грид колесиком. происходят тормоза. необходимо перед прокруткой выходить из режима редактирования и спокойно прокручивать грид.
пробовал в событии OnMouseWheel делать Post, но не помогает. и ни как не могу найти как можно выйти из редактирования

Всего записей: 10 | Зарегистр. 21-04-2010 | Отправлено: 12:44 18-01-2011
marser

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kirdub
Попробуйте Properties.UseMouseWheel := False

Всего записей: 398 | Зарегистр. 29-03-2007 | Отправлено: 12:51 18-01-2011
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может так?
http://www.sql.ru/Forum/actualthread.aspx?bid=20&tid=769490&hl=
 
Добавлено:
Спрятать редактор:

Код:
<View>.Controller.EditingController.HideEdit := True;


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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 12:58 18-01-2011
kirdub

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11, большое спасибо получилось.

Всего записей: 10 | Зарегистр. 21-04-2010 | Отправлено: 13:12 18-01-2011
alexander315435

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как то можно в ribbonPageGroup добавить элемент не являющейся BarItem, допустим GaugeControl. Вообщем хочется разместить его в ribbonControl и не знаю как? Возможно можно добавить какой то barItem в который потом добавить GaugeControl.

Всего записей: 9 | Зарегистр. 03-12-2010 | Отправлено: 16:20 18-01-2011
marser

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

Всего записей: 398 | Зарегистр. 29-03-2007 | Отправлено: 16:36 18-01-2011 | Исправлено: marser, 16:45 18-01-2011
alexander315435

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
marser, спасибо, а в winforms как аналогичный компонент называется, сори, что сразу не сказал что для winforms.

Всего записей: 9 | Зарегистр. 03-12-2010 | Отправлено: 17:48 18-01-2011
TechnoDreamer

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

Цитата:
Еще раз проверил. При NewItemRow.Visible := True (наверху весит строчка: "Click here to add a new row") положительного результата получить не удалось.  

Ну не знаю, что там не получается, а у меня работает  То что OnEditKeyDown и OnKeyDown разные события учитываете?  Может конечно там и какое нибудь свойство мешает из миллиона  имеющихся, в них сам черт ногу сломит. Но насколько я понимаю DataController просто вызывает соответствующие методы датасета? Так чем тогда NewRow может мешать... У меня есть и строка и по клавише "вниз" добавление - всё пашет без проблем. Актуально для bound mode, с другими никогда не работал.
 
P.S. Это кстати напомнило мне о том, что надо сделать еще проверку на то, заполнена ли последняя запись.
 
P.P.S. Сделать для вас тестовый пример что ли? Только что то лениво... пусть kniazkinP ответит, если у него не пашет тогда сделаю.

Всего записей: 259 | Зарегистр. 01-06-2008 | Отправлено: 23:19 18-01-2011
marser

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

Цитата:
marser, спасибо, а в winforms как аналогичный компонент называется

Незнаю, c WinForms не работаю.  
 
TechnoDreamer

Цитата:
То что OnEditKeyDown и OnKeyDown разные события учитываете?

Еще как учитываю.

Цитата:
Может конечно там и какое нибудь свойство мешает из миллиона  имеющихся, в них сам черт ногу сломит

Я пробовал не на готовом проекте, а создал тестовый. Так что почти всё по дефолту.

Цитата:
Но насколько я понимаю DataController просто вызывает соответствующие методы датасета?

Вызывать то он вызывает, только потом Cancel проходит. Кстати, попробывал не на DB, а на обыкновенном гриде (cxGridTableView). Тоже самое.  

Цитата:
Сделать для вас тестовый пример что ли?

Спасибо, не стоит. У меня к этой задаче больше "спортивный" интерес, чем практический. Если понадобится, тогда и буду основательно разбираться. Интересно, а как это визуально выглядит? Добавляется вниз грида новая строка для редактирования (как и без NewItemRow), или курсор просто перепрыгивает в строку NewItemRow?

Всего записей: 398 | Зарегистр. 29-03-2007 | Отправлено: 09:03 19-01-2011 | Исправлено: marser, 09:11 19-01-2011
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос по cxGrid и типу полей (TcxCheckBox).
Предисловие.
На форме есть 2 грида.
У обоих есть поле 'DELETED'. В первом датасете это полей типа String, а во втором типа Boolean.
 
В обоих гридах сделаны соответствующие настройки и в полях выводятся чекбоксы.
 
Есть код в событии OnGetContentStyle. Один код на оба грида.
В чём проблема. Проблема в том, что не хочется указывать два разных условия  для определения, какого именно типа столбец.
Это видно ниже из кода: if Item.DataBinding.ValueType = ... then
 

Код:
 
procedure TfmApartSearch.dbgApartStylesGetContentStyle(
  Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
  AItem: TcxCustomGridTableItem; var AStyle: TcxStyle);
Var
 Item: TcxCustomGridTableItem;
begin
 //если запись удалена, то выводим красным
 
 Item := TcxGridDBTableView(Sender).DataController.GetItemByFieldName('DELETED');
 
 if Item = nil then exit;
 
 if Item.DataBinding.ValueType = 'Boolean' then
   if (not VarIsNull(ARecord.Values[Item.Index])) and
                    (ARecord.Values[Item.Index] = true)
   then
     AStyle := styleCliDeleted;
 
 
 if Item.DataBinding.ValueType = 'String' then
   if (not VarIsNull(ARecord.Values[Item.Index])) and
                    (ARecord.Values[Item.Index] = 'T')
   then
     AStyle := styleCliDeleted;
 
end;

 
Так вот. Подскажите как это сделать без дополнительного условия, используя тип TcxCheckBox
 
Что-то мне подсказывает, что можно так:
 
if (TcxGridDBColumn(AItem).PropertiesClass as TcxCheckBoxProperties).checked
 
но как правильно.....

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 13:53 19-01-2011
marser

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
if VarSameValue(ARecord.Values[AItem.Index], True) then
 
Добавлено:
X11
Погорячился! Лучше так
if VarSameValue(ARecord.Values[AItem.Index], TcxCheckBoxProperties(AItem.Properties).ValueChecked) then

Всего записей: 398 | Зарегистр. 29-03-2007 | Отправлено: 14:21 19-01-2011 | Исправлено: marser, 14:35 19-01-2011
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо больше.
 
А до состояния checked/unchecked нинак, получается, не добраться у TcxGridDBColumn?

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 14:44 19-01-2011
tanaseduard



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

Цитата:
А до состояния checked/unchecked нинак, получается, не добраться у TcxGridDBColumn?

 
Если в проертях стоит CheckBox , то можно через TcxCheckBoxEditProperties(Column.Properties).Checked.
Вроде так.

Всего записей: 518 | Зарегистр. 21-11-2009 | Отправлено: 14:53 19-01-2011
X11



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

Код:
 
 if TcxGridDBColumn(AItem).DataBinding.FieldName  = 'DELETED' then
   begin
       if ((not VarIsNull(ARecord.Values[AItem.Index])) and
                        VarSameValue(ARecord.Values[AItem.Index], TcxCheckBoxProperties(AItem.Properties).ValueChecked))
       then
         AStyle := styleCliDeleted;//
   end;
 

 
эта строка срабатывает:
AStyle := styleCliDeleted;
 
ошибок нет
вот настройки стиля:
   
 
В гриде все записи черным текстом, как обычно, даже те, у которых отмечены чекбоксы в поле Deleted.
   
 
 
Dev54, D2007.
 
Добавлено:
а где живёт TcxCheckBoxEditProperties? Нет такого нигде.


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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 15:01 19-01-2011
marser

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
Какой TextColor? Где текст? Color := clRed
 
Добавлено:
Событие на гриде или колонке?
Если даже на гриде, Вы все равно пытаетесь раскрасить колонку с Check-ом.

Всего записей: 398 | Зарегистр. 29-03-2007 | Отправлено: 15:19 19-01-2011 | Исправлено: marser, 15:34 19-01-2011
X11



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

Цитата:
Событие на гриде или колонке?  

у вьюхи
 

Цитата:
Какой TextColor? Где текст? Color := clRed  

Мне нужен не закрасить строку красным, а вывести именно текст красным.
 
Тогда 2 вопроса:
1. зачем Font.color у стиля
2. зачем TextColor у стиля.
 
До версии 54 я устанавливал только TextColor в красный цвет и всё было ОК.

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 15:36 19-01-2011
marser

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

Цитата:

Код:
if TcxGridDBColumn(AItem).DataBinding.FieldName  = 'DELETED' then  
   begin  
       if ((not VarIsNull(ARecord.Values[AItem.Index])) and  
                        VarSameValue(ARecord.Values[AItem.Index], TcxCheckBoxProperties(AItem.Properties).ValueChecked))  
       then  
         AStyle := styleCliDeleted;//  
   end;  
 

Этот код применяет стиль styleCliDeleted только к колонке TcxGridDBColumn(AItem).DataBinding.FieldName  = 'DELETED'. Эта колонка cxCheckBox. В ней нет текста.
 
Добавлено:
X11
OnGetContentStyle это последовательный перебор (цикл) всех ячеек грида. Координаты ячейки ARecord, AItem

Всего записей: 398 | Зарегистр. 29-03-2007 | Отправлено: 15:47 19-01-2011
Открыть новую тему     Написать ответ в эту тему

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