DBGrid1 Hücre Kontrolü

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

DBGrid1 Hücre Kontrolü

Mesaj gönderen ozcank »

Merhaba Arkadaşlar;
Stok Tablosunu DBGrid1 listeledim ve DBGrid1 de istediğim hücreyi düzeltmeye açma veya kapatmak istiyorum.

STOK KODU / STOK ISMI / FIYAT1 /FIYAT2
Bana bu konuda yardımcı olabilir misiniz?
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: DBGrid1 Hücre Kontrolü

Mesaj gönderen ozcank »

Şu Şekilde yapmaya çalıştım ama bir yerde yanlışım var sanırım bir türlü yapamadım. Bana Yardımcı olabilir misiniz?

Kod: Tümünü seç

procedure TForm26.DBGrid1KeyPress(Sender: TObject; var Key: Char);
Var
SabitCevap:Byte;
begin
IF Key=#13 Then
begin
SabitCevap:=Application.MessageBox('Stok Bilgileri Güncellenecek Eminmisiniz ?','Stok Sabit Güncelle', MB_YESNO or MB_ICONQUESTION);
 IF SabitCevap = MrYes Then  // cevap evetse
Begin
DBGrid1.Enabled:=True;
DBGrid1.Columns[0].ReadOnly:=True;
DBGrid1.Columns[1].ReadOnly:=True;
DBGrid1.Columns[2].ReadOnly:=True;
//Exit;
END
Else IF SabitCevap = MrNo Then
DBGrid1.Enabled:=True;
DBGrid1.Columns[3].ReadOnly:=False;
DBGrid1.Columns[4].ReadOnly:=False;
DBGrid1.Columns[5].ReadOnly:=False;
Application.MessageBox('Stok Güncelle Kapalı !!!','Bilgilendirme Mesajı',MB_ICONINFORMATION); // hayır seçilirse ( kaydedilmesin
Exit;
End;
End;
Kullanıcı avatarı
Commandx
Üye
Mesajlar: 181
Kayıt: 01 Oca 2008 05:34

Re: DBGrid1 Hücre Kontrolü

Mesaj gönderen Commandx »

Kod: Tümünü seç

procedure TForm26.DBGrid1KeyPress(Sender: TObject; var Key: Char);
Var
SabitCevap:Byte;
begin
IF Key=#13 Then
begin
SabitCevap:=Application.MessageBox('Stok Bilgileri Güncellenecek Eminmisiniz ?','Netsis Stok Sabit Güncelle', MB_YESNO or MB_ICONQUESTION);
 IF SabitCevap = MrYes Then  // cevap evetse
Begin
DBGrid1.Enabled:=True;
DBGrid1.Columns[3].ReadOnly:=False;
DBGrid1.Columns[4].ReadOnly:=False;
DBGrid1.Columns[5].ReadOnly:=False;
//Exit;
END
Else IF SabitCevap = MrNo Then
DBGrid1.Enabled:=True;
DBGrid1.Columns[0].ReadOnly:=True;
DBGrid1.Columns[1].ReadOnly:=True;
DBGrid1.Columns[2].ReadOnly:=True;
Application.MessageBox('Stok Güncelle Kapalı !!!','Bilgilendirme Mesajı',MB_ICONINFORMATION); // hayır seçilirse ( kaydedilmesin
Exit;
End;
End;
Bir de böyle deneyin
http://www.delphibasics.co.uk/RTL.asp?Name=DaysBetween
http://www.neonhaber.com/Static/mega-co ... index.html
www.delphican.con
Function PARSE( text, ilk, son:String ): String; //
begin
Delete(Text, 1, pos(ilk, Text) + Length(ilk)-1);
Result := Copy(Text, 1, Pos(Son, Text)-1);
end;
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: DBGrid1 Hücre Kontrolü

Mesaj gönderen ozcank »

Commandx teşekkür ederim cevabın için ama sorunum düzelmedi. :(
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: DBGrid1 Hücre Kontrolü

Mesaj gönderen ozcank »

Arkadaşlar DBGrid1 kontrolünü bir türlü sağlayamadım sizlerden bu konuda yardımcı olmanızı rica ediyorum nerde hata yapıyorum bulamadım. Bir şeyler yapıyorum oluyor bu sefer başka yerde sorun oluyor aslında yapmak istediğim çok basit.

DBGrid kullanıyorum
DBGrid1 de Alanlar ReadOnly FALSE

STOK_KODU
STOK_ADI
GRUP_KODU Bu üç alana müdahale edemeyecek.

SATIS_FIAT1
SATIS_FIAT2
SATIS_FIAT3
SATIS_FIAT4 Bu alanlarda değişiklik yapabilecek.



Ben bir tane Edit1 ekledim DBGrid1 de enter e basınca alandaki bilgi Edit1 e geliyor ve değiştirip enter yapınca Tabloya yazıyor.
Bende şöyle yaptım ;

DBGrid1 de

Kod: Tümünü seç

procedure TForm26.DBGrid1KeyPress(Sender: TObject; var Key: Char);
Var
SabitCevap:Byte;
begin
//DBGrid1.Columns[0].ReadOnly:=False;
//DBGrid1.Columns[1].ReadOnly:=False;
//DBGrid1.Columns[2].ReadOnly:=False;
IF Key=#13 Then
begin
SabitCevap:=Application.MessageBox('Stok Bilgileri Güncellenecek Eminmisiniz ?','Stok Sabit Güncelle', MB_YESNO or MB_ICONQUESTION);
IF SabitCevap = MrYes Then  // cevap evetse
Begin
Edit1.Visible:=True;
Label1.Visible:=True;
Edit1.Text:=(StokSabit.Fields[DBGrid1.SelectedIndex].AsString);
Edit1.SetFocus;
//DataSource1.DataSet.Next;
End
Else IF SabitCevap = MrNo Then
Application.MessageBox('Stok Güncelleme Yapılmamıştır !!!','Bilgilendirme Mesajı',MB_ICONINFORMATION); // hayır seçilirse ( kaydedilmesin
Exit;
End;
End;
End;
Edit1 de

Kod: Tümünü seç

procedure TForm26.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
Begin
DataSource1.DataSet.Edit;
IF Dbgrid1.Fields[0].AsString = Edit1.Text Then
Begin
DBGrid1.Columns[0].ReadOnly:=False;
Application.MessageBox('Bu Alan da Güncelleme Yapmak İçin Hakkınız Yok !!!','Bilgilendirme Mesajı',MB_ICONINFORMATION);
Edit1.Visible:=False;
Label1.Visible:=False;
End
Else IF Dbgrid1.Fields[1].AsString = Edit1.Text Then
Begin
DBGrid1.Columns[1].ReadOnly:=False;
Application.MessageBox('Bu Alan da Güncelleme Yapmak İçin Hakkınız Yok !!!','Bilgilendirme Mesajı',MB_ICONINFORMATION);
Edit1.Visible:=False;
Label1.Visible:=False;
End
Else
 StokSabit.Edit;
 DBGrid1.Columns[DBGrid1.SelectedIndex].Field.AsString := Edit1.Text;
 Edit1.SelStart := Length(Edit1.Text);
 if Key=vk_Return then
 begin
   StokSabit.Next;
   Key := 0;
 end;
end;

StokSabit Query de bu kısım da da şunu yapmak istedim, sadece SATIS_FIAT1 de güncelleme yapıyor ise burayı değiştirsin;

SATIS_FIAT2 de güncelleme yapıyorsa bu sütünü güncellesin...….

Kod: Tümünü seç

procedure TForm26.StokSabitAfterScroll(DataSet: TDataSet);
begin
 Edit1.Text := StokSabit.FieldByName('SATIS_FIAT1').AsString;
//  Edit1.Text := StokSabit.FieldByName('SATIS_FIAT2').AsString;
//  Edit1.Text := StokSabit.FieldByName('SATIS_FIAT3').AsString;
//  Edit1.Text := StokSabit.FieldByName('SATIS_FIAT4').AsString;
 End;
Cevapla