bookmarkla ilgili.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

bookmarkla ilgili.

Mesaj gönderen meron06 »

Sel.al arkadaşlar.dbgridimde ki seçili kayıtları raporlamak ve bbaşka bi tabloya kaydetmek için bi tbookmarklist tanımladım.şöyle bi sorun var.rapor ekranında görüntülemek için ayrı bi tuşum ve tabloya girmek için ayrı bi tuşum var.rapor tuşuna basılınca örneğin gridde 10 kayıt varsa seçilen kayıtlardan biri onlarca kez görüntüleniyor.bu sorun herzaman olmuyor.arada sırada oluyor.şimdi tanımladığım bookmarkı her kullanımdan önce yada kullanımdan sonra içeriğini nasıl temizlerim.bookmarkı şu şekilde kullanıyorum.ama farklı 2 tuş altında bookmarklarım tanımlı.kodlar şu şekilde.
procedure Tfkankabul.JvXPButton1Click(Sender: TObject);
var
secim: TBookMarkListeh;
i: integer;
Kayit: TBookMark;
begin
tetkiklistesi.DisableControls;
secim:=DBGrideh2.SelectedRows;
for i:=0 to secim.Count-1 do begin
Kayit:=TBookMark(secim.Items);
tetkiklistesi.GotoBookmark(Kayit);

tabloya kayıt girerken kullandığım ksıımda şu şekilde

procedure Tfkankabul.JvXPButton32Click(Sender: TObject);
var
secim: TBookMarkListeh;
i: integer;
Kayit: TBookMark;
begin
tetkiklistesi.First;
tetkiklistesi.DisableControls;
secim:=DBGrideh2.SelectedRows;

sanırım burda bookmarklarla ilgili bisorun var.örneğin rpor tşundaki bookmarkı kullandıktan sonra nasıl temizlerim.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Re: bookmarkla ilgili.

Mesaj gönderen aLonE CoDeR »

meron06 yazdı:dbgridimde ki seçili kayıtları raporlamak ve bbaşka bi tabloya kaydetmek için bi tbookmarklist tanımladım.
Aleyküm Selam.

BookMark'ın kullanım amacı tam olarak bu değil.Kullanman gereken yöntem yazdırılmak istenen kayıtları (yani seçilenleri..) bir memory tableye atmak ve oradan raporlamak.

Kolay gele..
Kullanıcı avatarı
selimr
Üye
Mesajlar: 556
Kayıt: 16 Eki 2003 02:07

Mesaj gönderen selimr »

buradaki sorun tbookmark kullanmaktan kaynaklanıyor olabilir..
çünkü tbookmark kullandıktan sonra
queryx.FreeBookmark(yerimi);
şeklinde yok edilmesi gerekiyor..

tbookmar yerine tbookmarkstr kullanmayı dene.. delphi6 ve üzerinde geçerlidir..

örnek;
viewtopic.php?t=10168&highlight=tbookmarkstr
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

Mesaj gönderen meron06 »

alone kardeş zaten bi memory table a yazıyorum.raporlama amaçlı.ama selimr kardeşin dediği gibi bi sorunum vardı .tşk.ederim arkadaşlar.
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

Mesaj gönderen meron06 »

arkadaşlar bookmarkı free etmeyi denedim ama başaramadım.bi önerisi olan varmı acaba.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

TBookmark bir pointer,
bm:=nil; seklinde icindeki adresi bosaltırsınız.
secim:=DBGrideh2.SelectedRows;
for i:=0 to secim.Count-1 do begin
Kayit:=TBookMark(secim.Items);
tetkiklistesi.GotoBookmark(Kayit);

bu kodda secili kayıtlar arasında gezinip ne yapıyorsun,
kodun tamamını (asagıdaki icin de) gonderirsen daha acıklayıcı olur sanırım.
Ayrıca TBookMarkListeh veritipi senin olusturdugun bir tip sanırım, bunun yerine

Kod: Tümünü seç

var
  i: Integer;
begin
  if JvDBUltimGrid.SelectedRows.Count > 0 then
    with DataSource.DataSet do
    begin
      for i := 0 to JvDBUltimGrid.SelectedRows.Count - 1 do
      begin
        GotoBookmark(Pointer(JvDBUltimGrid.SelectedRows.Items[i]));
        Edit;
        FieldByName('DEL').AsInteger := 1;
        Post;
      end;
      RefreshRec;
    end;
end;
seklinde bir yapı kullanabilirsin
ÜŞENME,ERTELEME,VAZGEÇME
meron06
Üye
Mesajlar: 393
Kayıt: 15 Eki 2005 04:23

Mesaj gönderen meron06 »

arkadaşlar ilginiz için çok tşekkür ederim.gimirti abinin cevabı işimi gördü gibi bakalım test sonucunda belli olacak .hepinize Allah kolaylık versin.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Yazmayacaktım duramadım, senin yapmak istediğin şeyin BookMark'la ilgisi yok, MemoryTable kullanarak çözmen gereken bir durum.BookMark bir işaretçidir ve aktif kaydın numarasını tutar.Yaptığın işlem içerisinde eğer tablonun kayıt okuyucusu bir değişiklik yapıyorsa yani ileri, geri, ilk kayıt, son kayıt gibi aktif kaydı değiştiriyorsa ve sen işlem sonunda tekrar ilgili kaydı aktif etmek istiyorsan kullanılman gereken bir araçtır.Tabii seçim yine de senin :idea:

Kolay gele..
Cevapla