Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.05.03;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
4-1209066995
Тыщ
2008-04-24 23:56
2009.05.03
ProcessID и иконка родительской консольной программы


2-1237207156
madmech
2009-03-16 15:39
2009.05.03
Как рисовать на канве BitBtn?


6-1202811616
Doomer
2008-02-12 13:20
2009.05.03
NetBios


2-1237979966
Alexei
2009-03-25 14:19
2009.05.03
Проблема запуска с помощью ShellExecute


2-1237732684
madmech
2009-03-22 17:38
2009.05.03
Как запретить добавлять записи в DBGrid?