unit uInput; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, sBitBtn, sEdit, ShellAPI; type TfrmInput = class(TForm) edtInput: TsEdit; edtReturn: TsBitBtn; lbGrain: TLabel; cbGrain: TComboBox; procedure FormShow(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure edtReturnClick(Sender: TObject); procedure cbGrainChange(Sender: TObject); private { Private declarations } public { Public declarations } strParam : String; thMode : Integer; //0-ĬÈÏÊäÈë¿ò£¬1-Á¸ÖÖ´óÀàÑ¡Ôñ¿ò procedure InsertStringAtCursor(EditControl: TsEdit; Str: string); procedure DeleteCharsBeforeCursor(EditControl: TsEdit; Count: Integer=1); procedure InitGrainRec(); end; var frmInput: TfrmInput; implementation uses uMain, global, uSaveData; {$R *.dfm} //------- ×Ô¶¨Ò幦Äܺ¯Êý ------------------------------------------------------- //´Ó¹â±ê´¦²åÈë×Ö·û procedure TfrmInput.InsertStringAtCursor(EditControl: TsEdit; Str: string); begin // ±£´æµ±Ç°¹â±êλÖà EditControl.SelStart := EditControl.SelStart; EditControl.SelLength := 0; // ²»Ñ¡ÔñÈκÎÎı¾£¬È·±£Ö»²åÈë¶ø²»Ìæ»» EditControl.SelText := Str; // ²åÈë×Ö·û´® end; //×Ô¶¨Ò庯Êý£º´Ó¹â±ê´¦É¾³ý×Ö·û procedure TfrmInput.DeleteCharsBeforeCursor(EditControl: TsEdit; Count: Integer=1); var CursorPos, NewStart: Integer; begin CursorPos := EditControl.SelStart; if CursorPos >= Count then begin NewStart := CursorPos - Count; // ¼ÆËãеÄÑ¡ÔñÆðµã EditControl.SelStart := NewStart; EditControl.SelLength := Count; // Ñ¡ÔñCount¸ö×Ö·û EditControl.SelText := ''; // ɾ³ýÑ¡¶¨µÄÎı¾ end else begin // Èç¹ûCount´óÓÚ¹â±êλÖã¬Ôòɾ³ýËùÓÐÔÚ¹â±ê֮ǰµÄ×Ö·û EditControl.SelStart := 0; EditControl.SelLength := CursorPos; EditControl.SelText := ''; end; end; //------- ³õʼ»¯ --------------------------------------------------------------- procedure TfrmInput.FormShow(Sender: TObject); begin //É趨ÊäÈë¿òģʽ£¬0-ĬÈÏÊäÈë¿ò£¬1-Á¸ÖÖ´óÀàÑ¡Ôñ¿ò if thMode=0 then begin self.Width := 510; self.Height:= 120; lbGrain.Visible := false; cbGrain.Visible := false; end else begin self.Width := 510; self.Height:= 200; lbGrain.Visible := true; cbGrain.Visible := true; end; //´«Èë×Ö·û´® edtInput.Text := strParam; //³õʼ»¯Á¸ÖÖ´óÀàÏÂÀ­¿ò queryGrainTypeSql(t_Grain, 1, cbGrain); cbGrain.Style := csDropDownList; cbGrain.ItemIndex := Grain.Code-1; end; procedure TfrmInput.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; frmInput := nil; end; //×Ô¶¨Ò庯Êý£º³õʼ»¯Á¸ÖÖrec procedure TfrmInput.InitGrainRec(); begin GrainType_rec.Code := 0; GrainType_rec.No := ''; GrainType_rec.Name := ''; GrainType_rec.Coef[0] := ''; GrainType_rec.Coef[1] := ''; GrainType_rec.Coef[2] := ''; GrainType_rec.Coef[3] := ''; GrainType_rec.Coef[4] := ''; end; procedure TfrmInput.edtReturnClick(Sender: TObject); begin //¸ù¾ÝÁ¸ÖÖ´óÀànam²é´óÀàÐÅÏ¢ GrainType_rec := queryGrainSql(t_grain, cbGrain.Items[cbGrain.ItemIndex]); //½«½á¹û¸üе½È«¾Ö±äÁ¿ glInput := edtInput.Text; //´ò¿ª´¥¿Ø°å ShellExecute(0, nil, 'OpenTabTip.exe', 'close', nil, SW_SHOWNORMAL); //Í˳ö Close(); end; procedure TfrmInput.cbGrainChange(Sender: TObject); begin if cbGrain.ItemIndex <> -1 then edtInput.SetFocus; end; end.