como colocar um edit na celula celecionada do dbgrid

Delphi

20/04/2004

nao consigo colocar um edit na posicao da celula selecionada do dbgrid igual da pra por no stringgrid pois o dbgrid nao possui a funcao selectcell como posso resolver isso.


atencao! quero q o codigo seja idependente da coluna, quando eu mover as setas de direcao o edit me acompanhe na posicao left e top da celula celecionada. ja tente colocar os parametros rect.left rect.top na funcao oncollumdatacel do dbgrid mas nao deu certo

me ajudem to precisando dessa dica urgente. agradeco a todos q puderem me ajudar


Urgente é tudo aquilo que não foi feito no momento que deveria ter sido. Seu título foi editado pra ficar de acordo com as regras de conduta.
Zoom


Eltontlms

Eltontlms

Curtidas 0

Respostas

Lucas Silva

Lucas Silva

20/04/2004

se vocÊ animar usar um stringGrid... ai vai o código.
só troque o combobox pelo edit....
//Inclua no seu Form um componente ComboBox e um componente StringGrid. type TForm1 = class(TForm) StringGrid1: TStringGrid; ComboBox1: TComboBox; procedure FormCreate(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure ComboBox1Exit(Sender: TObject); procedure StringGrid1SelectCell (Sender: TObject; Col, Row: Integer; var CanSelect: Boolean); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} // Evento OnCreate do Form procedure TForm1.FormCreate(Sender: TObject); begin { Ajusta a altura do ComboBox com a altura da linha do StringGrid} StringGrid1.DefaultRowHeight := ComboBox1.Height; {Esconde o ComboBox} ComboBox1.Visible := False; end; // Evento OnChange do componente ComboBox procedure TForm1.ComboBox1Change(Sender: TObject); begin StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row] := ComboBox1.Items[ComboBox1.ItemIndex]; ComboBox1.Visible := False; StringGrid1.SetFocus; end; // Evento OnExit do componente ComboBox procedure TForm1.ComboBox1Exit(Sender: TObject); begin StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row] := ComboBox1.Items[ComboBox1.ItemIndex]; ComboBox1.Visible := False; StringGrid1.SetFocus; end; // Evento OnSelectCell do componente StringGrid procedure TForm1.StringGrid1SelectCell(Sender: TObject; Col, Row: Integer; var CanSelect: Boolean); var R: TRect; begin if ((Col = 3) AND (Row <> 0)) then begin R := StringGrid1.CellRect(Col, Row); R.Left := R.Left + StringGrid1.Left; R.Right := R.Right + StringGrid1.Left; R.Top := R.Top + StringGrid1.Top; R.Bottom := R.Bottom + StringGrid1.Top; ComboBox1.Left := R.Left + 1; ComboBox1.Top := R.Top + 1; ComboBox1.Width := (R.Right + 1) - R.Left; ComboBox1.Height := (R.Bottom + 1) - R.Top; ComboBox1.Visible := True; ComboBox1.SetFocus; end; CanSelect := True; end;

Retirada das 800 dicas delphi....


GOSTEI 0
POSTAR