Новые книги

Книга «хакеры с барсетками» – это пошаговая инструкция для собственников бизнеса, которые хотят увеличить свои продажи в интернете, а также для специалистов, занимающихся управлением проекта по созданию веб-сайта компании.

Книга позволит вам, даже не имея специальных знаний, создать очередь клиентов на своем интернет-сайте.

Большинство из приведенных в ней примеров – это примеры из нашего опыта, а так же истории, с которыми к нам приходили клиенты, обманутые горе-рекламщиками и доморощенными сайтостроителями.

Структура книги повторяет алгоритм, по которому мы создаем

Поэтому вы можете просто брать и последовательно прорабатывать информацию из каждой главы для своего бизнеса.

интернет-сайты, посещаемые, продающие и наполненные качественной информацией.
В словосочетании «творческое мышление» главное слово – мышление. Оно само по себе творческий акт. Все новое, интересное, сложное – пища для ума, и пищу эту окружающий мир поставляет в избытке. А переработать материал в новые идеи можно, используя приемы из этой книги, написанной известным российским блогером (40,000 читателей!) Дмитрием Чернышевым, работа которого – креативный директор в рекламном агентстве – почти полтора десятка лет связана с ежедневной генерацией идей.

Вопрос и Ответ 46

Вопросы и Ответы


      46. Возможно ли определить общую ширину всех видимых полей TDBGrid во время работы приложения?

      Желание узнать полную ширину компоненты TDBGrid возникает при необходимости отображения всей сетки без горизонтальной полосы прокрутки. При этом необходимо учитывать не только ширину всех видимых полей, но и общую ширину разделительных линий (если они есть), ширину столбца индикации (если он есть), и ширину вертикальной полосы прокрутки (есть всегда).

      Ширина одной разделительной линии равна одному пикселу, ширина столбца индикации - примерно 11-15 (в зависимости от различных факторов), ширина полосы прокрутки является системной информацией.

      Пример:

      ............

      function TForm1.GridWidth(DBG: TDBGrid):Integer;
      CONST

        cMEASURE_CHAR = '0';
        iEXTRA_COL_PIX = 4;
        iINDICATOR_WIDE = 15;

      VAR

        i, iColumns, iColWidth, iTitleWidth, iCharWidth : Integer;

      BEGIN

        {Ширина вертикальной полосы прокрутки}
        Result := GetSystemMetrics(SM_CXVSCROLL);
        iColumns := 0;
        {Ширина видимых столбцов}
        iCharWidth := DBG.Canvas.TextWidth(cMEASURE_CHAR);
        WITH DBG.DataSource.DataSet DO

          FOR i := 0 TO FieldCount-1 DO

            WITH Fields[i] DO

              IF Visible THEN BEGIN

                iColWidth := iCharWidth*DisplayWidth;
                IF dgTitles IN DBG.Options THEN BEGIN

                  iTitleWidth := DBG.Canvas.TextWidth(DisplayLabel);
                  IF iColWidth

                END;
                Inc(iColumns, 1);
                Inc(Result, iColWidth+iEXTRA_COL_PIX);

              END;

        {Ширина столбца индикатора}
        IF dgIndicator IN DBG.Options THEN BEGIN

          Inc(iColumns, 1);
          Inc(Result, iINDICATOR_WIDE);

        END;
        {Ширина всех разделительных линий}
        IF dgColLines IN DBG.Options THEN

          Inc(Result, iColumns)

        ELSE Inc(Result, 1);

      END;

      ............


...предыдущая страница следующая...
оглавление





"Вопрос и Ответ 46"
Copyright © "В помощь Веб-Мастеру" (Alexander D. Belyaev) 2005-2024 .
При перепечатке любого материала видимая ссылка на источник "В помощь Веб-Мастеру" и все имена, ссылки авторов обязательны!
Время генерации страницы: 0.078