Модератор: Модераторы
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.
Сейчас этот форум просматривают: Google [Bot] и гости: 30