お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"RE:担当者メンテ開発記"

この発言は
#01255 ぺけでび さんのRE:担当者メンテ開発記
に対するコメントです

この発言に対し以下のコメントが寄せられています
#01258 よたろう さん RE^2:担当者メンテ開発記
#01259 よたろう さん RE^2:担当者メンテ開発記

 で、追加と修正が出来るようになったのが以下のソースです。 FILE:PTANTOU.DPR program PTANTOU; uses Forms, UTANTOU in 'UTANTOU.pas' {Form1}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.  変わっていない。 FILE:UTANTOU.DFM object Form1: TForm1 Left = 192 Top = 107 Width = 544 Height = 375 Caption = 'Form1' Color = clBtnFace Font.Charset = SHIFTJIS_CHARSET Font.Color = clWindowText Font.Height = -12 Font.Name = 'MS Pゴシック' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 12 object Label1: TLabel Left = 16 Top = 48 Width = 66 Height = 12 Caption = '担当者コード' end object Label2: TLabel Left = 16 Top = 80 Width = 48 Height = 12 Caption = '担当者名' end object Label3: TLabel Left = 96 Top = 16 Width = 4 Height = 12 end object Edit1: TEdit Left = 96 Top = 48 Width = 121 Height = 20 MaxLength = 2 TabOrder = 0 OnExit = Edit1Exit OnKeyDown = Edit1KeyDown OnKeyPress = Edit1KeyPress end object Edit2: TEdit Left = 96 Top = 80 Width = 121 Height = 20 MaxLength = 20 TabOrder = 1 OnKeyDown = Edit2KeyDown OnKeyPress = Edit2KeyPress end object Table1: TTable Active = True IndexName = 'CODE' TableName = 'TANTOU.DBF' Left = 480 Top = 8 end end  イベントの部分が追加されていますね。 これもインスベクタで指定しただけ。 FILE:UTANTOU.PAS unit UTANTOU; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Db, DBTables; type TForm1 = class(TForm) Table1: TTable; Label1: TLabel; Label2: TLabel; Label3: TLabel; Edit1: TEdit; Edit2: TEdit; function CheckCode: Boolean; procedure DataGet; // フィールドの値を読み込む procedure DataWrite; // レコードの追加または修正 procedure Edit1KeyPress(Sender: TObject; var Key: Char); // 入力された時 procedure Edit1KeyDown(Sender: TObject; var Key: Word; // キーを押した時 Shift: TShiftState); procedure Edit1Exit(Sender: TObject); // フォーカスが他に移った時 procedure Edit2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Edit2KeyPress(Sender: TObject; var Key: Char); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.DFM} function TForm1.CheckCode: Boolean; // 不当な入力かどうかをチェック begin Result := True; Label3.Caption := ''; if (Length(Trim(Edit1.Text)) <> 2) then begin Result := False; Label3.Caption := 'コードは2桁入力して下さい'; end else begin if (Edit1.Text < '01') or (Edit1.Text > '99') then begin Result := False; Label3.Caption := 'コードは01〜99の範囲を入力して下さい'; end; end; end; procedure TForm1.DataGet; // テーブルにコードがあればフィールドの値を読み込む begin Table1.SetKey; // 検索の準備 Table1.FieldByName('TAN_CD').AsString := Edit1.Text; // 検索条件のセット Table1.GotoNearest; // 同じか近いレコードにポインタを移動 if (Table1.FieldByName('TAN_CD').AsString = Edit1.Text) then begin Edit2.Text := Table1.FieldByName('TAN_NAME').AsString; // 見つかったらフィールドの値をセット end else begin Edit2.Text := ''; // 見つからなければヌルをセット end; end; procedure TForm1.DataWrite; begin Table1.SetKey; Table1.FieldByName('TAN_CD').AsString := Edit1.Text; Table1.GotoNearest; if (Table1.FieldByName('TAN_CD').AsString = Edit1.Text) then begin Table1.Edit; // 見つかったら修正モードに end else begin Table1.Append; // 見つからない場合は新規レコードを追加する Table1.FieldByName('TAN_CD').AsString := Edit1.Text; end; Table1.FieldByName('TAN_NAME').AsString := Edit2.Text; Table1.Post; // 実際にテーブルに登録される end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if (key = #13) then begin // Enterキーか? if CheckCode then begin DataGet; Edit2.SetFocus; // 期待した入力だったので担当者名の編集に移動 end; end; end; procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key = VK_Down) then begin // ↓キーか? if CheckCode then begin DataGet; Edit2.SetFocus; end; end; end; procedure TForm1.Edit1Exit(Sender: TObject); begin if (not CheckCode) then Edit1.SetFocus; // 不当な入力ではフォーカスを移動させない end; procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key = VK_Up) then begin // ↑キーか? Edit1.SetFocus; end; end; procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin if (key = #13) then begin // Enterキーか? DataWrite; // 入力データの登録 Edit1.SetFocus; end; end; end.  削除はまだ組込んでいません。 確認が無いとか、いろいろ不満 が出そうですが、とにかくキーボードのみで操作するようにしたい のです。  - FDELPHI MES(16):玉石混淆みんなで作るSample蔵【見本蓄積】 01/01/29 - Original document by ぺけでび 氏 ID:(YQJ03146)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum