16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"RE:StringGridからの表引関数作成支援"
この発言は #00590 ワカシ さんのStringGridからの表引関数作成支援 に対するコメントです
不具合があったので訂正いたしますm(_ _)m
くだらないUPで申し訳ないです。表を引くような関数を作るときにCase文を
書いていくのが面倒だったのでStringGridから表引き関数を所定のTextFileに
おとしこむだけのものです(^^;)
(給与) (扶養家族) 0 1 2 3
----------------------------------------------------------------
205000 9750 6590 3420 250
207000 9890 6730 3560 390
209000 10030 6870 3700 530
上記のような表から関数を作るときにCase文で書くと大変なのでStringGridの
内容を関数化してDelphiで使えるユニットファイルにします。
Form上には[Edit][StringGrid][Button]を配置します。
StringGridはFixedColsとFixedRowsは0にして、goEditingをTrueに設定します。
procedure TForm1.Button1Click(Sender: TObject);
var
F: TextFile;
i, j : Integer;
Filen: String; //関数名&保存するFile名
Temp : String;
begin
Filen := Edit1.Text;
AssignFile( F, Filen +'.pas' ); //ユニットファイルとして保存
Rewrite( F );
try
Writeln(F,'Unit '+ Filen + ';');
Writeln(F,'');
Writeln(F,'interface');
Writeln(F,'');
Writeln(F, 'function ' + Filen
+ '( ColData, RowData: Integer ):Integer;' );
Writeln(F,'');
Writeln(F,'implementation');
Writeln( F, 'function ' + Filen
+ '( ColData, RowData: Integer ):Integer;' );
Writeln( F, 'begin' );
Writeln( F, ' Result := 0;' );
Writeln( F, ' case ColData of' );
with StringGrid1 do begin
for i := 1 to RowCount - 1 do begin
if i = RowCount - 1 then
begin
Temp := ' else';
end
else
begin
Temp := ' ' + Cells[ 0, i ] + '..' +
IntToStr( StrToInt( Cells[ 0, i + 1 ] ) - 1 ) + ':';
end;
Writeln( F, Temp );
Temp := ' case RowData of';
Writeln( F, Temp );
for j := 1 to ColCount - 1 do begin
Temp := ' ' + StringGrid1.Cells[ j, 0 ]
+ ': Result := '
+ StringGrid1.Cells[ j, i ] + ';' ;
Writeln( F, Temp );
end;{for j := 1 to RowCount - 1 do}
Writeln( F, ' end;{case RowData of}' );
end;{for i := 1 to ColCount - 1 do}
Writeln( F, ' end;{case ColData of}' );
Writeln( F, 'end;' );
end;{with StringGrid1 do}
finally
CloseFile( F );
end;
end;
98/6/24(Wed) QZE02267 ワカシ
Flying with AirCraft 97 V2.07A
GATEWAY 改ASUS TE97E with MMX233
Original document by ワカシ 氏 ID:(QZE02267)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|