Ir ao conteúdo
  • Cadastre-se

Inserir dados diretamente no dbgrid


BrunoCamargo

Posts recomendados

Boa tarde a todos amigos delphinianos

tenho uma duvida cruel, que para muitos é fácil e para mim, ja ta ate caindo meu cabelos,

preciso saber como faço para inserir dados diretamente no dbgrid , só isso, clicar na celula e escrever, agradeço a todos . abraços

uso: dbgrid

dtsource

dtset

Link para o comentário
Compartilhar em outros sites

Amigo, seguinte. Se você estiver trabalhando com banco de dados, deve-se conectar o dbgrid ao datasource que está ligado ao banco de dados. Exemplo:

DataSource.Dataset:= TTable1;

DBGrid1.DataSource:= DataSource1;

TTable1.Active:= True;

Com isso o DBGrid já permitirá que você edite os dados.

Se você nao estiver trabalhando com banco de dados, então nao use o DBGrid, e sim o StringGrid (palera Additional). Vá nas propriedades do StringGrid, em Options e ative a funcao GoEditing (em runtime: StringGrid1.Options:= StringGrid1.Options + [GoEditing];).

Com isso você já pode escrever nas células do stringgrid à vontade.

Link para o comentário
Compartilhar em outros sites

rockzilla é o seguinte

o jeito que voce me disse eu sei que da para fazer, mas, agora a pouco eu consegui editar todas as celulas rs, mas justo a que eu queria editar, nao da, ta bloqueada, das 7 colunas do dbgrid, a unica que nao da é a que eu quero trocar SHAUSHUAHS

ja revirei tudo, olhei as configurações e nada, nao achei, sera que voce nao teria uma carta na manga ai para me ajudar, rsrs

alguma config besta que talvez eu tenho esquecido.

Falou veio

obrigado pela ajuda

abraços

att..

Link para o comentário
Compartilhar em outros sites

Amigo, eu criei agora uma tabelinha básica com 2 colunas, usando 1 TTable, 1 DataSource e 1 DBGrid, e consegui editar as duas colunas do DBGrid corretamente....

você criou sua tabela em run-time ou usou um programa para gerar sua tabela?

Verifique se ao criar a tabela você nao setou o campo como readonly (somente leitura)...

Qualquer coisa se quiser me mandar o projeto eu dou uma olhada

Olha o exemplo que eu fiz.

Coloque na tela 1 TTable, 1 DataSource, 1 DBGrid e 1 DBNavigator.

Nem precisa mudar nenhuma propriedade desses objetos.

Insira, no evento OnCreate do Form o seguinte:


procedure TForm1.FormCreate(Sender: TObject);
var
alias: string;
begin
{cria a tabela se nao existir}
alias:= ExtractFilePath(Application.ExeName);
if(Not FileExists(alias + 'teste.db'))then
begin
with Table1 do
begin
DatabaseName:= ExtractFilePath(Application.ExeName);
IndexDefs.Clear;
FieldDefs.Clear;
TableType := ttDefault;
TableName := 'teste';
with FieldDefs do
begin
Add('Nome',ftString,20,false);
Add('Telefone',ftString,30,false);
end{with FieldDefs};
with IndexDefs do
begin
Add('','Nome',[ixPrimary,ixUnique]);
end{with IndexDefs.Items[i]};
CreateTable;
end;
end;

{abre a tabela}
Table1.TableName:= 'teste';
Table1.Active:= True;

{linka tabela com objetos da tela}
DataSource1.DataSet:= Table1;
DBGrid1.DataSource:= DataSource1;
DBGrid1.Columns[0].Width:= 120;
DBNavigator1.DataSource:= DataSource1;
end;

Link para o comentário
Compartilhar em outros sites

Nao entendo porque nao funciona no seu caso... Somente vendo seu programa daria para tentar descobrir o que poderia estar ocorrendo, porque na tabela que eu criei funcionou tudo certinho... Poste seu código aqui ou diga mais ou menos o que você está fazendo que eu tento recriar aqui, tipo que base de dados você está utilizando (acces, mysql, etc,etc,etc), quais os campos e formato dos campos (inteiro, string, datatime, blob, etc).

Mas como última alternativa, você poderia retirar o DBGrid e utilizar DBEdits para inserção/leitura dos dados.

Link para o comentário
Compartilhar em outros sites

Pessoal outra duvida, sa seguinte função da o erro "types of actual and formal var parameters must be identical".

Function SomaHora(dif1, dif2:TTime):String;

Const

SEGUNDOS_POR_HORA : Integer = 360;

SEGUNDOS_POR_MINUTO : Integer = 60;

MINUTOS_POR_HORA : Integer = 60;

Var

TotalSegundos,

Horas,

Minutos,

Segundos,

MiliSeg:Integer;

Begin

DecodeTime(dif1, Horas, Minutos, Segundos, Miliseg);

TotalSegundos := (Horas / SEGUNDOS_POR_HORA) +

(Minutos / SEGUNDOS_POR_MINUTO) + Segundos;

DecodeTime(dif2, Horas, Minutos, Segundos, Miliseg);

TotalSegundos := (Horas / SEGUNDOS_POR_HORA) +

(Minutos / SEGUNDOS_POR_MINUTO) + Segundos;

Segundos := TotalSegundos Mod SEGUNDOS_POR_MINUTO;

Minutos := TotalSegundos Div SEGUNDOS_POR_MINUTO;

Horas := Minutos Div MINUTOS_POR_HORA;

Minutos := Minutos Mod MINUTOS_POR_HORA;

Result := IntToStr(Horas) + ':' +

IntToStr(Minutos) + ':' +

IntToStr(Segundos);

end;

o que pode ser? nao estou entendendo o erro. obrigado!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!