掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
同じ処理を関数にまとめるには? (ID:6476)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Halbow さん,解決マーク後も見ていただき,感謝しています。 早速下記の,アドレスで調べました。 http://kakinotane.s7.xrea.com/dirDelphi2/d053.html 引数の渡し方は,あまり変わらないなあと思いましたが,私の場合 関数名の前に TForm1.IroHenko1(P1: integer); と TForm1 を つけないと Panels を認識してくれませんでした。 それで,あちこちのサイトの部品をつぎはぎしたコードではずかしいの ですが,前半部分を載せます。もし,お気づきの点がありましたら,いろ いろご指導ください。 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Pnl17: TPanel; Pnl23: TPanel; ……………………… TPanel は合計26個 StringGrid1: TStringGrid; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Label2: TLabel; procedure FormCreate(Sender: TObject); procedure StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private { Private 宣言 } // procedure IroHenko2(P1, P2: integer); public { Public 宣言 } Panels: array[1..11] of TPanel; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var i : integer; begin for i := 0 to 9 do begin StringGrid1.ColWidths[i] := 33; end; StringGrid1.Rows[0].CommaText := 'わ,ら,や,ま,は,な,た,さ,か,あ'; StringGrid1.Rows[1].CommaText := ',り,,み,ひ,に,ち,し,き,い'; StringGrid1.Rows[2].CommaText := 'を,る,ゆ,む,ふ,ぬ,つ,す,く,う'; StringGrid1.Rows[3].CommaText := ',れ,,め,へ,ね,て,せ,け,え'; StringGrid1.Rows[4].CommaText := 'ん,ろ,よ,も,ほ,の,と,そ,こ,お'; for i := 1 to 26 do begin Panels[i] := FindComponent('Pnl'+IntToStr(i)) as TPanel; Panels[i].Tag := i; end; end; //procedure TForm1.IroHenko2(P1, P2: integer); //var // i : Integer; //begin // if (P1 > 26) or (P1 < 1) then exit; // ここを貼りつけ // if (P2 > 26) or (P2 < 1) then exit; // // for i := 1 to 26 do // begin // Panels[i].color := clBtnFace; // end; // Panels[P1].Color := clYellow; // Panels[P2].Color := clYellow; //end; procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var RC, CC: integer; begin StringGrid1.MouseToCell(x, y, RC, CC); if (RC = -1) or (CC = -1) then Exit; Edit1.Text := StringGrid1.Cells[RC, CC]; Case RC of 9: begin Case CC of 0: begin Edit2.Text := 'a'; Edit3.Text := 'A'; end; 1: begin Edit2.Text := 'i'; Edit3.Text := 'I'; end; 2: begin Edit2.Text := 'u'; Edit3.Text := 'U'; end; 3: begin Edit2.Text := 'e'; Edit3.Text := 'E'; end; 4: Begin Edit2.Text := 'o'; Edit3.Text := 'O'; end; end; end; 8: begin Case CC of 0: begin // IroHenko2(11, 1); ←ここで関数を呼び出していました。 Edit2.Text := 'ka'; Edit3.Text := 'KA'; end; あとは,二つのCaseの繰り返しです。すごい力技ですね。 TRC9 = record が便利そうなので,今から勉強を始めます。 以上大変長くなりましたが,私にはどこがいけないのかさっぱり 分かりません。 ご指導よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.