Bunun birkaç yöntemi olabilir. Öncelikle Hangi koltuktan başlayıp kaç adet bilet istendiğini vs. operatörden alabilmen için Adetli bilet satışı gibi bir form koyman gerekir yada Herhangi bir koltuğa sağ tıklayıp Adet gir gibi birşey yapman lazım.
Velhasıl bir şekilde operatörün kaç adet birden bilet satacağını ve bunların değişik oturma seçeneklerine göre yerleştirilmesi için bir algoritma geliştirmen lazım.
Süreci kısaca özetlersek.
1.Kısım: Müşteri isteklerine uyan koltukların tespit edilmesi.
Örnek1: 5 adt. koltuk alacağım ama önlerden olmasın diyebilir gelen kişi.
Örnek2: 6 koltuk ama önlü araklı oturabiliriz diyebilir. vs. vs.
Tüm isteklere karşı ya otomatik koltuk bulan bir algoritma olmalı yada işin büyük kısmını operatöre yıkıp ekrandaki şartlara uyan koltukları farklı renkte gösterebilen yada diğer koltukları geçici olarak pasif yapıp seçime uyan butonları farklılaştıran bir algoritma.
Yada Bilet alma davranışlarında en fazla rastlanılan bir kaç senaryoya uygun bir algoritma geliştirip diğerlerini yine operatöre yıkma.
Burdaki seçeneklere göre programın yapısı değişecektir.
2.Kısım: Seçimi yapılan yada yerleştirmeye uygun olan koltukların satışının yapılması.
Bu kısımda ilk kısma bağlı olarak değişiklikler gösterebilir.
Örn: İstenen kriterlere uyan koltuklar listelenip yanlarına bir çentik konularak operatörün seçim yapması istenebilir yada
Başlangıç koltuğu ve adet girişi istenebilir. vs vs. Bu seçimler sizin programın kullanımını ve Arayüzün kolay yada zor olmasını etkileyecektir.
1- adımda koltuklar bir şekilde tespit edilecek, Butonların aktif yada pasif olma durumuna göre, yada koltuklar için bir tablo Veritabanı vs tutuluyorsa sorgulamalar yapılıp boş olan ve şarta uyan koltuklar seçilecek.
2- adımda ya bu koltukların onclick olayı tetiklenecek yada tablo VT ne kullanılıyorsa orda satış yapıldığı ilgili kayda işlenerek. O koltuğa ait butonun pasif hale gelmesi sağlanacak.
Eğer sadece kod ile ilgili koltuğun dinamik butonuna nasıl tıklanmış gibi işlem yaptırırım dersen.
Aşağıdaki Delphi örneğini incele derim. Öncelikle küçük bir form oluşturup buradaki dinamik butonlara kodla nasıl tıklayacağını denemelisin. Sonra bunu projene uygulayabilirsin.
Ben delphi ile çalıştığım için mantığı kapman için Delphi örneğini veriyorum C de nasıl olur bişey diyemem ama mantığı bildikten sonra bir şekilde hallolur sanırım.
Kolay gelsin...
Kod:
[COLOR=#333333][FONT=Droid Sans Mono]
[/FONT][/COLOR][B]procedure[/B][COLOR=#333333][FONT=Droid Sans Mono] TForm1.Button1Click(Sender: TObject) ;[/FONT][/COLOR] [B]begin[/B]
[I]{code for both a button and a menu item}[/I]
...
[I]{some specific code:}[/I]
[B]if[/B] Sender = Button1 [B]then[/B]
ShowMessage('Button1 clicked!')
[B]else if[/B] Sender = MenuItem1 [B]then[/B]
ShowMessage('MenuItem1 clicked!')
[B]else[/B]
ShowMessage('??? clicked!') ;
[B]end[/B];
[COLOR=#333333][FONT=Verdana]
In general, we check if the Sender is equal to the name of the component.[/FONT][/COLOR][COLOR=#333333][FONT=Verdana]Note: the second else in the if-then-else statement handles the situation when neither the Button1 nor the MenuItem1 have caused the event. But, who else might call the handler, you could ask. Try this (you'll need a second button: Button2) :
[/FONT][/COLOR]
[B]procedure[/B] TForm1.Button2Click(Sender: TObject) ;
[B]begin[/B]
Button1Click(Button2) ;
[I]{this will result in: '??? clicked!'}[/I]
[B]end[/B]; [B]IS and AS[/B]
[COLOR=#333333][FONT=Verdana]Since Sender is of type TObject, any object can be assigned to Sender. The value of Sender is always the control or component that responds to the event. We can test Sender to find the type of component or control that called the event handler using the reserved word is.
For example,
[/FONT][/COLOR] [B]if[/B] Sender [B]is[/B] TButton [B]then[/B]
[I]DoSomething[/I]
[B]else[/B]
[I]DoSomethingElse[/I];