GARANTIR DESCONTO

Fórum Como abrir uma linha para registro no dbgrid sem apertar a seta para baixo no delphi? #550980

10/04/2016

0

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

Joelson

Responder

Post mais votado

11/04/2016

No evento do dbgrid KeyDown
Coloque isto

if key=VK_RETURN then
begin
DataSource1.DataSet.Insert;
end;

Raimundo Pereira

Raimundo Pereira
Responder

Gostei + 1

Mais Posts

11/04/2016

Joelson

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?
Responder

Gostei + 0

11/04/2016

Natanael Ferreira

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.

if key=VK_RETURN then
 DataSource1.DataSet.Append;
Responder

Gostei + 1

11/04/2016

Joelson

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?
Responder

Gostei + 0

11/04/2016

Natanael Ferreira

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.
Responder

Gostei + 0

11/04/2016

Joelson

É isso Natanael que estava faltando. Valeu Natanael, valeu P2.
Responder

Gostei + 0

11/04/2016

Joelson

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?
Responder

Gostei + 0

11/04/2016

Raylan Zibel

uses outraunit;

outroformulario.dbgrid.dataset.datasource.fieldbyname('nomedocampo').value := edit.text;

outroformulario.edit.text := dbgrid.dataset.datasource.fieldbyname('nomedocampo').value;
Responder

Gostei + 0

12/04/2016

Joelson

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?
Responder

Gostei + 0

12/04/2016

Raylan Zibel

Form1
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;
Responder

Gostei + 1

12/04/2016

Joelson

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.
Responder

Gostei + 0

12/04/2016

Raylan Zibel

Voce está errado.

  // 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.
Responder

Gostei + 1

12/04/2016

Joelson

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.
Responder

Gostei + 1

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar