Не. Обычный TDBGrid. Не. Обычный TDBGrid. Игорь Шевченко, Елена Филиппова, Королевство Дельфи. Авторы ни в коем случае не отрицают. Тем не менее, придерживаются. Зная. тот факт, что при событиях рисования доступна вся клиентская область. Высота области рисования сейчас. DBGrid, как раз на одну строку. Так как это свойство объявлено protected. DBGrid'а была большая, чем. Этот компонент инкапсулирует двумерную таблицу, в которой строки. Компонент TDBGrid является потомком классов TDBCustomGrid И TCustomGrid. Компонент Delphi DBGrid – это визуальный компонент среды Delphi, предназначен для визуализации наборов данных. Этот компонент . THack. Grid = class(TCustom. Grid). property Row. Heights. Высоту области надо задать один раз, что и делается в обработчике. Form. Show. procedure TForm. ![]() Form. Show(Sender: TObject). После первого запуска программы обнаружен интересный эффект - при. Grid'ом. многострочность заголовков пропадает. Для тех, кто может работать с DBGrid, эта часть бесполезна. Теперь остальные. Для начала нам нужен компонент DataSource (вкладка . На форме нам понадобятся сетка DBGrid с вкладки Data Controls, с вкладки ADO компоненты ADOConnection и ADOTable, с вкладки Data Access . Нужен был именно компонент-связка, который печатает содержимое для. Название Print DBGrid v.1.0 URL Раздел VCL страница Grids -> Other. Компоненты доступа и представления данных в Delphi - Data access и Data. Таким образом, очевидно, что компонент DBGrid имеет более широкие . Настройка компонента DBGrid. Рассматриваются основные свойства для форматирования внешнего представления данных . Аналогичным образом она. Scroll. Bar'ов. Как я ни старался, победить. DBGrid. Рисование многострочных заголовков с использованием наследника. TDBGrid. В отличие от рисования нестандартных заголовков при использовании. TDBGrid, в наследнике такое рисование. Draw. Cell, который вызывается для всех ячеек грида, а не только для. Рисование нестандартных заголовков в этом случае. Draw. Cell в наследнике. Наше рисование будет вызвано только тогда, когда возникнет. Стандартный. внутренний редактор ячеек грида (TInplace. Editor) не всегда самый удобный вариант. Можно использовать собственные. Вот этим мы сейчас и. Вместо создания вручную компонент можно положить на форму. FEditor : = TDBCombo. Box. Create(Self). FEditor. Parent : = Self. FEditor. Visible : = false. FEditor. Style : = cs. Dropdown. List. FEditor. Data. Source : = DBGrid. Data. Source. FEditor. Data. Field : = 'STATE'. В данном примере список Combo. Box'а заполняется значениями из Picklist. Это можно сделать. On. Key. Press DBGrid'a, так и в обработчике. On. Key. Down. Я приведу пример обработчика On. Key. Press. Ниже на рисунке показан пример, где аналогичным образом в грид встроен TDBDate. Edit для редактирования полей. Самое распространенное. Верхний грид. содержит список всех стран с данными по площади и населению(Main. Grid), нижний — список, где. Total. Grid). 3. При синхронизации действий будем считать, что тот грид, который инициирует это действие — ведущий, а второй. Чтобы не зациклить синхронизацию, введем дополнительную переменную. Synch. Proccesed : Boolean. Для синхронизации необходимо обработать три события. Изменение позиции колонки; Горизонтальный скролинг(изменение колонки, которая оказывается первой видимой в гриде); Изменение ширины колонки. Поэтому, лучшим вариантом будет не. Положительные стороны этого способа уже описывались. Синхронизация заключается в том, чтобы сделать. Для этого нам понадобится свойство. TCustom. Grid. Left. Col (см. Это свойство protected, но так как мы создаем собственного. TDBGrid, то повысить его видимость нам не составит труда. Синхронизация в этом случае будет. Ведь у грида нет события On. Resize. Column.. It is called automatically when the. Columns property is recomputed, to adjust the column widths and ensure that. Этот метод автоматически вызывается всякий раз, когда изменяются настройки колонок, в том числе их ширина. Для того, чтобы понять, в какой области мы оказались (в области заголовка или данных), нам необходимо. Для этого создадим соответствующий метод в нашем наследнике. Tex. DBGrid. Mouse. To. Cell(X, Y: Integer; var ACol, ARow: Integer). Var Coord: TGrid. Coord. Coord : = Mouse. Coord(X, Y). ACol : = Coord. X. ARow : = Coord. Y. И теперь обработаем событие On. Mouse. Up. //- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -. Tf. Ex. DBG. Grid. Mouse. Up(Sender: TObject; Button: TMouse. Button; Shift: TShift. State; X, Y: Integer). Var Row, Col : Integer. APoint : TPoint. Grid : Tex. DBGrid. Grid: =Tex. DBGrid(Sender). Получим номер строки и столбца грида, над которыми произошел клик мышкой. Grid. Mouse. To. Cell(X,Y,Col,Row). IF Button = mb. Right. Then // Если мышка не попала на незаполненную область грида. IF (Col > = 0) AND (Row > =0 ) Then. Нажатие правой кнопки мыши, проверяем какое меню требуется вызвать. IF Row = 0 Then Grid. Pop. Up. Menu: =pm. Title. Else Grid. Pop. Up. Menu: =pm. Data. // Получаем из координат мыши(относительно грида — клиентские координаты). APoint : = Grid. Client. To. Screen(Point(X,Y)). Grid. Pop. Up. Menu. Popup(APoint. X,APoint. Y). //- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -Выделение цветом текущей строки. Этим способом поделился с нами Яловенко Юрий (Симферополь). При установке в опциях грида свойства dg. Row. Select, текущая строка всегда выделяется полностью, но. Разберем один из возможных. То есть имитирует обычный заголовок колонки. А вот на процедуре Draw. Sub. Header остановимся поподробнее. Для обеспечения гибкой настройки создадим два свойства. Property On. Get. Header. Text : TOn. Get. Header. Text read FOn. Get. Header. Text write FOn. Get. Header. Text. Property On. Get. Header. Rect : TOn. Get. Header. Rect read FOn. Get. Header. Rect write FOn. Get. Header. Rect.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
November 2017
Categories |