Страница 2 из 2

СообщениеДобавлено: 15.05.2007 12:27:01
alexs
Очередное обновление
15.05.2007 - версия 1.1.1.75
+ В RxDBGrid добавлен метод OptimizeColumnsWidth(AColList:String) - подбирает
ширину колонки (колонок - перечисление через ";") по содержимому
+ В RxDBGrid добавлен метод OptimizeColumnsWidthAll - соотвественно производит автободбор
ширины для всех колонок
+ TRxColumn добавлен метод OptimizeWidth - подбор ширины указанной колонки
Для всех методов подбора ширины производится также выфетчивание всех записей
+ Опция rdgDblClickOptimizeColWidth в свойстве RxDBGrid.OptionsRx работает
- исправлен глюк расчёта высоты заголовка колонки для многострочного заголовка
- Исправлен глюк отерытия примера на RxDBGrid
+ В примере на RxDBGrid добавлен примера на оптимизацию ширины

СообщениеДобавлено: 16.05.2007 10:42:42
m_guest
А почему такая странная дата обновления Rx - 15.03.2007?
И в новости тоже самое переехало....

Учитывая, что в WhatsNew.rus.txt предыдущая версия прописана
28.03.2007 - версия 1.1.0.68

СообщениеДобавлено: 16.05.2007 10:56:27
alexs
Ну ошибся - кочено май должен быть

СообщениеДобавлено: 16.05.2007 13:17:45
Attid
все таки есть магическое информационое пространство
как раз недавно понадобился авторесайз колонок
делал для себя, а тут в rx появился =)
покладу пока сюда может кому пригодится , или покритикуют =)
код в RX еще не смотрел.

Код: Выделить всё
procedure ResizeGrid(var vGrid: TDBGrid);
var vNum:Integer;
var vLength:Integer;
var vColumn: TColumn;
begin
  for vNum := 0 to vGrid.Columns.Count -1 do
  begin
    vGrid.Columns.Items[vNum].Width := Length(vGrid.Columns.Items[vNum].Title.Caption)*8;
  end;
  while not vGrid.DataSource.DataSet.EOF do
  begin
    for vNum := 0 to vGrid.Columns.Count -1 do
    begin
      vColumn := TColumn(vGrid.Columns[vNum]);
      vLength := Length(vGrid.DataSource.DataSet.FieldByName(vColumn.FieldName).AsString)*8;
      if vGrid.Columns.Items[vNum].Width < vLength then
        vGrid.Columns.Items[vNum].Width := vLength;
    end;
    vGrid.DataSource.DataSet.Next;
  end;
  vGrid.DataSource.DataSet.First;
end;

СообщениеДобавлено: 16.05.2007 16:45:45
alexs
а почему ты умношаеш ширину символа на 8? ведь не обязательно моноширинные шрифты - надо работать через Canvas.TextWidth
и ещё - я в своём коде не учитываю ширину заголовка - только оринтируюсь на ширину содержимого

СообщениеДобавлено: 16.05.2007 23:12:59
Attid
а почему ты умношаеш ширину символа на 8?

ну на самом деле чтоб быстрее написать :roll:
хотя можно доработать вынести в отдельную ветку примеров,
+ поставить ограничение чтоб фетчил не больше видимых записей.
и есть косячек если первая колонка имеет длину в 1 символ.

СообщениеДобавлено: 17.05.2007 00:13:39
alexs
+ поставить ограничение чтоб фетчил не больше видимых записей

Это идея - надо будет действительно это добавить в код - а фишка будет включаться через опцию

СообщениеДобавлено: 19.05.2007 21:21:37
v-t-l
Есть мысли по RxDBGrid:
1. Вместо Footer и Filter Rows лучше сделать коллекцию закрепленных строк с опцией указания позиции (вверху/внизу) и возможностью пихать в них любые контролы.
2. "Странное" поведение заголовков колонок при изменении ширины, о котором писал Attid, неплохо было бы развить и для остальных строк. :D

Спасибо за библиотеку.

СообщениеДобавлено: 20.05.2007 01:50:56
alexs
v-t-l писал(а):1. Вместо Footer и Filter Rows лучше сделать коллекцию закрепленных строк с опцией указания позиции (вверху/внизу) и возможностью пихать в них любые контролы.

Это ты намекаеш на аналог CtrlGrid-а из дельфей? или просто как TPanel?
для первого случая - LCL ещё не позволяет это делать
а для второго случая - я не вижу смысла

v-t-l писал(а):2. "Странное" поведение заголовков колонок при изменении ширины, о котором писал Attid, неплохо было бы развить и для остальных строк

А это омжно попробовать - в смысле сделать многострочным и содержимое ячеек с данными

СообщениеДобавлено: 20.05.2007 12:19:12
v-t-l
CtrlGrid - это здорово, но я имел ввиду, чтобы каждой ячейке закрепленной строки можно было назначить в дизайн-тайме свой контрол. Позиция, размер, видимость и переходы между которыми контролировались бы гридом.

(или даже по два контрола - для состояния просмотра и для состояния правки ячейки)

СообщениеДобавлено: 21.05.2007 00:21:31
alexs
ну это ты круто загнул :-)
я пока даже так и не умею :-)))
глупый вопрос - а ЗАЧЕМ?

СообщениеДобавлено: 21.05.2007 16:38:54
v-t-l
alexs писал(а):я пока даже так и не умею :-)))


Но ведь ты создаешь комбобоксы в рантайме для строки фильтров.
Почему бы не указывать подготовленный в дизайнтайме контрол.

alexs писал(а):глупый вопрос - а ЗАЧЕМ?


Можно лепить любые контролы на ячейки грида (хоть панели с контролами и обработчиками) - почти CtrlGrid

СообщениеДобавлено: 22.05.2007 01:35:50
alexs
v-t-l писал(а):Но ведь ты создаешь комбобоксы в рантайме для строки фильтров.
Почему бы не указывать подготовленный в дизайнтайме контрол.

1. Комбобоксы работают только для одной строки
2. у меня нет времени на то, что мне самому не нужно - кстати - фильтра писал не я. соответсвенно - если хочеш такой функционал - давай код.

СообщениеДобавлено: 22.05.2007 14:57:21
Yogrik
alexs писал(а):
v-t-l писал(а):Но ведь ты создаешь комбобоксы в рантайме для строки фильтров.
Почему бы не указывать подготовленный в дизайнтайме контрол.

1. Комбобоксы работают только для одной строки
2. у меня нет времени на то, что мне самому не нужно - кстати - фильтра писал не я. соответсвенно - если хочеш такой функционал - давай код.

Ага, я тоже подумываю переписать на свой контрол, но займусь этим не раньше чем через месяц...:(