Форум: "Начинающим";
Текущий архив: 2009.05.03;
Скачать: [xml.tar.bz2];
ВнизCheckListBox с Columns = 2 без Horizontal Scroll Найти похожие ветки
← →
Дмитрий (2009-03-16 15:38) [0]Доброго времени суток, уважаемые.
Имею на панели
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... Не подходят, по некоторым причинам.
← →
немо2 (2009-03-16 16:06) [1]А в runtime тоже есть скрол?
в D7 только в дизайне, в рантайме без скрола показывает
← →
Дмитрий (2009-03-16 19:53) [2]Height увеличиваю, Scroll исчезает. Но все равно между колонками расстояние (навскидку) 10-12 символов. И строки из второй колонки обрезаются. Не есть хорошо. Согласен на OwnerDraw. Но как ? Сам ручками ни разу не делал...
← →
Дмитрий (2009-03-17 10:16) [3]Нашел в 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-17 10:17) [4]Уп-с... Вроде бы CODE вставлял при ответе... Видимо что-то у кого-то с генами не то...
← →
Дмитрий (2009-03-18 07:37) [5]Up.
← →
Дмитрий (2009-03-20 19:24) [6]Всем спасибо за ответы, видимо очень сложный вопрос задал. Надо было про внедрение в чужие процессы или взаимодействие нескольких потоков задать...
Кинул на панель 11 CheckBox. Тема закрыта.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.05.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c