Убегают столбики в StringGrid.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Убегают столбики в StringGrid.

Сообщение dunin » 12.10.2010 08:06:39

VirtUX писал(а):Как, уже однажды, посоветовали мне, хочи предложить и Вам использовать KControls. Там очень хорошо сделан Grid (например: есть возможность объединять ячейки) - не глючит. А стандартный Grid - имеет ряд ошибок, запостенных в багтрекере. Можете добавить еще одну здесь ;)

KGrid это DBGrid ???
Ищу замену RxDBGrid от alexs. Нужен DBGrid с многострочными заголовками и подвалом, т.е. фиксированной нижней строкой.
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Убегают столбики в StringGrid.

Сообщение Nik » 12.10.2010 10:41:11

KGrid - это сторонний компонент, в LCL не входит, живёт здесь.
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Убегают столбики в StringGrid.

Сообщение dunin » 12.10.2010 11:06:55

Nik писал(а):KGrid - это сторонний компонент, в LCL не входит, живёт здесь.

Ага. Спс. Поставил уже.
У kgrid него многострочные заголовки вообще есть? Не получается найти/включить...
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Убегают столбики в StringGrid.

Сообщение Nik » 12.10.2010 11:11:02

Судя по демке - есть (см. kgriddemolaz, вкладка megre cells).
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Убегают столбики в StringGrid.

Сообщение VirtUX » 12.10.2010 22:01:24

dunin писал(а):У kgrid него многострочные заголовки вообще есть?

100% есть! В одной из прог использовал эту фичу. Но уже не помню как управлять.
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: Убегают столбики в StringGrid.

Сообщение GAMER » 12.10.2010 23:12:05

Написал в freepascal bugtracker.
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Убегают столбики в StringGrid.

Сообщение GAMER » 14.10.2010 11:50:33

Словил, как реализовать баг :) Если откомпилировать в "Классической теме", а запускать в теме "Windows XP", то баг имеет место.
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Убегают столбики в StringGrid.

Сообщение GAMER » 15.10.2010 12:39:03

Предлагают использовать свойство AutoFillColumns. Но разве для этого оно предназначено?

Добавлено спустя 11 часов 31 минуту 5 секунд:
Если кто-то желает подключиться к решению проблемы, присоединяйтесь: http://bugs.freepascal.org/view.php?id=17610
А то я не совсем хорошо понимаю, что предлагают разработчики.

Добавлено спустя 3 минуты 43 секунды:
Modifying grid's width may be OK for an application but is not something the grid should do, what if the grid is resized automatically? like when it's anchored or aligned.

Что этим хотят сказать?
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Убегают столбики в StringGrid.

Сообщение Brainenjii » 16.10.2010 00:30:52

Как умею ^_^ переводить писал(а):Возможно подгонять ширину таблицы, но это не всегда возможно, что если таблица изменяет размер автоматом? Когда она привязана или выровнена.

Как вариант - пользоваться ColWidth и рассчитывать ширину самостоятельно в событии OnResize (я обычно обрабатываю OnResize формы), оставив запас под скролл?
//хотя я бы все-равно предложил переделать на VirtualStringTreeView ^_^
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Убегают столбики в StringGrid.

Сообщение GAMER » 16.10.2010 00:34:59

Я так и предлагал, но проблема в том, как просчитать ширину скролла? Либо просто делать запас ширины между последней колонкой и скроллом, но это не красиво.

О VirtualStringTreeView где можно почитать?
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Убегают столбики в StringGrid.

Сообщение Brainenjii » 16.10.2010 00:41:53

Код: Выделить всё
...
Uses
  ..., LCLIntf;
...

А дальше примерно так

//upd
А ещё там есть
Код: Выделить всё
function GetScrollBarSize(Handle: HWND; SBStyle: Integer): integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
function GetScrollbarVisible(Handle: HWND; SBStyle: Integer): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Убегают столбики в StringGrid.

Сообщение GAMER » 16.10.2010 01:21:54

GetScrollBarSize - вариант хороший для меня. Но не для тех, кто использует авторасчет ширины грида в зависимости от других параметров.

Добавлено спустя 16 минут 23 секунды:
Я делаю так:
Код: Выделить всё
ScrollBarWidth:=GetScrollBarSize(Handle, 2);
  StringGrid1.Width:=StringGrid1.Columns[0].Width+
  StringGrid1.Columns[1].Width+
  StringGrid1.Columns[2].Width+
  StringGrid1.Columns[3].Width+
  StringGrid1.Columns[4].Width+StringGrid1.ColCount+
  ScrollBarWidth;     
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Убегают столбики в StringGrid.

Сообщение Brainenjii » 16.10.2010 10:33:29

Я вообще не совсем понимаю, при каких условиях можно менять ширину грида ^_^ Обычно Width для меня - данность, из-за упомянутых девелоперами "anchored or aligned" ^_^ И я считал бы ширину столбца:
Код: Выделить всё
Procedure ResizeCols(Const aGrid: TStringGrid;
  Const aMainCol: Integer; Const aMinWidth: Integer = 0);
Var
  i, aOtherCols: Integer;
Begin
  aOtherCols := 5;
  For i := 0 To aGrid.ColCount - 1 Do
    If Not(i = aMainCol) Then
      Inc(aOtherCols, aGrid.ColWidths[i] + 1);
  If GetScrollbarVisible(aGrid.Handle, 1) Then
    Inc(aOtherCols, GetScrollBarSize(aGrid.Handle, 1));
  aGrid.ColWidths[aMainCol] := Max(aMinWidth, aGrid.Width - aOtherCols);
End;

Но TVirtualStringTreeView делает это за меня ^_^ Читать о нём здесь, а брать - отсюда
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Убегают столбики в StringGrid.

Сообщение Nik » 16.10.2010 11:19:33

GAMER писал(а):GetScrollBarSize - вариант хороший для меня. Но не для тех, кто использует авторасчет ширины грида в зависимости от других параметров.

Я расчитываю ширину "подгоночного" столбца вручную (подгоняю не последний столбец, а столбец с самыми "длинными" данными - так экономнее). Если использовать в формуле расчёта GetScrollBarSize - вполне неплохо получится, наверное.
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Убегают столбики в StringGrid.

Сообщение GAMER » 16.10.2010 11:44:50

Я согласен с авторами, для которых ширина грида более приоритетная, чем ширина столбца (-ов). Я привел пример, в котором ширина грида не критична. Хотя, менять ширину столбца, наверное, более верно.

Добавлено спустя 1 час 27 минут 10 секунд:
Подскажите, что за второй параметр в
Код: Выделить всё
function GetScrollBarSize(Handle: HWND; SBStyle: Integer): integer; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}

Подозреваю, что тип скроллбара.
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Пред.След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 13

Рейтинг@Mail.ru