Como abrir uma linha para registro no dbgrid sem apertar a seta para baixo no delphi?
Olá pessoal. Alguém sabe como abrir uma linha para inserir um novo registro no dbgrid sem apertar a seta do teclado para baixo? Gostaria de ao invés de usar a tecla para baixo do teclado para abrir um novo registro, gostaria de fazer isso usando o enter ao invés da tecla para baixo (do teclas de navegação).
Joelson
Curtidas 0
Melhor post
Raimundo Pereira
11/04/2016
No evento do dbgrid KeyDown
Coloque isto
if key=VK_RETURN then
begin
DataSource1.DataSet.Insert;
end;
Coloque isto
if key=VK_RETURN then
begin
DataSource1.DataSet.Insert;
end;
GOSTEI 1
Mais Respostas
Joelson
10/04/2016
P2 o comando que você mandou está funcionado, mas eu queria que abrisse a linha sempre abaixo da ultima linha e está abrindo a linha para um novo registro sempre no meio do dbgrid. Tem como colocar pra abrir a linha sempre como a ultima de baixo do dbgrid?
GOSTEI 0
Natanael Ferreira
10/04/2016
Troque o [b]Insert[/b] pelo [b]Append[/b].
[b]Append[/b] - Insere um novo registro no final da tabela
[b]Insert[/b] - Insere um novo registro no ponto onde está o cursor.
[b]Append[/b] - Insere um novo registro no final da tabela
[b]Insert[/b] - Insere um novo registro no ponto onde está o cursor.
if key=VK_RETURN then DataSource1.DataSet.Append;
GOSTEI 1
Joelson
10/04/2016
Eu to tentando fazer uma tela de vendas. Eu tenho 1 edit que é a quantidade e outro edit que é o código de barras. quando eu aperto enter no codigo de barras a quantidade e o codigo de barras vão para dbgrid só que eles estão indo sempre para a mesmo linha a primeira e eu queria que a quantidade e o codigo de barras sempre fossem lançados sempre na ultima linha. eu já consigo lançar no dbgrid, mas quero lançar sempre na ultima linha, como eu faço isso?
GOSTEI 0
Natanael Ferreira
10/04/2016
Ao invés de usar Insert use Append.
Outro detalhe a se verificar é se o DataSet ligado ao DBGrid está sendo ordenado (Group by ou ìndice),
se estiver talvez o registro inserido esteja sendo classificado, por isso, não vai para o final do DBGrid.
Se puder, poste como está o seu código para inclusão do registro no DBGrid para análise.
Outro detalhe a se verificar é se o DataSet ligado ao DBGrid está sendo ordenado (Group by ou ìndice),
se estiver talvez o registro inserido esteja sendo classificado, por isso, não vai para o final do DBGrid.
Se puder, poste como está o seu código para inclusão do registro no DBGrid para análise.
GOSTEI 0
Joelson
10/04/2016
É isso Natanael que estava faltando. Valeu Natanael, valeu P2.
GOSTEI 0
Joelson
10/04/2016
Vocês sabem como eu faço para jogar o nome do produto de um dbgrid dentro de um edit que está em outro formulário sem usar uma variável?
GOSTEI 0
Raylan Zibel
10/04/2016
uses outraunit;
outroformulario.dbgrid.dataset.datasource.fieldbyname('nomedocampo').value := edit.text;
outroformulario.edit.text := dbgrid.dataset.datasource.fieldbyname('nomedocampo').value;GOSTEI 0
Joelson
10/04/2016
explicando melhor: Ao fechar o formulário como eu faço para o edit de outro formulário receber o valor de uma variável do formulário que fechei?
GOSTEI 0
Raylan Zibel
10/04/2016
Form1
Form2
type
TForm1 = class(TForm)
edt1: TEdit;
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses
Unit2;
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
begin
Form2.ShowModal;
edt1.Text := DateTimeToStr(Form2.Agora);
end;Form2
type
TForm2 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Agora: TDateTime;
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
Agora := Now;
end;GOSTEI 1
Joelson
10/04/2016
Raylan o código que você mandou pelo que entendi no form1 o edit recebe o valor da variável ao clicar no botão btn1, me corrija se eu estiver errado. Mas o que eu quero é que o edit do form1 receba o valor da variável ao fechar o form2.
GOSTEI 0
Raylan Zibel
10/04/2016
Voce está errado.
Quando o Form2 é fechado, a variavel ainda existe. Ela deixa de existir quando é chamado um .Free ou .Release.
// showmodal, o Form1 vai esperar o Form2 fechar pra continuar Form2.ShowModal; // quando o Form2 fechar ele vai pegar o valor da variavel edt1.Text := DateTimeToStr(Form2.Agora);
Quando o Form2 é fechado, a variavel ainda existe. Ela deixa de existir quando é chamado um .Free ou .Release.
GOSTEI 1
Joelson
10/04/2016
Raylan, entendi. Realmente é como você disse. Não estava funcionando aqui por que eu não coloquei essa linha Form2.ShowModal.
Resolveu minha vida, valeu Raylan.
Resolveu minha vida, valeu Raylan.
GOSTEI 1