2016-08-15 3 views
3

Есть ли способ захватить название названия с перемещением мыши над заголовком Dbgrids?Мышь над названием dbgrid

Идея заключается в том, чтобы заголовок отображался только при перемещении курсора по полю заголовка.

Tnx заранее.

ответ

5

В приведенном ниже коде показано, как получить «заголовок» столбца сетки, указатель мыши закончился.

Фактически, то, что отображается в заголовке столбца столбца TDBGrid, является свойством Caption объекта Title этого столбца, который имеет и другие свойства. Приведенный ниже код читает и отображает свойство Caption объекта Title.

Как вы можете видеть из интерактивной справки, объекты TColumn, которые являются столбцами сетки, также имеют Field и FieldName свойства, которые вы можете прочитать при необходимости.

procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: 
    Integer); 
var 
    Col, 
    Row : Integer; 
begin 
    Col := DBGrid1.MouseCoord(X, Y).X; 
    Row := DBGrid1.MouseCoord(X, Y).Y; 
    Caption := Format('Col: %d, Row:%d', [Col, Row]); 
    if (Col > 0) and (Col <= DBGrid1.Columns.Count) then 
    Caption := Caption + DBGrid1.Columns[Col - 1].Title.Caption; 
end; 
+0

Это сделало трюк. Спасибо за помощь. – Ledzouz

1

Чтобы ответить на вопрос, что вам нужно знать здесь

1: Какие клетки мыши находится над (и, следовательно, является ли он над заглавной Cell)

и

2: имя поля (название).

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

1: предназначен для захвата события OnMouseMove и использования свойства MouseCoord.

2: использовать результирующее значение столбца (если значение Row равно 0) и свойство Fields [ACol] .FieldName.

Но, возможно, более прямой путь к достижению того, что вы хотите, - установить dgTitleHotTrack в параметрах и установить стиль hottrack (который, вероятно, должен был быть обычным).

+1

Не уверен, как это отвечает на вопрос. Кажется более длинным комментарием для меня. –

Смежные вопросы