Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problemas com DBCtrlGrid e Edit


Marcos Augusto

Pergunta

Ola Pessoal

estou com um pequeno problema e não sei como solucionar

Eu fiz uma aplicacao que consiste em um form um DBCtrlGrid com alguns dbedits dentro e um dbnavigator (já esta tudo lincado com o banco e funcionado com a ferramenta do ibx)

então problema é o seguinte, quando eu mando editar o ultimo campo(row) do DBCtrlGrid funciona bem mas c eu teclar o tab ele abre um campo novo

como faço para não acontecer isso, porque na minha aplicacao não pode aparecer nenhum campo novo somete poderei editar

fico grato se alguém souber

Marcos Augusto

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
quando eu mando editar o ultimo campo(row) do DBCtrlGrid funciona bem mas c eu teclar o tab ele abre um campo novo

como faço para não acontecer isso, porque na minha aplicacao não pode aparecer nenhum campo novo somete poderei editar

Quando o cursor está na ultima linha do DbGrid e voce tecla tab, só será aberta mais uma linha de registro se existir algum comando para tal, caso contrário o cursor permanece na ultima linha pulando de campo em campo do registro.

exemplo :

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
   if Key = #9 then   //  tecla TAB
      begin
      if not (ActiveControl is TDBGrid) then
         begin
            Key := #0;
            Perform(WM_NEXTDLGCTL, 0, 0);
         end
      else if (ActiveControl is TDBGrid) then
         with TDBGrid(ActiveControl) do
         if selectedindex < (fieldcount - 1) then
            begin
               //selectedindex := selectedindex + 1;
               CDS_Fundos.Edit;
               case selectedindex of
                1 : CDS_FundosCODCLI.AsInteger     := CDS_CadcliCOD.AsInteger;
                2 : CDS_FundosDATA.Value := now;
                3 : ///
                4 : ///
               end;

               CDS_Fundos.Post;
               CDS_Fundos.Append;   ///  neste ponto é incluida uma nova linha de registro
               selectedindex := 0;
            end;
      end;
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

jhonas muito obrigado pela resposta, mas não é um DBGrid e sim um DBCtrlGrid, ele tem um DBEdit e 2 DBComboBox.

quando eu coloco o cursor na ultima linha (DBComboBox) e teclo Tab, ele abre um novo registro

meu projeto é o seguinte, tenho uma tabela com varios campos que preciso ser atualizar todos ao mesmo tempo por um usuario, e so posso disponibilizar os campos para atualizar senao vira bagunca, então eu mando somente os campos certos para outra tabela e uso um DBCtrlGrid para exibilos e editalos.

não sei c você entendeu

falo

Link para o comentário
Compartilhar em outros sites

  • 0

mas não é um DBGrid e sim um DBCtrlGrid

Tanto o DBGrid como DBCtrlGrid tem as mesmas propriedades... voce deve verificar se tem codigo em algumas dessas propriedades

OnExit

OnKeyDown

OnKeyPress

OnKeyUP

quando eu coloco o cursor na ultima linha (DBComboBox) e teclo Tab, ele abre um novo registro

abre um novo registro onde, no DBComboBox ?

fica dificil te responder sem ver o codigo

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas este é o codigo

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, StdCtrls, Mask, DBCtrls, DBCGrids, IBCustomDataSet, IBUpdateSQL,

IBDatabase, IBQuery;

type

TForm1 = class(TForm)

IBQuery1: TIBQuery;

IBDatabase1: TIBDatabase;

IBTransaction1: TIBTransaction;

IBUpdateSQL1: TIBUpdateSQL;

DBCtrlGrid1: TDBCtrlGrid;

DBEdit1: TDBEdit;

DBEdit2: TDBEdit;

DataSource1: TDataSource;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

end.

fiz assim pra ficar mais facil

e esses são os objetos que coloquei no form

1 IBQuery1

1 IBDatabase1 todos configurados(C:\Arquivos de programas\Firebird\Firebird_2_0\examples\empbuild\EMPLOYEE.FDB) e funcionando

1 IBTransaction1

1 IBUpdateSQL1

1 DataSource1

1 DBCtrlGrid1 linkado no DataSource1

1 DBEdit1 dentro do DBCtrlGrid1

1 DBEdit2 dentro do DBCtrlGrid1

ai é so eu ir para o ultima linha do DBCtrlGrid1(DBEdit2) e press Tab que ele abre outro registro e pula pra uma nova linha, eu gostaria que isso não acontecesse

simplesmente não criasse outro registro, e deixa-se editar os que já existem

falo

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas eu consegui, coloquei aquele codigo que você me mandou, mas no keydown do dbctrlgrid

procedure TForm.DBCtrlGridKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if Key = 9 then // tecla TAB

begin

if not (ActiveControl is TDBCtrlGrid) then

begin

Key := 0;

Perform(WM_NEXTDLGCTL, 0, 0);

end;

end;

end;

so isso so

e funcionou

obrigado pela atencao

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --ricardo --

mas não é um DBGrid e sim um DBCtrlGrid

Tanto o DBGrid como DBCtrlGrid tem as mesmas propriedades... voce deve verificar se tem codigo em algumas dessas propriedades

OnExit

OnKeyDown

OnKeyPress

OnKeyUP

quando eu coloco o cursor na ultima linha (DBComboBox) e teclo Tab, ele abre um novo registro

abre um novo registro onde, no DBComboBox ?

fica dificil te responder sem ver o codigo

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...