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

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

Модерирует : 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

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

LadyOfWood

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

Цитата:
С учётом что афтор это делает в цикле сортировки которая "Быстрая" якобы.  
    if L < J then  
      QuickSort(L, J, Compare, ParamSort);  

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

Код:
 
if AObj = nil then Exit;
 

и они вполне могут быть вложенными, ибо это все равно не time-critical код, а вот свалися по AV может в легкую.

Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 22:54 13-05-2013
miwa

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LadyOfWood
А почему не Assert/Exception? Не приходилось еще полдня искать, "почему оно не работает и нифига не ругается"?

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 23:34 13-05-2013
LadyOfWood

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

Цитата:
А почему не Assert/Exception? Не приходилось еще полдня искать, "почему оно не работает и нифига не ругается"?

Assert только на дебажном билде (а там как всегда все хорошо), exception это уже определенная ошибка, которая должна быть понятна пользователю или кем-то съедена по дороге.  

Цитата:
"почему оно не работает и нифига не ругается"?

Не не приходилось

Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 01:11 14-05-2013
miwa

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

Цитата:
Exception это уже определенная ошибка, которая должна быть понятна пользователю или кем-то съедена по дороге

У меня «последний рубеж обороны» - Application.OnException, который в зависимости от типа ошибки и настроек либо что-то говорит пользователю, либо пишет лог, либо даже делает скриншот и шлет на почту в случае большого ппца.

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 08:02 14-05-2013
rich76

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
XPerformer
похоже нужно прикручивать вариант с форума ehlib-а
DBGrid->Columns->Items[7]->Footer->ValueType  = fvtStaticText;
if (DBGrid->SumList->SumCollection->Items[1]->SumValue != 0)
{
DBGrid->Columns->Items[7]->Footer->Value = FormatFloat ("0.00" ,(100*DBGrid->SumList->SumCollection->Items[0]->SumValue / DBGrid->SumList->SumCollection->Items[1]->SumValue));
}
else
{
DBGrid->Columns->Items[7]->Footer->Value = 0;
}
правда в проекте не один грид

Всего записей: 23 | Зарегистр. 06-02-2006 | Отправлено: 10:04 14-05-2013
delover

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

Цитата:
Это со стороны кажется что все нормально, в реальности может быть немного по другому. Я тоже делаю    

Разделяю целиком и полностью. Но что касается именно метода QuickSort, то тут я бы разрешил все акцесс виолейшены - очень интересно что будет, ну если я вдруг решил сыграть дурочка. Интересны те люди которые хотят отсортировать только данные от записи 1000 до записи 2000, а остальные не трогать. Кстати мой подход - заметил у меня ошибку - исправь и не говори мне.
 

Цитата:
Надо ещё sleep(1) добавить в цикл QuickSort. А чтоб жизнь мёдом не казалась.

Ну я то лучший из худших, так что моя сортировка в тысячи медленнее чем если добавить sleep. Думаю шутка простительна.
 
Добавлено:
Небольшая подробность. Сегодня сортирую, прошло пол часа, поставил брейкпоинт - она ещё 10% не отсортировала. Думаю надо уметь так... Я в трамвае ехал ржал над глюком, а потом даже поперхнулся - думаю может кто-то пожалел что-то, но уж не для меня.)

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 18:04 14-05-2013 | Исправлено: delover, 20:08 14-05-2013
delover

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

Цитата:
записи 1000 до записи 2000

Посортируйте плиз - публичная процедура.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 21:23 14-05-2013
LadyOfWood

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

Цитата:
У меня «последний рубеж обороны» - Application.OnException, который в зависимости от типа ошибки и настроек либо что-то говорит пользователю, либо пишет лог, либо даже делает скриншот и шлет на почту в случае большого ппца.

У меня последний рубеж EurekaLog, но все равно доводить до нее стоит только что-то важное.

Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 21:32 14-05-2013
rich76

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

Цитата:
это значит что для AVG тоже надо знать количество. Больше про AVG никто не вспоминал. Возможно автора отвлекли в этот момент. Либо момент был очень волнительный. Но расчёта AVG тут нет...  

Вы правы, поправил для себя GetAggregatedValuesForRange
...
 if ((agfSumEh in AggrFuncs)or (agfAvg in AggrFuncs)) and (VarTypeNum <> varDate) then
...
 
и
 if agfAvg in AggrFuncs then
вместо
  if agfMax in AggrFuncs then  

Всего записей: 23 | Зарегистр. 06-02-2006 | Отправлено: 16:16 28-05-2013
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
rich76
Ну Вам спасибо, но я думаю Вы не поймёте.
 
После 2-х лет воздержания под юбилей решил использовать EhLib. Знаете - это был самый большой подарок - мультиселект ровселект без рецтангле +

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 20:58 30-05-2013
Unnicked

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

Цитата:
[Linker Error] Unresolved external '__fastcall Dbgrideh::TCustomDBGridEh::SetOptions(System::Set<Dbgrids::TDBGridOption, 0, 12>)' referenced from ...
[Linker Error] Unresolved external '__fastcall Dbgrideh::TBookmarkListEh::GetItem(int)' referenced from ...
[Linker Error] Unresolved external '__fastcall Dbgrideh::TBookmarkListEh::GetCount()' referenced from ...
[Linker Error] Unresolved external '__fastcall Dbgrideh::TCustomDBGridEh::DefaultDrawColumnCell(const Types::TRect&, int, Dbgrideh::TColumnEh *, System::Set<Grids::Grids__3, 0, 2>)' referenced from ...

 
В проекте используется множество функций EhLib, но линкер ругается только на эти.
 
Пути к библиотеке прописаны. Версия EhLib 4.0 Build 4.0.9. Проект в C++ Builder 6.0.
 
В чем может быть причина и как ее можно устранить?

Всего записей: 1128 | Зарегистр. 19-08-2005 | Отправлено: 17:12 13-07-2013
FreePaul



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Возможно, кому-то вопрос покажется смешным. Однако, все же задам его.
Есть DBGridEh, к нему привязано всплывающее меню с пунктами "Выделить все", "Инвертировать выделение", "Снять выделение". С первым и последним пунктами все ясно и понятно. А вот с инвертированием - не очень...  
Как организовать инвертирование выделения в DBGridEh?

----------
Восход Солнца - это хорошо для начала...

Всего записей: 935 | Зарегистр. 07-08-2002 | Отправлено: 08:17 20-08-2013 | Исправлено: FreePaul, 08:35 20-08-2013
karlss0n



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FreePaul
 
Запоминаете выделение, далее выделить всё, снять выделение (то, что запомнили)

Всего записей: 136 | Зарегистр. 12-07-2004 | Отправлено: 11:33 20-08-2013
mrUlugbek



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте
Как в MemtableEH в режиме TreeView найти родительский записи..
Мне надо узнать ИД родителя и название..
Заранее благодарен

Всего записей: 879 | Зарегистр. 04-04-2011 | Отправлено: 09:33 02-12-2013
FreePaul



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Имеется результат выбора данных, выведенный в DBGridEh. В этом наборе данных имеется колонка "UN".
Стоит задача скопировать в буфер обмена значения нескольких полей "UN".
Отбор производится оператором, выделяющим строки с интересующими данными. Выделение строк может быть не подряд, т.е. между выделенными строками могут быть разрывы.

Всего записей: 935 | Зарегистр. 07-08-2002 | Отправлено: 08:12 25-02-2014 | Исправлено: FreePaul, 08:32 25-02-2014
xpin2013



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MultiSelect + BookMark. Я может ошибаюсь в идентификаторах, если что в ПМ пишите, не будем захламлять топик..

Всего записей: 291 | Зарегистр. 16-01-2014 | Отправлено: 23:15 21-03-2014
miwa

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FreePaul
Ответ предыдущего оратора неправильный. У EhLib есть свойствa SelectedRows и Selection - вот там и стоит искать свои данные.

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 11:54 24-03-2014
xpin2013



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
miwa
Вы брешете как не знаю кто, ваш Select это набор букмарков который так же успешно слетает после сортировки.

Цитата:
 
Здравствуйте! Вы просили обращаться в ПМ, чтобы не захламлять топик.
На всякий случай, вот задача:
Имеется результат выбора данных, выведенный в DBGridEh. В этом наборе данных имеется колонка "UN".
Стоит задача скопировать в буфер обмена значения нескольких полей "UN".
Отбор производится оператором, выделяющим строки с интересующими данными. Выделение строк может быть не подряд, т.е. между выделенными строками могут быть разрывы.
 
Буду очень Вам признателен, если подскажете путь реализации. Что-то у меня с этим туго...

 
Вам просто необходимо познакомится с тем что такое Boorkmark и моим изобретением.

Код:
type
  TMyDBGridEhStyle = class(TDBGridEhStyle)
  protected
    function HighlightDataCellColor(AGrid: TCustomDBGridEh; ACol, ARow: Integer;
      DataCol, DataRow: Integer; const Value: string; AState: TGridDrawState;
      InMultiSelect: Boolean; var AColor: TColor; AFont: TFont): Boolean; override;
    function HighlightNoDataCellColor(AGrid: TCustomDBGridEh; ACol, ARow: Integer;
      DataCol, DataRow: Integer; CellType: TCellAreaTypeEh; AState: TGridDrawState;
      InMultiSelect: Boolean; var AColor: TColor; AFont: TFont): Boolean; override;
  end;
 
procedure SetMultiSelectOptions(DBGridEh: TDBGridEh; IsMultiSelect: Boolean);
begin
  if IsMultiSelect then
  begin
    DBGridEh.AllowedSelections :=
      DBGridEh.AllowedSelections - [gstRectangle, gstColumns];
    DBGridEh.IndicatorOptions :=
      DBGridEh.IndicatorOptions + [gioShowRowselCheckboxesEh];
    DBGridEh.Options :=
      DBGridEh.Options + [dgAlwaysShowSelection, dgMultiSelect] - [dgEditing];
    DBGridEh.OptionsEh :=
      DBGridEh.OptionsEh + [dghIncSearch, dghPreferIncSearch, dghRowHighlight];
    DBGridEh.RowSizingAllowed := False;
  end else
  begin
    DBGridEh.AllowedSelections :=
      DBGridEh.AllowedSelections + [gstRectangle, gstColumns];
    DBGridEh.IndicatorOptions :=
      DBGridEh.IndicatorOptions - [gioShowRowselCheckboxesEh];
    DBGridEh.Options :=
      DBGridEh.Options - [dgAlwaysShowSelection, dgMultiSelect] + [dgEditing];
    DBGridEh.OptionsEh :=
      DBGridEh.OptionsEh - [dghIncSearch, dghPreferIncSearch, dghRowHighlight];
    DBGridEh.RowSizingAllowed := True;
  end;
end;
 
{ TMyDBGridEhStyle }
 
function TMyDBGridEhStyle.HighlightDataCellColor(AGrid: TCustomDBGridEh;
  ACol, ARow, DataCol, DataRow: Integer; const Value: string;
  AState: TGridDrawState; InMultiSelect: Boolean; var AColor: TColor;
  AFont: TFont): Boolean;
begin
  Result := inherited HighlightDataCellColor(AGrid, ACol, ARow, DataCol,
    DataRow, Value, AState, InMultiSelect, AColor, AFont);
  if InMultiSelect and not (gdFocused in AState) and
    not (gdSelected in AState) then
    AColor := TColor($FFEFCF);
  if (dghRowHighlight in AGrid.OptionsEh) and (ARow = AGrid.Row) then
    AColor := clHighlight;
end;
 
function TMyDBGridEhStyle.HighlightNoDataCellColor(AGrid: TCustomDBGridEh;
  ACol, ARow, DataCol, DataRow: Integer; CellType: TCellAreaTypeEh;
  AState: TGridDrawState; InMultiSelect: Boolean; var AColor: TColor;
  AFont: TFont): Boolean;
begin
  Result := inherited HighlightNoDataCellColor(AGrid, ACol, ARow, DataCol,
    DataRow, CellType, AState, InMultiSelect, AColor, AFont);
  if InMultiSelect and not (gdFocused in AState) and
    not (gdSelected in AState) then
    AColor := TColor($FFEFCF);
  if (dghRowHighlight in AGrid.OptionsEh) and (ARow = AGrid.Row) then
    AColor := clHighlight;
end;
 

 
 Тут правильный расклад всех опций на мультиселект.
Стиль я меняю так:
 
initialization
  SetDBGridEhDefaultStyle(TMyDBGridEhStyle.Create).Free;
end.
 
Добавлено:
miwa
Хотите возразить приведите реальный код без Букмарков. Мы может как Вы делать станем.....

Всего записей: 291 | Зарегистр. 16-01-2014 | Отправлено: 18:46 27-03-2014
xpin2013



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
miwa
Ой простите голубчик. Я неправильно всё интерпретировал. Я сейчас переношу старый для Delphi7 DevExpress на XE5. На 2010 я эти компоненты портировал, но в XE5 ещё морока с TBookmark. В общем я просто заработался и против Вас лично ничего не имею. Вы правильно сказали SelectedRows

Всего записей: 291 | Зарегистр. 16-01-2014 | Отправлено: 18:34 01-04-2014
Schnider

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Грид в режиме дерева (TreeList.Active), хочу перетаскивать (Drag&Drop) строки из одного узла в другой, такое возможно?

Всего записей: 9 | Зарегистр. 20-03-2011 | Отправлено: 16:39 22-04-2014
Открыть новую тему     Написать ответ в эту тему

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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Ehlib


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru