📄 unit1.~pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
TempGrid: TStringGrid;
editZ: TEdit;
cmbZ: TComboBox;
Edit1: TEdit;
procedure TempGridSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure TempGridTopLeftChanged(Sender: TObject);
procedure editZChange(Sender: TObject);
procedure editZExit(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure cmbZChange(Sender: TObject);
procedure cmbZExit(Sender: TObject);
procedure editZKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure cmbZClick(Sender: TObject);
procedure editZClick(Sender: TObject);
private
{ Private declarations }
public
R,C:integer;
CanSelected,IsEdited:Boolean;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.TempGridSelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
cmbZ.Visible:=false; editZ.Visible:=false; IsEdited:=false;
R:=ARow; C:=ACol; CanSelected:=CanSelect;
//Edit1.Text:=IntToStr(R)+':'+IntToStr(C);
if C in [0..1, 5..11] then begin
editZ.Left := TempGrid.CellRect(C,R).Left+ TempGrid.Left ;
editZ.Top := TempGrid.CellRect(C,R).Top + TempGrid.Top ;
editZ.Height:=TempGrid.CellRect(C,R).Bottom - TempGrid.CellRect(C,R).Top;
editZ.Width:= TempGrid.CellRect(C,R).Right-TempGrid.CellRect(C,R).Left;
editZ.Text:=TempGrid.Cells[C,R]; editZ.Visible:=true; editZ.SetFocus;
end
else {if not (C in [2,3]) then} begin
cmbZ.Left := TempGrid.CellRect(C,R).Left+ TempGrid.Left ;
cmbZ.Top := TempGrid.CellRect(C,R).Top + TempGrid.Top ;
cmbZ.Height:=TempGrid.CellRect(C,R).Bottom - TempGrid.CellRect(C,R).Top;
cmbZ.Width:= TempGrid.CellRect(C,R).Right-TempGrid.CellRect(C,R).Left;
cmbZ.Text:=TempGrid.Cells[C,R]; cmbZ.Visible:=true; cmbZ.SetFocus;
end;
end;
procedure TForm1.TempGridTopLeftChanged(Sender: TObject);
begin
editZ.Visible:=false; cmbZ.Visible:=false;
end;
procedure TForm1.cmbZChange(Sender: TObject);
begin
TempGrid.Cells[C,R]:=Trim(cmbZ.Text);
end;
procedure TForm1.editZChange(Sender: TObject);
begin
TempGrid.Cells[C,R]:=Trim(editZ.Text);
end;
procedure TForm1.editZExit(Sender: TObject);
begin
editZ.Visible:=false;
end;
procedure TForm1.cmbZExit(Sender: TObject);
begin
cmbZ.Visible:=false;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i,j:integer;
begin
for i:=0 to TempGrid.ColCount-1 do TempGrid.Cells[i,0]:='标题号'+IntToStr(i);
for i:=0 to TempGrid.ColCount-1 do
for j:=1 to TempGrid.RowCount-1 do
TempGrid.Cells[i,j]:=IntToStr(j)+' : '+IntToStr(i);
end;
procedure TForm1.editZKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
//Edit1.Text:=IntToStr(Key);
//up 38 down 40 left 37 right 39
if Key in [13, 39] then begin
if C=TempGrid.ColCount-1 then TempGrid.LeftCol:=0
else if (C>6) then TempGrid.LeftCol:=TempGrid.LeftCol+1;
if C<TempGrid.ColCount-1 then TempGridSelectCell(Sender,C+1, R, CanSelected)
else if R<TempGrid.RowCount-1 then TempGridSelectCell(Sender, 0, R+1, CanSelected);
end
else if Key=37 then begin
if (C>0) then TempGridSelectCell(Sender,C-1, R, CanSelected);
editZ.SelStart:=1;
end
else if Key=38 then begin
if (R>1) then TempGridSelectCell(Sender,C, R-1, CanSelected);
end
else if Key=40 then begin
if (R<TempGrid.RowCount-1) then TempGridSelectCell(Sender,C, R+1, CanSelected);
end;
end;
procedure TForm1.cmbZClick(Sender: TObject);
begin
IsEdited:=true;
end;
procedure TForm1.editZClick(Sender: TObject);
begin
IsEdited:=true;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -