Если вы читаете эту книгу, значит вы подумываете о том, как бы поставить и попробовать Ubuntu. Наверняка, вы не захотите сразу отказываться от Windows и поставите Ubuntu, как вторую ОС (операционную систему). Возможно, вы как и я долго метались от дистрибутива к дистрибутиву и решали, какой же установить. Уверяю вас, вы сделали правильный выбор. Данная книга проведёт небольшую, но базовую экскурсию на тему установки и настройки. Я уверен, что вы найдёте эту книгу интересной для себя. Если у вас возникают какие-либо вопросы, я могу осветить их в новой версии этой книги. С радостью выслушаю критику, пожелания и вопросы. Для связи со мной использовать почту [email protected]. Для получение бесплатных консультаций или ответов на ваши вопросы используйте контакты, полученные после подписки на рассылку http://ubuntubook.ru. С уважением, Дмитрий Котенок. |
Опираясь на исследования в области психологии, авторы показывают, что ключ к успеху в бизнесе – высокоэффективная корпоративная культура. Авторы доказывают, что вдохновляющая культура не возникает из ниоткуда: она опирается на научные методы. Из книги вы узнаете, как выстроить в компании культуру с нуля, как оценить нынешнюю культуру и какие изменения внести, если она испытывает трудности. Книга предназначена для CEO, рекрутеров, бизнес-тренеров и психологов. На русском языке публикуется впервые. |
Вопросы и Ответы
46. Возможно ли определить общую ширину всех видимых полей TDBGrid во время работы приложения?
Желание узнать полную ширину компоненты TDBGrid возникает при необходимости отображения всей сетки без горизонтальной полосы прокрутки. При этом необходимо учитывать не только ширину всех видимых полей, но и общую ширину разделительных линий (если они есть), ширину столбца индикации (если он есть), и ширину вертикальной полосы прокрутки (есть всегда).
Ширина одной разделительной линии равна одному пикселу, ширина столбца индикации - примерно 11-15 (в зависимости от различных факторов), ширина полосы прокрутки является системной информацией.
............
function TForm1.GridWidth(DBG:
TDBGrid):Integer; cMEASURE_CHAR = '0'; VAR i, iColumns, iColWidth, iTitleWidth, iCharWidth : Integer; BEGIN {Ширина вертикальной полосы
прокрутки} FOR i := 0 TO FieldCount-1 DO WITH Fields[i] DO IF Visible THEN BEGIN iColWidth := iCharWidth*DisplayWidth; iTitleWidth := DBG.Canvas.TextWidth(DisplayLabel); END; END; {Ширина столбца индикатора} Inc(iColumns, 1); END; Inc(Result, iColumns) ELSE Inc(Result, 1); END; ............
CONST
iEXTRA_COL_PIX = 4;
iINDICATOR_WIDE = 15;
Result := GetSystemMetrics(SM_CXVSCROLL);
iColumns := 0;
{Ширина видимых столбцов}
iCharWidth := DBG.Canvas.TextWidth(cMEASURE_CHAR);
WITH DBG.DataSource.DataSet DO
IF dgTitles IN DBG.Options THEN BEGIN
IF iColWidth
Inc(iColumns, 1);
Inc(Result, iColWidth+iEXTRA_COL_PIX);
IF dgIndicator IN DBG.Options THEN BEGIN
Inc(Result, iINDICATOR_WIDE);
{Ширина всех разделительных линий}
IF dgColLines IN DBG.Options THEN
...предыдущая страница следующая...
оглавление