ana sayfada neler oluyor anlamadım ama bu kısmın çalışması iyi en azından.
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...
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
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.
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.
///
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
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