¿Cómo se elimina la línea negra de un evento OnTitleClick de Delphi DBGrid?

Tengo un Delphi DBGrid que parece normal cuando se carga por primera vez. He configurado un OnTitleClick evento que ordena el DBGrid por la columna cuando se hace clic en el título. Tan pronto como haces clic en el título, el título de la columna actúa como un botón que se presiona y aparece una línea negra fea. (Vea la Fig.2 a continuación)

Tan pronto como finaliza el evento de clic, la cuadrícula se ve normal nuevamente.

¿Cómo evita que aparezca esta línea negra cuando hace clic en el título de la columna?

enter image description here

EDITAR: QC enviado a Embarcadero

Si bien desactivar la capacidad de cambiar el tamaño de las columnas hace que desaparezca el comportamiento de la línea negra, elimina una característica muy agradable. Creo que este comportamiento debe corregirse. He enviado lo siguiente QC 98255 a Embarcadero. Vote por esta entrada.

ACTUALIZACIÓN: 2017-07-30

Encontré dónde se dibuja esta línea negra horizontal.
Rejillas Vcl. > procedimientos TCustomGrid.DrawMove;

Canvas.Pen.Width está establecido en 5. Lo cambié para que Canvas.Pen.Width: = 1;
Se ve mucho mejor. Ahora, cuando hice clic en el "Contact_Last" En la celda de título, la línea indicadora negra tiene solo un píxel de ancho y es mucho menos intrusiva.

enter image description here

procedure TCustomGrid.DrawMove;
var
  OldPen: TPen;
  Pos: Integer;
  R: TRect;
begin
  OldPen := TPen.Create;
  try
    with Canvas do
    begin
      OldPen.Assign(Pen);
      try
        Pen.Style := psDot;
        Pen.Mode := pmXor;
        //+----------------------------------------------------------------+
        // Modified 2017-07-30 by Michael J Riley (MJR)
        // Changed Pen.Width from 5 to 1
        // This makes the vertical black move-indicator line 1 pixel wide
        // Which is the same width as column resize vertical line
        //+----------------------------------------------------------------+
        //Pen.Width := 5;
        Pen.Width := 1;
        if FGridState = gsRowMoving then
        begin
          R := CellRect(0, FMovePos);
          if FMovePos > FMoveIndex then
            Pos := R.Bottom else
            Pos := R.Top;
          MoveTo(0, Pos);
          LineTo(ClientWidth, Pos);
        end
        else
        begin
          R := CellRect(FMovePos, 0);
          if FMovePos > FMoveIndex then
            if not UseRightToLeftAlignment then
              Pos := R.Right
            else
              Pos := R.Left
          else
            if not UseRightToLeftAlignment then
              Pos := R.Left
            else
              Pos := R.Right;
          MoveTo(Pos, 0);
          LineTo(Pos, ClientHeight);
        end;
      finally
        Canvas.Pen := OldPen;
      end;
    end;
  finally
    OldPen.Free;
  end;
end;

preguntado el 28 de agosto de 11 a las 01:08

Al no tener Delphi frente a mí (y jurar en 1999 que nunca volvería a usar un control de enlace de datos), parece un marcador de inserción de reordenamiento de columna. ¿Existe una propiedad de "permitir movimiento de columna"? -

@Ian: hay una opción booleana llamada dgColumnResize. Cuando es cierto, produce la línea negra. Cuando es falso, funciona muy bien. Sin línea negra. Tampoco hay acción de botón hacia abajo del título de la columna. Gracias. Haga de esto una respuesta y la votaré. -

1 Respuestas

La línea negra parece un marcador de inserción de orden de columna.

Intente buscar una opción que deshabilite el reordenamiento de columnas.

Respondido 28 ago 11, 07:08

En realidad, se llama dgColumnResize. Cuando se establece en Verdadero, aparece la línea negra y el título actúa como un botón. Cuando se establece en False, no hay una línea negra y el título no se presiona hacia abajo como un botón. No renuncie a los controles vinculados a datos hasta que haya leído el nuevo libro de Cary Jensens "Delphi in Depth: ClientDataSets". - Michael Riley - También conocido como Gunny

si apagas dgColunmResize, estás eliminando dos actividades vitales que a los usuarios (me incluyo) les gusta mucho. 1.) La capacidad de cambiar el tamaño de las columnas 2.) La capacidad de mover columnas. La otra característica interesante que desaparece ... La celda de título NO se presiona como un botón cuando se hace clic en ella. - Michael Riley - También conocido como Gunny

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.