Hola Catublipas
Cita:
Empezado por Catublipas
...
Uso Delphi xe7 ¿tiene algo que ver?
|
Por los motivos que te expuse no puedo asegurarlo, pero es una posibilidad.
Para salir de dudas, proba este ejemplo que funciona correctamente en
Delphi 7:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, Menus, XPMan;
type
TStringGrid = class(Grids.TStringGrid) private
FBorde: Boolean;
protected
procedure Paint; override;
public
property Borde: Boolean read FBorde write FBorde default False;
end;
TForm1 = class(TForm)
StringGrid1: TStringGrid;
PopupMenu1: TPopupMenu;
MenuItemBorde: TMenuItem;
XPManifest1: TXPManifest;
procedure FormCreate(Sender: TObject);
procedure MenuItemBordeClick(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation {$R *.dfm}
procedure TStringGrid.Paint;
var
R: TRect;
begin
inherited;
if not FBorde then
begin
R := CellRect(Col, Row);
DrawFocusRect(Canvas.Handle, R);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
c, r: Integer;
sg : TStringGrid;
begin
sg := StringGrid1;
sg.Rows[0].CommaText := ',Col1,Col2,Col3,Col4,Col5';
for r := 1 to sg.RowCount - 1 do
sg.Cells[0, r] := Format('Fil%d',[r]);
for c := sg.FixedCols to sg.ColCount - 1 do
for r := sg.FixedRows to sg.RowCount - 1 do
sg.Cells[c,r] := IntToStr(c+r);
sg.PopupMenu := PopupMenu1;
sg.Borde := True; end;
procedure TForm1.MenuItemBordeClick(Sender: TObject);
const
TXT: array[Boolean] of string = ('Poner borde', 'Quitar borde');
begin
StringGrid1.Borde := not StringGrid1.Borde;
MenuItemBorde.Checked := StringGrid1.Borde;
MenuItemBorde.Caption := TXT[StringGrid1.Borde];
StringGrid1.Refresh;
end;
end.
Muestra:
Saludos