Bir öneri istiyorum

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
FrontPage
Üye
Mesajlar: 25
Kayıt: 08 Mar 2004 10:29
İletişim:

Bir öneri istiyorum

Mesaj gönderen FrontPage »

S.a. arkadaşlar

iyi akşamlar. Bir program yapıyorum. Bedava çalışacak bir yapı. Çalışan insanların sabah işe gelince yarım saat haber okuduklarını ve haberlere ulaşmak için 5-6 tane site gezdiklerini biliyorum. İstisnalar olabilir tabi ama genelde böyle gördüm :)
Ben buradaki insanların az da olsa orada kaybettikleri zamanı kazanmaları için bir program ve web sitesi geliştiriyorum. sitenin adresini yazsam reklam olmaz umarım. adres: haberbar.com Kısaca yaptığı iş rss desteği olan haber sitelerinden güncel haberleri alarak haberbar programı yüklü olan bilgisayarlara iletiyor. Daha doğrusu program alıyor haberleri :)
Örnek kullanım yada gelişme aşamasına http://www.haberbar.com/HaberBar.rar dosyasından erişebilirsiniz.

Benim kafamdaki olayda kişi kategorileri XML aracılığı ile alıyor daha sonra bunları parse ederek tabloya yazdırıyorum. Tablo olarak acess tablosu kullanıyorum. mdb realtime create ettiriyorum. Herşey bu adımlarda normal. Zamanı gelince yeni haberleri bulup indiriyor. Bu da normal. Ama gelen haberleri ne şekilde göstereceğimiz tam olarak kestiremedim. Akşama kadar grid baktım. Düşündüm. Araştırdım ama haberleri göstertecek güzel bişey bulamadım ya da yapamadım.
Gerekli olan yapıda databaseden veriyi alacak. Son eklenen en başta olacak şekilde. kategori alanına göre gruplatabilirim ama gerekte pek yok.
Kullandığım alanlar Başlık, açıklama ve url. Bu alanlara göre üstte küçük bir ikon yanında kalın bir şekilde haber başlığı ve tıklandığından url sayfası default browserde göstereceğim. Başlığın altında da tek satır halinde kısa bir açıklama. Bunu elle yapmaya kalktığım zaman bana saçma olacak gibi geliyor. Bu yapıda göstertebileceğim bir component bilen ya da delphinin standart componetlerinden hangisi ile yapabilirim fikir verebilirseiniz memnun olurum.

Yeni gelen haberleri msn popup benzeri bir ekranda zaten göstericem ama onun haricinde programda da bütün haberleri göstertmek istiyorum.

(Bu arada telif haklarına tamamen uygun bir şekilde düzenlenmiş bir projedir. Haber detay için haber kaynağının sayfası açılıyor. Bununla ilgili googlenin bir projesi olmuş ancak buna haber sağlayıcılar karşı çıkmışlardı :) )

Öneri, eleştiri ve yardımlarınız için şimdiden teşekkürler
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

projeniz için jedi gridlerini inceleyin bence, ufak resimleri gridde gösterebilirsiniz.
Konunun başlığı forum kurallarına aykırı, başlığı "İmage gösterimi yapabilecek, Yetenekli Gird Önerisi istiyorum" gibi bişeyle değiştirebilirsiniz. Böylece başlığı gören birsi mesaj içeriği hakkında ufak da olsa bir fikir sahibi olur.
Saygılarımla.
Projenizde Başarılar diliyorum
FrontPage
Üye
Mesajlar: 25
Kayıt: 08 Mar 2004 10:29
İletişim:

Mesaj gönderen FrontPage »

teşekkürler. aslında tam olarak bir grid değil. bir arkadaşımın lisanslı dxgrid bileşeni var onu denedim ama lisansını alacak kadar param yok :)
jediden bir kaç vcl kullandım. Tam aradığım özelliklerde değil ya da ben iki fieldi alt alta göstertemedim. Delphi kullanmayalı neredeyse bir seneye yaklaştı. Bazı şeyler hakkında sağlıklı fikirler yürütemiyorum.
bu aradığım şey gridden farklı bişeyler de olabilir. Ya da resim olmasına da gerek yok ufacık bir simge de olabilir. Olmasına da gerek yok :)
bold bir satır (başlık için) tıklandığından url açılacak. ve altında kısa bir yada iki satir bilgi ve biraz boşluk.
Örnek:

:arrow: Borland yakında Türkiye'de büyük yatırımlar yapacağını duyurdu.
Borlan firması gelişmiş ve çok fazla sayıda programcıya hidap eden Delphi programlama dilinin...

:arrow: Borland yakında Türkiye'de büyük yatırımlar yapacağını duyurdu.
Borlan firması gelişmiş ve çok fazla sayıda programcıya hidap eden Delphi programlama dilinin...

bu şekilde olması yeterli. :arrow: yerine > kullanabilirim. O pek sorun olmaz. O yüzden tam nasıl bişey işimi görür fikir yürütemedim :'(
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

RSS readerlar da ekran genelde 3 bolumden olusuyor. Sol tarafta bir listbox oluyor ve bunda RSS feeder'larin listesi oluyor. Sag taraf yatay olarak ikiye bolunuyor ve sag ustte secili olan kaynaktan haberlerin listesi oluyor, yine bir listbox kullaniliyor. sag altta ise bir read only bir memo alaninda haberin detayi veriliyor ve ustune tiklaninca web sayfasi aciliyor.

Kolay gelsin...
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Bence basit bir DBGrid'e canvas operasyonları ile bu verdiğin örneğin aynısını rahatlıkla yapabilirsin, fazla uzaklara gitmene gerek yok derim :wink: (icon/resim dahil)
Resim
Resim ....Resim
FrontPage
Üye
Mesajlar: 25
Kayıt: 08 Mar 2004 10:29
İletişim:

Mesaj gönderen FrontPage »

@marmarman tşk. evet görünüm olarak ne yapacağımı buldum ama bu yolun daha çook başında görünüyorum :)
http://delphi.about.com/od/vclusing/a/2007ownerdraw.htm
bunun üzerine biraz çalışayım :) inş bu canvas olayını güzel biş şekilde başarabilirim. Eğer yapabilirsem burda paylaşmak isterim :))


(@hdayi tşk. aslında yapmak istediğim şey bir rss readerden daha farklı. yinede tşk)
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Madem araştırdın bir yere kadar geldin, kendimce bir örnek hazırladım onu sunayım...

- Veritabanı olarak kendiminkini kullandım sen veri alanı değişikliğini yaparsın... Forma bir tane TImageList bir de TDBGrid ekledik. Bu ImageList içerisinde dilediğin kadar Bitmap Icon koyabilirsin. Kayıt tipine göre de sondaki (0) yerine image'in indexini verir, onun basılmasını sağlarsın...

Örnek

Kod: Tümünü seç

ImageList1.Draw( Canvas, Rect.Left, Rect.Top, 0); 

Kod: Tümünü seç

ImageList1.Draw( Canvas, Rect.Left, Rect.Top, 1); 
veya

Kod: Tümünü seç

ImageList1.Draw( Canvas, Rect.Left, Rect.Top, 2); 
gibi..

- Bunlar aşağıdaki örnekteki gibi Transparan çevrelenmiş olarak DBGrid'in canvasına basılabilir nitelikte olsunlar... Mesela buradaki (formda gördüğü) ok resmini ( :arrow: ) farklı kaydet dediğinde BMP tipini seçerek kaydet ve öylece ImageList'e al. :idea:

Resim

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
begin
  AdoQuery1.SQL.Text := 'SELECT M_Name, M_TR_Name FROM Movies';
  AdoQuery1.Active   := True;
  DBGrid1.Options    := DBGrid1.Options - [dgEditing];
  TStringGrid(DBGrid1).DefaultRowHeight := 30;
end;

Kod: Tümünü seç

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var
  Ortala : Boolean;
begin
  If Column.Field.DisplayName = 'M_Name' then begin
    With TDBGrid(Sender) do begin
      If (gdSelected in State) OR (gdFocused in State) then begin
        Canvas.Brush.Color := clAqua;
      end else begin
        Canvas.Brush.Color := clYellow;
      end;
      Canvas.FillRect(Rect);
      Canvas.Font.Color := clBlack;
      Canvas.Font.Style := [fsBold];
      Canvas.TextOut( Rect.Left + ImageList1.Width, Rect.Top, DataSource.Dataset.FieldByName('M_Name').AsString );
      Canvas.Font.Style := [];
      Canvas.TextOut( Rect.Left + ImageList1.Width, Rect.Top + Canvas.TextHeight('H'), DataSource.Dataset.FieldByName('M_TR_Name').AsString );
      // Resmi dikey ortalamak istersen true yap...
      Ortala := False;
      If Ortala then ImageList1.Draw(Canvas, Rect.Left, Rect.Top+(((Rect.Bottom-Rect.Top-ImageList1.Height)) div 2), 0)
                else ImageList1.Draw(Canvas, Rect.Left, Rect.Top, 0);
    end;
  end;
end;
- Afiyet olsun 8)
Resim
Resim ....Resim
Cevapla