![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CheckListBox с Columns = 2 без Horizontal Scroll [D6, 95/98, ME, NT4, 2000, XP, 2003]
Дмитрий © (2009-03-16 15:38:00)Доброго времени суток, уважаемые.
Имею на панели
object CheckListBox1: TCheckListBox
Left = 8
Top = 24
Width = 417
Height = 102
BorderStyle = bsNone
Columns = 2
Flat = False
ItemHeight = 17
Items.Strings = (
'Аааааааааааааааааа'
'Бббббббббббббббббб'
'Вввввввввввввввввв'
'Гггггггггггггггггггггггг'
'Дддддддддддддддддд'
'Ееееееееееееееееее'
'Жжжжжжжжжжжжж'
'Зззззззззззззззззззз'
'Ииииииииииииииииии'
'Кккккккккккккккккк'
'Лллллллллллллллллл')
ParentColor = True
Style = lbOwnerDrawFixed
TabOrder = 0
Собственно, не хочется видеть Horizontal Scroll, а "сблизить" колонки. Есть конечно варианты : сделать строки короче, увеличить With, использовать несколько CheckBox... Не подходят, по некоторым причинам.
Дмитрий (2009-03-20 19:24:00) [1]Всем спасибо за ответы, видимо очень сложный вопрос задал. Надо было про внедрение в чужие процессы или взаимодействие нескольких потоков задать...
Кинул на панель 11 CheckBox. Тема закрыта.
Дмитрий (2009-03-18 07:37:00) [2]Up.
Дмитрий (2009-03-17 10:17:00) [3]Уп-с... Вроде бы CODE вставлял при ответе... Видимо что-то у кого-то с генами не то...
Дмитрий (2009-03-17 10:16:00) [4]Нашел в FAQ для StringGrid. Не то ?
Можно ли сделать так чтобы TStringGrid автоматически изменял ширину колонок, чтобы вместить самую длинную строчку в колонке?
procedure AutoSizeGridColumn(Grid : TStringGrid; column : integer);var i : integer; temp : integer; max : integer;begin max := 0; for i := 0 to (Grid.RowCount - 1) do begin temp := Grid.Canvas.TextWidth(grid.cells[column, i]); if temp > max then max := temp; end; Grid.ColWidths[column] := Max + Grid.GridLineWidth + 3;end;procedure TForm1.Button1Click(Sender: TObject);begin AutoSizeGridColumn(StringGrid1, 1);end;
Комментарий от Сергея (right_wrist@mail.ru)
Автосайз колонок и высоты рядов проще сделать так, наверное:
procedure WriteToCell(Sender :TStringGrid; ACol, ARow :integer; Value :variant);var Len: TSize;begin with Sender do begin Cells[ACol, ARow] := value; Win32Check(GetTextExtentPoint32(Canvas.Handle, Pchar(Cells[ACol, ARow]), Length(Cells[ACol, ARow]), Len)); if Len.cx > ColWidths[ACol] then ColWidths[ACol] := Len.cx+6; if Len.cy > RowHeights[ARow] then RowHeights[ARow] := Len.cy+2; end;end;
Дмитрий (2009-03-16 19:53:00) [5]Height увеличиваю, Scroll исчезает. Но все равно между колонками расстояние (навскидку) 10-12 символов. И строки из второй колонки обрезаются. Не есть хорошо. Согласен на OwnerDraw. Но как ? Сам ручками ни разу не делал...
немо2 (2009-03-16 16:06:00) [6]А в runtime тоже есть скрол?
в D7 только в дизайне, в рантайме без скрола показывает