01]下拉ComboBox1选择

02]Lazarus自带编辑控件PickList

03]单元格颜色选择


01]下拉ComboBox1选择

   参考:C:\lazarus\examples\gridexamples\gridcelleditor

(17)Lazarus学习之StringGrid1_ide

(17)Lazarus学习之StringGrid1_ide_02

procedure TForm1.StringGrid1SelectEditor(Sender: TObject; aCol, aRow: Integer;
  var Editor: TWinControl);
begin
  if (aCol=3) and (aRow>0) then begin     //哪些单元格 显示  ComboBox1
    ComboBox1.BoundsRect:=StringGrid1.CellRect(aCol,aRow);
    ComboBox1.Text:=StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row];
    Editor:=ComboBox1;
  end;
end;

 ComboBox1选择完数据后,将选择结果返回给StringGrid1

(17)Lazarus学习之StringGrid1_Text_03

(17)Lazarus学习之StringGrid1_ide_04

procedure TForm1.ComboBox1EditingDone(Sender: TObject);
begin
  StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]:=ComboBox1.Text;
end;

 其他编辑控件也类似,如DateTimePicker1

procedure TForm1.DateTimePicker1EditingDone(Sender: TObject);
begin
  StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]:=datetostr( DateTimePicker1.Date);
end;

(17)Lazarus学习之StringGrid1_Text_05


 

02]Lazarus自带编辑控件

    C:\lazarus\examples\gridexamples\columneditors

(17)Lazarus学习之StringGrid1_控件_06

 然后设置每列的ButtonStyle

(17)Lazarus学习之StringGrid1_控件_07

(17)Lazarus学习之StringGrid1_ide_08

 其中cbsPickList类型相当于 01]下拉ComboBox1选择

(17)Lazarus学习之StringGrid1_ide_09

(17)Lazarus学习之StringGrid1_Text_10

03]单元格颜色选择

放一个ColorDialog1到界面上,并将其默认颜色为clWhite

(17)Lazarus学习之StringGrid1_ide_11

将StringGrid1的某列ButtonStryle设为cbsButton

(17)Lazarus学习之StringGrid1_ide_12

procedure TForm1.StringGrid1ButtonClick(Sender: TObject; aCol, aRow: integer);
begin
  if (aCol = 8) and ColorDialog1.Execute then //Button
  begin
    //获得 Colordialog1.Color;
    StringGrid1.Repaint;
  end;   
end;

(17)Lazarus学习之StringGrid1_Text_13