16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"設計時に書き込めるStringGrid"
この発言に対し以下のコメントが寄せられています
#00989 TN さん 設計時に書き込めるStringGrid
StringGridの内容を設計時に書き込めるグリッドです.
D4でしか確認していませんが,他のバージョンでも動くでしょう.
CellStrings property にCSV形式であらかじめ設計時に文字列を書き込んで
置けば実行時に再現されます.
TN(CQJ01721)
unit ClientStringGrid;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids;
type
TClientStringGrid = class(TStringGrid)
protected
FCellStrings: TStringList;
procedure SetCellStrings(St: TStrings);
function GetCellStrings: TStrings;
procedure CopyCellStringsToCell;
procedure Loaded; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property CellStrings: TStrings
read GetCellStrings write SetCellStrings;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TClientStringGrid]);
end;
{ TClientStringGrid }
procedure TClientStringGrid.CopyCellStringsToCell;
var
i: integer;
Line: TStringList;
begin
Line := TStringList.Create;
try
RowCount := FCellStrings.Count;
Line.CommaText := FCellStrings[0];
ColCount := Line.Count;
for i := 0 to FCellStrings.Count -1 do begin
Rows[i].CommaText := FCellStrings[i];
end;
finally
Line.Free;
end;
end;
constructor TClientStringGrid.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FCellStrings := TStringList.Create;
end;
destructor TClientStringGrid.Destroy;
begin
FCellStrings.Free;
inherited Destroy;
end;
function TClientStringGrid.GetCellStrings: TStrings;
var
i: integer;
begin
if not (csLoading in ComponentState) then begin
FCellStrings.Clear;
for i := 0 to RowCount -1 do begin
FCellStrings.Add( Rows[i].CommaText );
end;
end;
Result := FCellStrings;
end;
procedure TClientStringGrid.Loaded;
begin
inherited Loaded;
CopyCellStringsToCell;
end;
procedure TClientStringGrid.SetCellStrings(St: TStrings);
begin
FCellStrings.Assign(ST);
if St.Count < 1 then Exit;
CopyCellStringsToCell;
end;
end.
Original document by TN 氏 ID:(CQJ01721)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|