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

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

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

Цитата:
И в результате граница между ячейками строки видна. Я что-то упустил?

Пропустили, всего навсего, код слияния ячеек.
Попробуйте за основу использовать вот этот код:

Код:
procedure <YorForm>.<YourcxGridDBTableView>CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo:
    TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
  vRect: TRect;
  vPreviousViewInfo: TcxGridTableDataCellViewInfo;
  vTextAreaBounds: TRect;
  vMargedColumn1, vMargedColumn2: TcxGridDBColumn;
  vBorderColor: TColor;
begin
  vMargedColumn1 := <YourcxGridDBTableView>Column1;
  vMargedColumn2 := <YourcxGridDBTableView>Column2;
 
  if (AViewInfo.Item.Index in [vMargedColumn1.Index, vMargedColumn2.Index]) and
     (AViewInfo.GridRecord.Values[vMargedColumn1.Index] = AViewInfo.GridRecord.Values[vMargedColumn2.Index]) then
    begin
      AViewInfo.Borders := [];
      if AViewInfo.Item.Index = vMargedColumn2.Index then
        begin
           vPreviousViewInfo := Sender.ViewInfo.RecordsViewInfo.Items[vMargedColumn1.Index].GetCellViewInfoByItem(vMargedColumn1);
           vTextAreaBounds := AViewInfo.TextAreaBounds;
           vTextAreaBounds.Left := vPreviousViewInfo.TextAreaBounds.Left;
           ACanvas.DrawTexT(AViewInfo.Text, vTextAreaBounds, cxAlignHCenter);
           vRect := AViewInfo.Bounds;
           vRect.Left := vPreviousViewInfo.Bounds.Left - 1;
           vRect.Top := vRect.Top - 1;
           vBorderColor := AViewInfo.BorderColor[bLeft];
           ACanvas.DrawComplexFrame(vRect, vBorderColor, vBorderColor, [bTop, bLeft, bBottom, bRight], 1);
         end;
      ADone := True;
    end;
end;  

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Понятно. Тогда вопрос по cxspreadsheet. Пытаюсь выполнить код:
 

Код:
var
ACell: TcxSSCellObject; HAlign: TcxHorzTextAlign; VAlign: TcxVertTextAlign; i, j: Integer;  
i := 1;
j := 1;
for HAlign := haGENERAL to haJUSTIFY do
begin
for VAlign := vaTOP to vaJUSTIFY do
begin
ACell := cxSpreadSheet1.Sheet.GetCellObject(i, j);  
try
ACell.Style.HorzTextAlign := HAlign; ACell.Style.VertTextAlign := VAlign; ACell.Text := 'a bc def ghij klmn'; ACell.Style.WordBreak := True;  
finally
ACell.Free;  
end;
j := j + 1;  
end;
i := i + 1; j := 1;  
end;
 

Он мне говорит  
undeclared identifier : 'TcxHorzTextAlign'  
undeclared identifier : 'TcxVertTextAlign'

Всего записей: 117 | Зарегистр. 27-04-2009 | Отправлено: 07:09 19-12-2010
X11



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

Цитата:
Он мне говорит  
undeclared identifier : 'TcxHorzTextAlign'  
undeclared identifier : 'TcxVertTextAlign'  

 
А поискать, где объявлены эти типы почему нельзя?
 
А про Ctrl+Shift+A тоже не в курсе?
 
добавь в USES cxSSTypes

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 10:51 19-12-2010 | Исправлено: X11, 10:52 19-12-2010
RomanDaemon

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman
Да, спасибо за пример.
Все работает, только работы прибавилось... =)

Всего записей: 47 | Зарегистр. 11-02-2003 | Отправлено: 16:44 19-12-2010
vladman

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

Цитата:
Все работает, только работы прибавилось...

Ну тут уж нужно выбирать - либо с работой чтоб работало, либо без работы чтоб не работало

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 02:49 20-12-2010
RomanDaemon

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
По ходу еще встала задача.
Надо что бы перед Requery всех DataSet, вид грида и вьюх сохранялся, а после восстанавливался. Все сделал и сохранение/раскрытие expanded detail, и переключение активного на активный таб, и все это для вьюхи с группировками. Но вот вылезла проблема, о которой много чего написано, но найти однозначное решение не могу. Это фокус. Пока обхожусь тем, что фокус сохраняется через bookmark датасета и встает на master вьюху. Как его сохранить для detail и туда где был поместить (без создания клонов всех вьюх), не могу понять - куча свойств, касающихся фокуса, многие проверил - не нашел подходящих условий.
 
Сохранение делаю так (может кому пригодится):
 

Код:
 
  type TGCExpand = record
  Caption : String;
  Expanded : Boolean;
  Level: Integer;
  end;
  var AllExp : array of TGCExpand;
 
procedure TSamplesForm.storegridinfo;
var I: integer;
begin
  AllExp:=NIL;
  for I := 0 to cxGrid2DBTableView2.ViewData.RowCount - 1 do
  begin
    if (cxGrid2DBTableView2.ViewData.Rows[ I ].Expanded)
    then
    begin
      SetLength( AllExp , Length( AllExp ) + 1 );
      AllExp[ Length( AllExp ) - 1 ].Caption := cxGrid2DBTableView2.ViewData.Rows[ I ].Values[0];
      AllExp[ Length( AllExp ) - 1 ].Expanded := cxGrid2DBTableView2.ViewData.Rows[ I ].Expanded;
      if (cxGrid2DBTableView2.ViewData.Rows[ I ] is TcxGridMasterDataRow) then
      AllExp[ Length( AllExp ) - 1 ].Level := cxGrid2DBTableView2.ViewData.Rows[ I ].AsMasterDataRow.ActiveDetailIndex
      else
      AllExp[ Length( AllExp ) - 1 ].Level := -1;
    end;
  end;
end;
 
procedure TSamplesForm.restoregridinfo;
var
I,J: integer;
Caption_1: string;
begin
  for I := 0 to Length( AllExp ) - 1 do
  begin
    for J := 0 to cxGrid2DBTableView2.ViewData.RowCount - 1 do
    begin
      Caption_1 := cxGrid2DBTableView2.ViewData.Rows[ J ].Values[0];
      if (AllExp[ I ].Caption = Caption_1) then
      begin
      cxGrid2DBTableView2.ViewData.Rows[ J ].Expanded := True;
      if AllExp[ I ].Level>=0 then cxGrid2DBTableView2.ViewData.Rows[ J ].AsMasterDataRow.ActiveDetailIndex := AllExp[ I ].Level;
      end;
    end;
  end;
end;
 

Всего записей: 47 | Зарегистр. 11-02-2003 | Отправлено: 03:19 20-12-2010
BlackVetal



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
RomanDaemon
я так понимаю после редактирования строки detail, значения сохраняются в БД. после этого нужно сделать перерасчет master строки и отобразить?
вообще я делал все без requery. я использую BindingContext. этот BindingContext хранит указатель на фокус и посути через этот указатель можно сделать перерасчет хоть всей строки master? хоть отдельного ее поля.

Всего записей: 1094 | Зарегистр. 13-11-2005 | Отправлено: 06:53 20-12-2010
Yuri2008

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день! поиском не нашел, cxgrid отображает поле содержащее тескт, соответственно в нем символы переноса строк, символы конца строки итп
в гридке спецсиволы отображаются не красиво.
Вопрос: Подскажите простой способ убрать отображение этих символов?
Заранее спасибо!

Всего записей: 38 | Зарегистр. 08-06-2007 | Отправлено: 08:01 20-12-2010
neznayka3

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

Цитата:
Проверяя состояния чекбоксов формирую SQL-запрос и и вызываю процедуру. Т.е. при клике на любой чекбокс необходимо ОДИН раз выполнить процедуру. Для этого использую NodeCheckChanged.
Вот тут и затык выходит. Если, например, кликнуть на чекбокс у родителя (см. скрин) то событие выполнится столько раз, сколько потомков у этого родителя. В данном случае я получаю 4 события и соответственно SQL-запрос выполняется последовательно 4 раза.
В идеале необходимо как-то отследить последнее событие OnNodeCheckChanged и после него выполнить SQL-запрос

ответа тоже не нашел.

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 08:08 20-12-2010
DumnedAspid



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Привет всем!
 
Кто-нибудь юзал TcxRichEdit?  
Есть ли глюки у компонента?  
Имеет ли смысл использовать его вместо TRxRichEdit?
 
Добавлено:
Yuri2008

Цитата:
Добрый день! поиском не нашел, cxgrid отображает поле содержащее тескт, соответственно в нем символы переноса строк, символы конца строки итп
в гридке спецсиволы отображаются не красиво.
Вопрос: Подскажите простой способ убрать отображение этих символов?

Если поле используется только для отображения текста, вырежи спецсимволы и все дела. Если нужно редактировать текст, выноси это поле из грида в многострочный компонент

Всего записей: 2685 | Зарегистр. 02-11-2007 | Отправлено: 16:17 20-12-2010
RomanDaemon

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BlackVetal
 
Сначала тоже так хотел сделать.
А если у нас ошибка вставки данных или редактирования? Например, запись удалена другим пользователем, так приложение многопользовательское. Хотелось бы сделать Requery для всего датасета.

Всего записей: 47 | Зарегистр. 11-02-2003 | Отправлено: 21:47 20-12-2010
vladman

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

Цитата:
По ходу еще встала задача.
Надо что бы перед Requery всех DataSet, вид грида и вьюх сохранялся, а после восстанавливался....
Сохранение делаю так (может кому пригодится):

Решение вашей проблемы известно с 2008 года и, даже, периодически дополняется: How to save and then restore the Grid's layout
 
 
Добавлено:
Yuri2008

Цитата:
Вопрос: Подскажите простой способ убрать отображение этих символов?  

Обрабатывайте событие onGetDisplayText вашего столбца со спец символами, например:  
AText := StringReplace(AText, #13#10, ' ', [rfReplaceAll]);
Либо установите, как вам уже посоветовали, свойство Properties этого же столбца в Memo либо RichEdit  
 
Добавлено:
DumnedAspid

Цитата:
Кто-нибудь юзал TcxRichEdit?...  
Имеет ли смысл использовать его вместо TRxRichEdit?  

А вы спросите наоборот.  
Кто-нибудь юзал TRxRichEdit? Есть ли глюки у компонента?  Имеет ли смысл использовать его вместо TcxRichEdit? Интересно, что вам ответят
А если серьезно и кратко, то, думаю  - имеет.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 22:56 20-12-2010 | Исправлено: vladman, 01:04 21-12-2010
RomanDaemon

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman
Это я все читал - много лишнего.
И там клоны используются, а я хотел без них.
И еще - там не сохраняется, а точнее вообще не рассмотрена проблема сохранения текущего view, который выбран из нескольких дочерних вьюх одного уровня.
Я там пасусь - у меня несколько вопросов в работе.

Всего записей: 47 | Зарегистр. 11-02-2003 | Отправлено: 01:19 21-12-2010
V1s1ter



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

Цитата:
Кто-нибудь юзал TcxRichEdit? Есть ли глюки у компонента? Имеет ли смысл использовать его вместо TRxRichEdit?

Я в свое время пробывал, но версии не помню, были проблемы с таблицами. Таблицы созданые в Word и сохраненные в RTF не верно открывались. С WPTools и TRichEdit подобных проблем не было, на них остановился и пока не жалею.

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 01:43 21-12-2010
BlackVetal



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
RomanDaemon
Как другие решения могут обезапасить от удаления в описанном твоем случае? Если обратиться к теории - то эта одна из фундаментальных проблем. У меня несколько приложений многопльзовательских с одной и той же формой работают сразу 4 отделах - полностью полагаюс на встроенные механизмы защиты от DevExpress.

Всего записей: 1094 | Зарегистр. 13-11-2005 | Отправлено: 06:26 21-12-2010
DumnedAspid



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

Цитата:
А вы спросите наоборот.  
Кто-нибудь юзал TRxRichEdit? Есть ли глюки у компонента?  Имеет ли смысл использовать его вместо TcxRichEdit? Интересно, что вам ответят

Ответы на такие вопросы у меня есть
V1s1ter

Цитата:
Я в свое время пробывал, но версии не помню, были проблемы с таблицами. Таблицы созданые в Word и сохраненные в RTF не верно открывались. С WPTools и TRichEdit подобных проблем не было, на них остановился и пока не жалею.

Благодарю!

Всего записей: 2685 | Зарегистр. 02-11-2007 | Отправлено: 09:58 21-12-2010
RomanDaemon

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

Цитата:
Как другие решения могут обезапасить от удаления в описанном твоем случае? Если обратиться к теории - то эта одна из фундаментальных проблем. У меня несколько приложений многопльзовательских с одной и той же формой работают сразу 4 отделах - полностью полагаюс на встроенные механизмы защиты от DevExpress.

 
Вставка, удаление и редактирование сделаны у меня отдельными SQL запросами.
Если запись удалена кем-то, то получаем ексепшн при, например, редактировании. После эксепшна - requery всех датасетов, что бы показать это пользователю.
Возможно это неверный подход. А не полагаюсь на встроенные механизмы девок, так как их не знаю. Подскажите.

Всего записей: 47 | Зарегистр. 11-02-2003 | Отправлено: 13:56 21-12-2010 | Исправлено: RomanDaemon, 00:12 22-12-2010
CBOBA

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
У меня следующая проблема: написал программульку на BCB 6 с использованием DevExpress х42, сейчас хочу перенести ее на RAD 2010 и DevExpress х53
 
При открывании проекта все нормально, при компилировании и запуске программы RAD зависает и ни каких действий не выполняется, программа не открывается...
 
Что можно предпринять для решения данной проблемы?

Всего записей: 3 | Зарегистр. 07-02-2010 | Отправлено: 19:00 21-12-2010
tanaseduard



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CBOBA
 
Была такая проблема, оказалось что между версиями в некоторых компонентах исчесзли свойства, решилось все методом Ctrl+A -> Cut&Paste компонентов на форму. RAD проверяет свойства.
 

Всего записей: 518 | Зарегистр. 21-11-2009 | Отправлено: 19:38 21-12-2010
Yuri2008

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо
vladman
DumnedAspid
разобрался,  есть еще 3й способ  
 
...Обрабатывайте событие onGetDisplayText вашего столбца со спец символами, например:  
AText := StringReplace(AText, #13#10, ' ', [rfReplaceAll]);  
Либо установите, как вам уже посоветовали, свойство Properties этого же столбца в Memo либо RichEdit...
 
поставил в Optionsview CellAutoHeight:=True и CellTextMaxLineCount:=1
и спец. символы  исчезли ...
 

Всего записей: 38 | Зарегистр. 08-06-2007 | Отправлено: 21:55 21-12-2010
Открыть новую тему     Написать ответ в эту тему

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