katlar ve odalar gösterim * çözüldü

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
mudipasa
Üye
Mesajlar: 169
Kayıt: 13 Tem 2004 02:25
Konum: Batman

katlar ve odalar gösterim * çözüldü

Mesaj gönderen mudipasa »

S.A. arkadaşlar.
Bende bir otel otomasyonu yazayım dedim. Bismillah dedim başladım ama daha başında takılıverdim. Şimdi katlar ve odalar var. katlar 1.Kat, 2.Kat, 3.Kat...
Odalar da 101,102,103,201,202,203,301,302,303... gibi. Mesela diyelimki odaları kaydedince kat bilgiside giriliyor. benim istediğim gridde veya başka bir şekilde artık nasıl oluyorsa..
Kat.1 101 102 103
Kat.2 201 202 203
Kat.3 301 302 303
şeklinde olmasını istiyorum. Master detail yaptım olmadı, vertical grid olmadı. ne yapacağımı şaşırdım. SQL de iki tabloyu UNION veya INNER JOIN ile birleştirmeye çalıştım istediğim gibi olmadı. Acaba nasıl elde edebilirim...
En son mudipasa tarafından 05 May 2008 01:08 tarihinde düzenlendi, toplamda 1 kere düzenlendi.

Kod: Tümünü seç

www.muratdişikırık.com.tr
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: katlar ve odalar gösterimde yorum

Mesaj gönderen Battosai »

Crack işin bıraktın anlaşılan :) ...İstediğin şekli kısayoldan SQL ile groupby kullanarak yapabilirsin DBGrid kullanacaksan....ama ben birkaç ek komutla bu işi stringgrid ile yapmanı tavsiye ederim...hem üzerinde değişiklik yapman oldukça esnekleşir...istersen her hücreye resim koyabilirsin,doluysa farklı renk boş ise farklı renkte gösterebilirsin... ayrıca katları ayrı bir listede gruplayıp şeçildiği zaman o kata ait olanların listelenmesi daha iyi bir çözüm gibi geliyor bana....
Kullanıcı avatarı
mudipasa
Üye
Mesajlar: 169
Kayıt: 13 Tem 2004 02:25
Konum: Batman

Re: katlar ve odalar gösterimde yorum

Mesaj gönderen mudipasa »

@Battosai kardeş crack için makale bölümünde ufak bir yazım var. bir crackleme sitesine örneğimi gönderdim. ordan cevap bekliyorum. bir-iki güne kadar cevap gelir. ondan sonra makalemi daha zenginleştirecem inşallah.
Benim soruma gelince : SQL bilgim o kadar yok. Birazdaha açıklayabilirmisin (örnekle olsa sevinirim.:)) Stringgride gelince Katlar ve odalar istendiği zaman arttırılıp azaltılabilecek. Aktarım uzun sürebilir. Çünkü odanın diğer ayrıntılarını göstermem için bir bağlantı gerekir. oda stringgridi şişirir heralde.

Kod: Tümünü seç

www.muratdişikırık.com.tr
Kullanıcı avatarı
DarkEternal
Üye
Mesajlar: 158
Kayıt: 19 Eki 2005 11:00

Re: katlar ve odalar gösterimde yorum

Mesaj gönderen DarkEternal »

Bunu anca Master-Detail ile yapabilirsin. Katlar Master, odalarda Detail olacak ve aradaki bağlantı ise kat bilgisi olacak. Bunların da yapım şekli kullandığın component ve veritabanına göre değişir...
kısa kısa yazılım...
http://TKorhan.blogspot.com/
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: katlar ve odalar gösterimde yorum

Mesaj gönderen Battosai »

İşin içine görsellik katılacaksa dbgrid ile biraz yavan ve sıradan bir görüntü oluşacaktır...Benzer programların gösterim tarzına bakılarak bir yöntem şeçilebilir.Otel programı yapmak zahmetli iştir ayrıca çok detaylı olduğu için otelcilikten anlaman veya devamlı anlayan birinden destek alman lazım...piyasada çok program var ama tabiki ilk çıkanlar piyasada hakim onların programlarına bakıncada gerçekten görsellik açısından durum vahim.Örneğin odalar şöle kapı resmi ile gösterilse çok şık duracaktır....
Kullanıcı avatarı
mudipasa
Üye
Mesajlar: 169
Kayıt: 13 Tem 2004 02:25
Konum: Batman

Re: katlar ve odalar gösterimde yorum

Mesaj gönderen mudipasa »

master-detail yaptım yaptımda zaten sorun onu hangi componentle gösterecez. Başka programlara bakıyorumda sanırım onların yaptığı veya farklı bir component kullanmışlar.

Kod: Tümünü seç

www.muratdişikırık.com.tr
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: katlar ve odalar gösterimde yorum

Mesaj gönderen Battosai »

Aslında hiç birşey aramana gerek yok...SttringGrid sana yeter...
Kullanıcı avatarı
mudipasa
Üye
Mesajlar: 169
Kayıt: 13 Tem 2004 02:25
Konum: Batman

Re: katlar ve odalar gösterim * çözüldü

Mesaj gönderen mudipasa »

S.A.
Arkadaşlar ben olayı çözdüm. ScrollBox üzerine önce kat sonrada oda lar için buttonlar create ederek yaptım. left ve toplarınıda bir şekilde oturtuktan sonra istediğim görüntüyü aldım. Oda durumuna görede butonu renklendirdim. Çok güzel oldu. :D @Battosai arkadaşımızın dediği gibi stringgrid kullanmadım çünkü aynı zamanda oda verilerinede ulaşmam gerekiyordu. Ama ben Odanın ID sini butonun Tag değerine eşitledim. OnClick olayı ilede ODALAR tablosunda bu değer ulaşabiliyorum. Kodlar bunlar belki lazım olur(Ben RzButton Kullandım) :

procedure Todadurum.Button1Click(Sender: TObject);
var
l,t : Integer;
Img : TRzButton;
begin
l := 5; t := 5;
dm.tbkat.First;
while not dm.tbkat.Eof do
begin
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('SELECT * FROM ODALAR WHERE KAT_ID='+QuotedStr(dm.tbkatKAT_ID.AsString));
IBQuery1.Open;
while not IBQuery1.Eof do
begin
Img := TRzButton.Create(sbMain);
Img.Parent := sbMain;
Img.OnClick := XSpBtnClick;
Img.Name := 'Btn'+IntToStr(IBQuery1ODA_ID.AsInteger);
Img.Font.Name := 'Tahoma';
Img.Font.Size := 11;
Img.Font.Style := [fsBold];
Img.Width := 40;
Img.Height := 35;
Img.Caption := IBQuery1ODAADI.AsString;
if IBQuery1ODA_DURUM.AsString = 'BOŞ' then
begin
Img.Cursor := crHandPoint; Img.Color := clWhite;
Img.Tag := IBQuery1ODA_ID.AsInteger;
end
else if IBQuery1ODA_DURUM.AsString = 'DOLU' then
begin
Img.Cursor := crNo; Img.Tag := IBQuery1ODA_ID.AsInteger;
Img.Color := clRed; Img.Enabled := False;
end
else if IBQuery1ODA_DURUM.AsString = 'REZERVE' then
begin
Img.Cursor := crNo; Img.Tag := IBQuery1ODA_ID.AsInteger;
Img.Color := $008080FF; Img.Enabled := False;
end
else if IBQuery1ODA_DURUM.AsString = 'KİRLİ' then
begin
Img.Cursor := crNo; Img.Tag := IBQuery1ODA_ID.AsInteger;
Img.Color := $000080FF; //Img.Enabled := False;
end
else if IBQuery1ODA_DURUM.AsString = 'ARIZALI' then
begin
Img.Cursor := crNo; Img.Tag := IBQuery1ODA_ID.AsInteger;
Img.Color := $00FF8000; //Img.Enabled := False;
end;
Img.Left := l; Img.Top := t;
l := l + 45;
IBQuery1.Next;
end;
l := 5; t := t + 40;
dm.tbkat.Next;
end;
end;

Burda sadece oda yerleşimi var. sizde aynı şekilde left, topları ayarlayarak önce Kat bilgilerini oluşturabilirsiniz. Memelekte hayırlı uğurlu olsun...

Kod: Tümünü seç

www.muratdişikırık.com.tr
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: katlar ve odalar gösterim * çözüldü

Mesaj gönderen Battosai »

Yöntemin hayırlı olsun ama bence luzumsuz bir create yapmış olacaksın...hem zahmetli hem hata yapma olanağı fazla. Anladığım kadarıyla stringgrid kullanmayı veya neler yapabileceğini bilmiyorsun...neyse farketmez tercih senin.
Kullanıcı avatarı
mudipasa
Üye
Mesajlar: 169
Kayıt: 13 Tem 2004 02:25
Konum: Batman

Re: katlar ve odalar gösterim * çözüldü

Mesaj gönderen mudipasa »

S.A. @Battosai kardeş ne yalan söyleyeyim bugüne kadar string gridle pek değil hatta hiç çalışmadım desem yeridir. Bu yüzden sen anlatsanda bi öğrensek diyorum. Benim asıl istediğim üzerine tıkandığı zaman oda bilgisine ulaşabilmek ve oda durumuna göre hücreye renk vermek. Yoksa string grid kullanmayı bende düşündüm. Bunu nasıl yapabiliriz yardımcı olurmusun...?

Kod: Tümünü seç

www.muratdişikırık.com.tr
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: katlar ve odalar gösterim * çözüldü

Mesaj gönderen Battosai »

Bir tavsiye daha ID meselesini oda numarasına göre halletmen.Yani sen istersen id şeklinde farklı bir alan tut ama gerek yok.Bu tarz tablolarda yani her kaydı belirtecek bir unique alan varsa bu alanı primary key gibi kullanman en iyisidir.Hem autoinc alanlardan da kurtulmuş olursun.Dolayısıyla stringGrid ilgili hücrelerine oda numaralarını yazdırabilirsin.Bu hücreye tıkladığında da oda numarasına göre işlem yapabilirsin...
Bu yazıyı yazarken aklıma senin için daha kolay bir yöntem olacak Listview kullanman geldi.Listview bu iş için aslında en iyisi bu aralar hep stirggrid ile çalıştığım için listview aklıma gelmedi 8) Bu internet kafe programlarında varya ekranlar görünüyor listede gayet şık ve güzel duruyor bu işi odalar içinde yapabilirsin.
Kullanıcı avatarı
mudipasa
Üye
Mesajlar: 169
Kayıt: 13 Tem 2004 02:25
Konum: Batman

Re: katlar ve odalar gösterim * çözüldü

Mesaj gönderen mudipasa »

Teşekkür ederim @Battosai. Forumun hakkını verdiğimize inanıyorum çünkü bilgi paylaşımı çok güzel bir olay.. Neyse, ID ve ODANO yu farklı tutmak zorundayım çünkü otellerde birden fazla Singe, Double, Suite v.s. gibi oda adlandırmaları var. Listview de aynı anda katları ve onun yanında odaları göstermeyi başaramadım. belkide vardır da çok uğraştım ama. özellikle Devexperess in cxListView örneğini satır satır da inceledim. neyse benim istediğim görüntü http://www.batmanotoemlak.com/Images/odadurum.jpg şeklinde olmalıydı. istersen bir resime bak.

Kod: Tümünü seç

www.muratdişikırık.com.tr
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: katlar ve odalar gösterim * çözüldü

Mesaj gönderen conari »

Bir iki öneri vereyim. Oda durumlarını ve Renklerini kullanıcı tanımlı yaparsan daha iyi olur.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: katlar ve odalar gösterim * çözüldü

Mesaj gönderen White Rose »

@ DarkEternal ın da dediği gibi bu iş için en iyi yöndem master-detay dır.
2 grid kullanırsınız; biri master(Katlar) diğeri detay (Odalar) şeklinde olabilir
yada katları DbLookupCombobox olarak ta gösterebilirsiniz.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: katlar ve odalar gösterim * çözüldü

Mesaj gönderen Battosai »

Zaten listview'de sadece odalar görünecek.Onun yanınada listbox veya türevi bir listeylede katları listelersin hangisi seçilirse listview de o odalar gelir.Listview için 48*48 ebatında oda tanımları hazırlarsın resim olarak odanın durumuna görede imageindex'den resmi değiştirirsin.Böylece renklerle uğraşmak zorunda kalmazsın.Resim ebatı sana kalmış 32*32 de fena olmaz yerden tasarruf olur.
Cevapla