Заголовки колонок в TStringGrid

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Заголовки колонок в TStringGrid

Сообщение krab » 27.03.2010 16:32:49

Как отключить показ заголовков колонок в TStringGrid? Пробовал устанавливать FixedRows в 0 в среде - заголовки исчезают, но после добавления строк в грид появляются снова, затирая первую из добавленных строк...
krab
постоялец
 
Сообщения: 108
Зарегистрирован: 17.02.2010 18:23:08

Re: Заголовки колонок в TStringGrid

Сообщение Maxizar » 27.03.2010 20:05:45

Операция типа StringGrid1.FixedCols:=1 //Вкл фиксированную колонку
else StringGrid1.FixedCols:=0;//Откл фиксированную колонку, не скрывают или показывают заголовок, а меняют вид (начертание, фон, картинку, выпуклость и т д) Нулевой строки или колонки, тобишь для того чтоб все было айс нужно самому писать переиндексацию содержания таблицы вот тебе код в помощь:
На форме таблица, 2 чекбокса и две кнопки см коменты, реализовал сохранение и востановление верхнего заголовка, реализацию бокового сделаешь сам по подобию.

Код: Выделить всё
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  Grids, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure CheckBox1Change(Sender: TObject);
    procedure CheckBox2Change(Sender: TObject);
    procedure FormShow(Sender: TObject);
    Procedure Update(Row:Boolean; Fixed:Boolean);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;
  TRow:TStringList;
implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.CheckBox1Change(Sender: TObject);
begin
  if CheckBox1.Checked then
     StringGrid1.FixedCols:=1 //Вкл фиксированную колонку
     else
     StringGrid1.FixedCols:=0;//Откл фиксированную колонку
end;

procedure TForm1.Button2Click(Sender: TObject);
begin  //Увеличиваем количество строк на один типа Инкремента :)
  StringGrid1.RowCount:=StringGrid1.RowCount+1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin  //Увеличиваем количество Колонок на один типа Инкремента :)
   StringGrid1.ColCount:=StringGrid1.ColCount+1;
end;

procedure TForm1.CheckBox2Change(Sender: TObject);
begin
     if CheckBox2.Checked then
       begin
     StringGrid1.FixedRows:=1;   //Вкл фиксированную Строку
     Update(true,True);
     end
     else
       begin
     StringGrid1.FixedRows:=0; //Откл фиксированную Строку
     Update(true,false);
       end;
end;

procedure TForm1.FormShow(Sender: TObject);
var I:Integer;
begin
    TRow:=TStringList.Create;
    TRow.Assign(StringGrid1.Rows[0]);  //Делаем копию нашего заголовка :)
end;

procedure TForm1.Update(Row: Boolean; Fixed: Boolean);
var I:Integer;
begin
  if Row then //Переиндексация строк
   if Fixed then  //Произошла фиксация те нужно сместить вниз
     begin

      for I:=StringGrid1.RowCount-1 downto 1 do
          StringGrid1.Rows[I]:= StringGrid1.Rows[I-1];
          StringGrid1.Rows[0]:=TRow;  //Востановление заголовка
     end
    else //Сняли фиксацию те нужно сместить Вверх
      begin

      for I:=1 to StringGrid1.RowCount-1 do
         StringGrid1.Rows[I-1]:= StringGrid1.Rows[I];
        StringGrid1.Rows[StringGrid1.RowCount-1].Clear;//Очистка последней строки
      end;
end;

end.



В вложении приложение с кодом, даже без подписей кнопок и тп, разбирешся по коду :)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 30

Рейтинг@Mail.ru