Projekat BHGridCtrl


O projektu BHGridCtrl

BHGridCtrl je MFC projekat Grid kontrole, koji sam u slobodno vrijeme razvijao dvije godine 2004-2006. Obzirom da je u projekat uloženo poprilično truda kao i da je BHGrid kontrola na kraju implementacije imala popriličan broj osobina koje se mogu primjeniti u aplikacijama, odlučio sam je objaviti u obliku Open Source u fazama po kojim je i implementirana. U narednim postovima biće objavljene na način koko je sama kontrola bila razvijana.

U slučaju da imate vremena na pretek ili  veliku želju da programirate u C++ ovakvu kontrolu, slobodno me kontaktiraje, zaista bi bilo lijepo kada bi se ova kontrola nastavila razvijati.

Razlozi prestanka razvoja projekta:

  1. Projekat sam prestao razvijati jer zaista nemam vremena za ovakvo kompleksan projekat, jer mi rokovi i komercijalni projekti neostavljaju prostor.
  2. Prelazak na .NET platformu i C# programski jezik.

Projekat posjeduje popriličnu dokumentaciju, liste funkcionalnosti, odredjenih proračuna, kroz verzije. Source kod je također komentiran tako da se može razumijeti logika. Nekada zbog brzine i vremena komentari su mješavina egleskog i bosanskog jezika.

Imlementacija prve verzije BHGridCtrl – Ljeto 2004

Početak implementacije datira iz 2004, s tim da su određene metode bile dosta ranije implementirane. U to vrijeme primjenjivao sam dvije open source grid kontrole: ALXGrid te MFCGrid, koje su svaka za sebe imale prednosti i nedostatke. Ideja BHGridCtlr je bila bazirana na pomenutim kontrolama, ali BHGridCtrl sadrži svoju originalnu logiku. Prva verzija izbačena negdje u ljeto 2004 godine. Sadržavala je jednostavnu rešetku u kojoj su bile implementirane metode za iscrtavanje Grid kontrole, kao i ćelije koje su sadržavaje tekst sa koordinatama (indexima). Naredna slika pokazuje prvu alfa verziju kontrole.

clip_image002

Ova verzija nije imala nikakvih funkcija osim skrolanja i grafičkog manipulisanja vrstama, kolonama i ćelijama u smislu selekcije, resajziranja i skrolanja.

Projekat BHGridCtrl je sadržavao dvije datoteke (zajedno cpp i h):

1. BHGridCtrl.cpp i zaglavlje

2. BHGridCell.cpp i zaglavlje

Osobine BHGridCtrl ALFA

Osnovne osobine prve verzije:

1. Nepokretne (Fixed) kolone i vrste – sa SetFixedColumnCount(3) i SetFixedRowCount(3) definišemo broj nepokretnih kolona/vrsta

clip_image004

2. Selekcija ćelija, pojedinačno i grupno. Prilikom držanja tipke CTRL moguće je selektovati različite regione ćelija. Ova osobina je slična selekciji u Excelu (donja slika).

clip_image006

3. Automatsko resajziranje kolona i vrsta, resajziranje kolona i vrsta pomoću miša i dinamički. Različite visine vrsta su podržane.

clip_image008

4. Skrolanje Grid kontrole. Ako želimo da određena ćelija se pojavi u klijentsko vidljivo područje metode za skrolanje ćelije su implementirane. Test skrolanja je prikazan u demo programu. Skrolanje je vrlo važna i kompleksna osobina. Obziromda Grid kontrola može posjedovati veliki broj vrsta i kolona, ona se ipak svodi na iscrtanja samo onih ćelija koje su vidljive na monitoru. Kada se skrola ili prikazuje ćelija koja nije u vidnom polju potrebno je implementirati posebnu logiku.

clip_image010

Izvorni kod prve verzije projekata uradjen je u VS 2003, i može se skinuti sa ovog linka.

U narednom postu biće riječi oko same implementacije iscrtavanja Grid kontrole

Advertisements