ПредишенСледващото

InsertOrderBy # 40; Запитване, NewOrder # 41; ;

процедура TForm1. FormCreate # 40; Подател: TObject # 41; ;

TheWidth, а: Integer;

DBGrid1. Опции: = DBGrid1. Options - # 91; dgTitles # 93; ;

HeaderControl1. Секции. Добавете;

HeaderControl1. Секции. Предмети # 91; 0 # 93. Широчина: = 12;

Таблица 1. Ексклузивно: = True;

Таблица 1. Активен: = True;

за: = 1 до DBGrid1. Колони. граф правя

Таблица 1. Активен: = False;

Таблица 1. Ексклузивно: = False;

Таблица 1. Активен: = True;

След смяна на стандарт заглавната THeaderControl DBGrid, най-вече променихме (ЛЪЖА) dgTitles флаг имот Опции DBGrid компонент. След това добавете колона в HeaderControl и да си ширина, равна на 12. Това ще бъде празна колона, която има същата ширина като състоянието на лявата колона в DBGrid.
След това е необходимо да се уверите, че таблицата е отворен за изключителен достъп (няма други потребители не могат да го използват). Защото аз ще обясня малко по-късно.
Сега добавете в HeaderControl на секцията. създаваме за прибавят глава колона текст е същият, както в съответната DBGrid колоната. В цикъла ние преминаваме през всички колони на DBGrid и повторете заглавният текст колона и нейната височина. Ние също така да зададете стойностите за HeaderControl MinWidth и MaxWidth свойства равна на съответната ширина на колоната в DBGrid. Това им позволява да се променя ширината на колона. За да промените размера на високоговорителите, които се нуждаят от допълнително кодиране, и реших да не ви лиши от това удоволствие.
Сега най-забавната част. Отиваме да създадете индекс за всяка колона в DBGrid. Името на индекса ще бъде същото като името на колоната. Този код трябва да заключим в try..finally дизайн, защото има някои области, които не могат да бъдат индексирани (например гледане BLOB и Memo-поле). Когато се опитвате да се индексират тези области тя генерира изключение. Ние прихване това изключение и възможността nedopuskaet кликнете върху тази колона. Това означава, че колоните, съдържащи не-индексирани полета няма да реагират на едно кликване на мишката. Създаването на тези индекси дава обяснение защо на масата трябва да бъде отворен в режим на ексклузивен достъп. И накрая, ние затваряме масата, хвърли изключителност флаг и отново направи таблицата активни.
Последната стъпка. Когато кликнете върху HeaderControl ние трябва да включва правилния индекс масата. Създаване на събитие манипулатор OnSectionClick HeaderControl компонент, както е показано по-долу:

процедура TForm1. HeaderControl1SectionClick # 40;

HeaderControl: THeaderControl; Раздел: THeaderSection # 41; ;

Таблица 1. IndexName: = раздел. Текст;

Това е всичко! След натискане на заглавието на таблица колона IndexName стойност имот става компонент глава HeaderControl.
Ница и просто, нали? Въпреки това, има много места за подобрение. Така например, на вторичния щракване трябва да обнови реда на сортиране. Или възможност за промяна на размера на самите говорители. Опитайте сами, това не е трудно!
подобрения
Тук е подобрен код в сравнение с предишната версия на "Съвета", той се използва като име на индекс вместо удар с глава на име област.
Това подобрява гъвкавостта. Промените са посочени в курсив наклонена.

процедура TfrmDoc. FormCreate # 40; Подател: TObject # 41; ;

Dbgrid1. Опции: = DBGrid1. Options - # 91; DGTitles # 93; ;

Headercontrol1. секции. Добавете;

Headercontrol1. Секции. Предмети # 91; 0 # 93. Широчина: = 12;

за: = 1 до DBGRID1. Колони. граф правя

Свързани статии

Подкрепете проекта - споделете линка, благодаря!