Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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 только в дизайне, в рантайме без скрола показывает


Наверх

Титульная страница Поиск, карта сайта Написать письмо