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

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



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня возникла проблема использовал Dev56
Обновился до "devcl20110204sde.exe"
И в файле dxGDIPlusAPI.pas пропали методы:
dxInitializeGDIPlus,
dxFinalizeGDIPlus
Теперь DLL вылетает с ошибкой без вызовов этих методов.
Что изменилось и как теперь решать проблему с вызовом DLL на которой присутствуют Dev-ки?

Всего записей: 28 | Зарегистр. 16-04-2010 | Отправлено: 11:43 10-05-2012
X11



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

Цитата:
И в файле dxGDIPlusAPI.pas пропали методы:  

 
поискать не сложно?
уже решали данную проблему, да и на Их сайте тоже есть описание

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 12:07 10-05-2012
mdid

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
что то я завис...надо в гриде (обычный тейбл) загнать в одно поле изображение...по логике полез к BlobEdit...ValueType выставил Blob....а вот как загнать туда данные не пойму...в editValue стрим не хочет ложиться а в TcxBlobEditProperties() не нашел ничего напоминающего load или stream

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 12:48 10-05-2012
Baklan_vs



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

Цитата:
поискать не сложно?
уже решали данную проблему, да и на Их сайте тоже есть описание

Можете ткнуть носом в решение проблемы?
На их сайте не нашол решение проблемы которое было-бы актуально.

Всего записей: 28 | Зарегистр. 16-04-2010 | Отправлено: 13:07 10-05-2012
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В Properties выбери Image
 
я из файла загружаю так:
 
    if FileExists(sFN_Photo) then
      Values[ARowInfo.RecordIndex, iPhotoFieldIndex] := ImageFileToString(sFN_Photo);
//iPhotoFieldIndex индекс поля для хранения фоток
поле с фотками ни к чему не привязано
 
....
 
function ImageFileToString(AFileName: string): string;
var
  vStream: TFileStream;
  vString: string;
begin
  vStream := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyNone);
  try
    vStream.Position := 0;
    SetLength(vString, vStream.Size);
    vStream.ReadBuffer(Pointer(vString)^, vStream.Size);
  finally
    vStream.Free;
  end;
  Result := vString;
end;
 
Добавлено:
Baklan_vs
просто поищи в исходниках, где объявлено и тот модуль подключи
 
Добавлено:

Цитата:
У меня возникла проблема использовал Dev56
Обновился до "devcl20110204sde.exe"
И в файле dxGDIPlusAPI.pas пропали методы:
dxInitializeGDIPlus,
dxFinalizeGDIPlus
Теперь DLL вылетает с ошибкой без вызовов этих методов.
Что изменилось и как теперь решать проблему с вызовом DLL на которой присутствуют Dev-ки?

 
 
ЕМНИП, то нужно
1. подключить dxCore
2. написать  
 
initialization
  dxInitialize;
 
и  
 
finalization
  dxFinalize
 
Добавлено:
вот ссылка:
http://forum.ru-board.com/topic.cgi?forum=33&topic=10884&start=2820#14

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 13:11 10-05-2012 | Исправлено: X11, 13:18 10-05-2012
mdid

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Baklan_vs
https://www.google.com/search?source=ig&hl=ru&rlz=&q=dxInitializeGDIPlus&oq=dxInitializeGDIPlus&aq=f&aqi=g-s1&aql=&gs_l=igoogle.3..0i10.582.582.0.1305.1.1.0.0.0.0.153.153.0j1.1.0...0.0.
первая ссылка

Цитата:
2. Breaking Change – The dxGdiPlusInitialize and dxGdiPlusFinalize procedures have been moved from the dxGDIPlusClasses unit to the dxCore unit, and renamed to dxInitialize and dxFinalize. In applications with custom skins, specify the dxCore unit in the uses clause."

X11
пасиба

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
неужели в гугле трудно было ввести слово: dxInitializeGDIPlus и открыть первую же ссылку на Их сайт?

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 13:17 10-05-2012
Baklan_vs



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

Всего записей: 28 | Зарегистр. 16-04-2010 | Отправлено: 13:23 10-05-2012
AlexPetrovich

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

Цитата:
VZolotarev  
 
Цитата: но так и не понял что я делаю не правильно.  
 
 
 Если был бы не DB, а обычный cxGridTableView, то все правельно делаете. А с cxGridDBTableView так не получиться. Нужно установить фокус (DataController.FocusedRecordIndex) на запись SelectedRecords, перевести DatаSet в состояние редактирования, изменить значение колонки (Column.EditValue := ) и сделать Post. И так для каждой выделенной записи.

А еще лучше собрать ID выделенных записей, а потом обновить их все в одном запросе (используя например в WHERE ID in (...) )) и потом уже сделать один refresh.

Всего записей: 87 | Зарегистр. 08-05-2003 | Отправлено: 14:26 10-05-2012 | Исправлено: AlexPetrovich, 14:31 10-05-2012
neznayka3

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

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 07:33 11-05-2012
mdid

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

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 09:37 11-05-2012
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос по cxGrid`у и совмещению стилей.
В событии OnGetContentStyle выполняется проверка двух булевых полей, если в первом поле ДА, то стиль1 применяется, а если во втором поле ДА, то стиль2 применяется. Если в обоих полях ДА, то всё равно стиль2 применяется, т.к. он последним применяется.
А как бы слепть (совместить) применение обоих стилей? Только создать третий?
 
вот код
 

Код:
 
procedure TfmScanner.Grid1StylesGetContentStyle(Sender: TcxCustomGridTableView;
  ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem;
  out AStyle: TcxStyle);
Var
 Style1: TcxStyle;
begin
 if AItem = nil then exit;
 
 if ARecord.Values[Grid1Med.Index] = true then
   AStyle := cxStyleMed;
 
 if ARecord.Values[Grid1CP.Index] = true then
   AStyle := cxStyleHost;
 
...
 

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

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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос по поиску.
DataController.Search выполняет поиск на полное совпадение, а можно его заставить искать на частичное совпадение?
 
Добавлено:
То ли лыжи не едут...
 
 
  ARecordIndex := grid.DataController.FindRecordIndexByText(grid.DataController.FocusedRecordIndex,
                                                            grid.DataController.GetItemByFieldName('TEL').Index,
                                                            edSearch.Text,
                                                            True, True, True);// включен поиск на частичное совпадение
 
ARecordIndex всегда -1, хотя в столбце явно есть искомый текст
 
или FindRecordIndexByText выполняет поиск только по начальным символам, как это реализовано в IncSearch? В справке подробной инфы не нашёл
 
Добавлено:

Цитата:
The function compares strings without case sensitivity.  The APartialCompare parameter allows you to specify whether the text being searched must match the display text of a field partially or entirely

 
Вернее нет информации о том, что совпадение должно быть именно сначала.
 
Добавлено:
Ага, нашёл

Цитата:
 
 If APartialCompare is True, the function is successful if the search text matches the starting characters of the field text.  If APartialCompare is False, strings to compare must be identical.
 


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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 10:56 14-05-2012
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На "их" сайте когда-то нашёл пример подсветки текста в ячейках:
 
В указанном месте проблема:
на второй итерации цикла while появляется сообщение об ошибке:  Control '' has no parent window.
 
Хотя их пример у меня работает. Перепроверил, вроде всё одинаково. Стоkбец типа RichEdit,
событий нет.
 
Что ещё может быть не так?

Код:
procedure TfmEdit.HLText(cxGrid1DBTableView1: TcxGridDBTableView);
var
  I, FoundPos, StartPosition: integer;
  AColumn : TcxGridDBColumn;
  ATextToFind: String;
  AEdit : TcxRichEdit;
  AFind : Boolean;
begin
  ATextToFind := edSearch.Text;
 
  cxGrid1.SetFocus;
  with cxGrid1DBTableView1 do
  begin
    AColumn := GetColumnByFieldName('ID');
    for I := 0 to ViewData.RecordCount - 1 do
    begin
      if ViewData.Rows[I].IsData then
      begin
        ViewData.Rows[I].Focused := True;
        OptionsData.Editing := True;
        with Controller.EditingController do
        begin
          cxGrid1DBTableView1.OptionsData.Editing := True;
          ShowEdit(AColumn);
          AEdit := TcxRichEdit(Edit);
          StartPosition := 0;
          AFind := True;
 
          while AFind do
          begin
 
 
//здесь проблема
            FoundPos := AEdit.FindText(ATextToFind, StartPosition, Length(AEdit.Text), []);
 
 
            if not (FoundPos < 0) then
            begin
              AEdit.SelStart := FoundPos;
              AEdit.SelLength := Length( ATextToFind);
              AEdit.SelAttributes.Color:=clRed;
              AEdit.SelAttributes.Style := [fsBold, fsItalic, fsUnderline];
              AEdit.SelLength := 0;
              StartPosition := FoundPos + 1;
            end
            else
              AFind := False;
              AColumn.Editing := False;
          end;  //while
 
//          if i = ViewData.RecordCount - 1 then
//             Sleep(2000)
//          else
//             Sleep(250);
 
        end; //with
      end;
    end;
    OptionsData.Editing := False;
  end; //with
end;

 
 
 
или подскажите другой пример подсвечивания текста в ячейках

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

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

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

Код:
var
  ps    : integer;
  rect  : Trect;
begin
  if cxGrid1Level1.GridView.DataController.RecordCount=0 then
    exit;
 
  if (not AViewInfo.Visible) or (FindEdit.EditValue=null) then
    exit;
  ps:=pos(AnsiLowerCase(vartostr(FindEdit.EditValue)),AnsiLowerCase(vartostr(AViewInfo.Value)));
  if ps>0 then begin
    rect:=ACanvas.Canvas.ClipRect;
    rect.Left:=20;
    rect.Right:=-20;
    rect.Top:=0;
    rect.Bottom:=0;
    ACanvas.FillRect(rect,65535);//clYellow
  end
  else
    ACanvas.RestoreClipRegion;

это в CustomDrawCell вьюхи...минус в том что идет полная подсветка ячейки

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Странно, а почему подсвечивается только 2ая колонка?
   
 
Добавлено:
Да и хотелось бы мне так, чтобы пользователь ввёл значение, нажал enter и получил результат
у меня есть функция поиска для cxGrid, самописная, но кривовата она.

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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На чистую Win 7 в Virtual Box установлены: Delphi XE2 Trial, DevExpressVCLProducts 11.2.5 Trial, fibplus 7.3 Trial.
 
Данные поставляются БД Firebird 2.5: cxScheduler-cxSchedulerDBStorage-DataSource-pFIBDataSet-pFIBDatabase(pFIBTransaction).
 
При cxSchedulerDBStorage1.ResourceID, заданных 1, 2, 3, записи отображаются и добавляются только ко 2 ресурсу, для других ресурсов событие добавляется на весь день. При смене ResourceID на 0, 2, 4, все становится в порядке. Что за глюк?
 
Настройка cxSchedulerDBStorage: http://www.delphi.int.ru/code/0c694baa

Всего записей: 2 | Зарегистр. 14-05-2012 | Отправлено: 18:18 14-05-2012 | Исправлено: Stephex, 11:26 15-05-2012
mdid

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

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 19:59 14-05-2012
AlexCoRu

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тупиковая ситуция получается.
Понадобилось несколько независимых курсоров на один набор данных. Первым делом пришла мысль использовать ClientDataSet, вторым - dbExpress. Но тутже нарисовались проблемки.
SQLDataSet - однонапрвленный, т.е. только чтение. ClientDataSet - кэширует данные. cxGrid в GridMode не кэширует, иначе кэширует, но это вообще прекрасно:
Цитата:
In Grid mode, the data controller's performance is better, but features such as automatic sorting, filtering and summary calculations are disabled. You have to write appropriate event handlers (OnSortingChanged, Filter.OnBeforeChange, OnAfterSummary) to perform these actions.
И сразу же, мордой об стену
Цитата:
Grid mode is automatically switched off when grouping is applied to a grid view.
А группировка мне нужна. Следовательно, хочешь, не хочешь, а два кеша будет.
Можно использовать cxGrid в unbound mode, но как делать обновления? TSQLUpdateObject нету! Посмотрел в сторону EhLib - связка TDBXDataDriverEh->TMemTableEh->TDataSource->TDBGridEh то, что надо, но грид у них глючный. Как можно что похожее реализовать для dev?
Да, и в unbound mode можно сразу забыть про lookup editы.
 
Добавлено:
И ещё интересно, как работает связка cxGrid и dxMemDataSet? Тоже гоняет одно и тоже из кэша в кэш?
В EhLib DBGridEh "эксплуатирует" MemTableEh по-полной, в т.ч. и при группировке.

Всего записей: 911 | Зарегистр. 04-09-2003 | Отправлено: 22:00 14-05-2012 | Исправлено: AlexCoRu, 22:17 14-05-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