boşlukta arama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

boşlukta arama

Mesaj gönderen ALUCARD »

arkadaşlar merhaba

ana sayfada neler oluyor anlamadım ama bu kısmın çalışması iyi en azından. :lol:

benım sorunum stok programımda fatura keserken kullanıcı stok sececek.
bu formda sedece grid ve iki tane buton var burda bi arama yaptırmam lazım fakat bir yere edit koymadan yaptırmam lazım böyle bir şey var yapılmış halini gördüm
ama nasıl yapıldığı konusunda bi fikrim yok

yardımcı olursanız sevinirim...
:D
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Ben bu tip işlemleri Tuş kodlayarak yapıyorum. Mesala F10 tüşüna basıldığı zaman Stokların dökümanını yeni bir forum halinde ekrana getiriyorum tabii bu arada Gridin hücresindeki verilere en yakın Stok değerine yaklaşıyorum ve seçtiğim kaydı enterladığım zaman Grid'e alıyorum.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

hocam yanlış anlattım galiba açılmış bi formun üzernde yazıcam yani
oda yazdığım kelimeye uygun stok adına gidecek


:) :)
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

hocam grid üzerinde basılan tuşları kontrol eddirebilirsin..
Örneğin dbgrid in onkeypress yordamında tuşları kontrol ettirip işlemini yaptırabilirsin
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

hocam belki ayıp olacak ama ufak bir kod yazar mısınız.

inanın kafam durdu
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Kod: Tümünü seç

procedure TfmKayit.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
procedure Delay(MSecs: Longint);
var
  FirstTickCount, Now: Longint;
begin
  FirstTickCount := GetTickCount;
  repeat
    Application.ProcessMessages;
    Now := GetTickCount;
  until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount);
end;
var
  oldCaption: string;
begin
  if (Key = 8 {VK_BKSP}) and (length(trim(Aranan)) > 0) then
    delete(Aranan, length(trim(Aranan)), 1);
  if Key in [32..126] then
  begin
    Aranan := Aranan + chr(Key);
    if (DBGrid1.DataSource.DataSet is TTable) then
    try    // sayısal tipler; varSmallint, varInteger, varSingle, varDouble .. vs.
      if varType(DM.Uye.IndexFields[0].AsVariant) = varString then
        (DBGrid1.DataSource.DataSet as TTable).FindNearest([Aranan])
      else
        (DBGrid1.DataSource.DataSet as TTable).FindNearest([StrToInt(Aranan)]);
    except
      if length(trim(Aranan)) > 0 then
        delete(Aranan, length(trim(Aranan)), 1);
      Beep;
    end;

  end;
  oldCaption := Caption;
  Caption := Aranan;
  delay(500);
  Caption := oldCaption;
end;
sanırım bu kod işini görür. Aranan değişkenini string tanımlamayı ve OnShow da Aranan := ''; demeyi unutma. bastığın harfleri backspace ile silebilirsin.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

recep hocam teşekkür edrim hemen deneyeceğim

:lol:
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

denemekl için biraz geç kaldım ama olmadı

arama yapmıyor

caption değişiyor.

bu sirada ben advantage kullanıyorum

ben biraz daha bu kod üzerinde çalışıyayım..

be kodu şöyle çevirdim..

Kod: Tümünü seç

///
procedure TSATSTOKSEC_F.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
procedure Delay(MSecs: Longint);
var
  aranan:String;
  FirstTickCount, Now: Longint;
begin
  FirstTickCount := GetTickCount;
  repeat
    Application.ProcessMessages;
    Now := GetTickCount;
  until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount);
end;
var

  oldCaption: string;
begin
  if (Key = 8 {VK_BKSP}) and (length(trim(Aranan)) > 0) then
    delete(Aranan, length(trim(Aranan)), 3);
  if Key in [32..126] then
  begin
    Aranan := Aranan + chr(Key);
    if (DBGrid1.DataSource.DataSet is TAdsQuery) then
    try    // sayısal tipler; varSmallint, varInteger, varSingle, varDouble .. vs.
      if varType(SECUrunKodu.AsVariant) = varString then
        (DBGrid1.DataSource.DataSet as TAdsTable).FindNearest([Aranan])
      else
        (DBGrid1.DataSource.DataSet as TAdsTable).FindNearest([StrToInt(Aranan)]);
    except
      if length(trim(Aranan)) > 0 then
        delete(Aranan, length(trim(Aranan)), 1);
      Beep;
    end;

  end;
  oldCaption := Caption;
  Caption :='Aranan : '+ Aranan;
  delay(500);
  Caption := oldCaption;


end;

procedure TSATSTOKSEC_F.FormShow(Sender: TObject);
begin
ARANAN:=''
end;


///
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

hocam tamam

şimdi oldu ben biraz değişiklik yaptım ama oldu en azından benim işimi gördü

şok teşekkur edrim

Kod: Tümünü seç

procedure TSATSTOKSEC_F.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
procedure Delay(MSecs: Longint);
var
  aranan:String;
  FirstTickCount, Now: Longint;
begin
  FirstTickCount := GetTickCount;
  repeat
    Application.ProcessMessages;
    Now := GetTickCount;
  until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount);
end;
var
 bulunan, metin:string;
  oldCaption: string;
begin
  if (Key = 8 {VK_BKSP}) and (length(trim(Aranan)) > 0) then
    delete(Aranan, length(trim(Aranan)), 3);
  if Key in [32..126] then
  begin
    Aranan := Aranan + chr(Key);

  try
    SEC.Locate('UrunAdi', ARANAN, [loPartialkey, loCaseinsensitive]);
  metin := ARANAN;
  bulunan := sec.FieldValues['UrunAdi'];
  except
      if length(trim(Aranan)) > 0 then
        delete(Aranan, length(trim(Aranan)), 1);
      Beep;
    end;

  end;
  oldCaption := Caption;
  Caption :='Aranan : '+ Aranan;
  delay(500);
  Caption := oldCaption;


end;

procedure TSATSTOKSEC_F.FormShow(Sender: TObject);
begin
ARANAN:=''
end;
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

bu kodun içinden yontuşlarını nasıl iptal edebilirim

çunku yon tuşlarını da karakter olarak alıyor

sonrada acces violation hatasi veriyor..
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

viewtopic.php?p=621#621

burdaki kodlar işinize yarayabilir.

if (Key = VK_LEFT) or .... then
exit;
gibi
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

kodu

Kod: Tümünü seç

procedure TFaturaStokSecF.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
procedure Delay(MSecs: Longint);
var
  aranan:String;
  FirstTickCount, Now: Longint;
begin
  FirstTickCount := GetTickCount;
  repeat
    Application.ProcessMessages;
    Now := GetTickCount;
  until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount);
end;
var
 bulunan, metin:string;
  oldCaption: string;
begin
  IF  (Key = VK_LEFT) or (Key = VK_RIGHT) OR (KEY=VK_UP) OR (KEY=VK_DOWN) then
      exit ;

  if (Key = 8 {VK_BKSP}) and (length(trim(Aranan)) > 0) then
    delete(Aranan, length(trim(Aranan)), 3);
  if Key in [32..126] then
  begin
    Aranan := Aranan + chr(Key);

  try
    SEC.Locate('UrunAdi', ARANAN, [loPartialkey, loCaseinsensitive]);
  metin := ARANAN;
  bulunan := sec.FieldValues['UrunAdi'];
  except
      if length(trim(Aranan)) > 0 then
        delete(Aranan, length(trim(Aranan)), 1);
      Beep;
    end;

  end;
  oldCaption := Caption;
  Caption :='Aranan : '+ Aranan;
  delay(500);
  Caption := oldCaption;



end;
bu şekilde çevirdim
artık yon tuşlarını almıyor
fakat

arama yapıp seçtiğim zaman yine acess violatin hatası veriyor..
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Cevapla