MDI Form ve Tabbed Page MDI Nasıl Yapılır?

MDI form kısa tanımı, iç içe form olarak yapılabilir. C# Windows Form çalışmalarında birden fazla ekranla çalışmalarda açılan ikinci, üçüncü vs. formların ana formdan bağımsız açılması yerine ana formun içinde açılmasını sağlayan yapıdır.

Formları içinde barındıracak olan ana form MDIParent, ana form içinde açılan formlara da MDIChild ismi verilir. Açılan her bir MDIChild, MDIParent formunun MDIChildren koleksiyonunda tutulur.

MDI form yapılırken yapılan işlemler şöyledir:

  • MDIParent olarak kullanılacak olan ana formun IsMdiContainer özelliği true olarak ayarlanır.
  • Ana form içinde açılacak olan child formun MdiParent özelliğine de this anahtar kelimesi ile ana forma bağlanır.
  • Child formu Show() metodu ile form açılır.

Projenin kodlarına aşağıdaki GitHub linkinden ulaşabilirsiniz:

https://github.com/saitorhan/StudyingMdiForms

Uygulama Videosu




Veri Tabanı Tablosundan Entity Class Oluşturma

Veri tabanı işlemlerinin gerçekleştirildiği yazılımlarda tabloların entity C# sınıfları gerekebilmektedir. Her ne kadar Visual Studio içerisinde barındırdığı araçlar ile bunu otomatik yapıyorsa da T-SQL kodları kullanılarak da ilgili sınıf SQL Server tarafında oluşturulup kopyala – yapıştır ile projeye eklenebilir.

Aşağıdaki T-SQL kodu içerisinde ilk satırdaki ‘TableName’ yerine tırnaklar içerisine sınıf karşılığı oluşturulacak tablo yazılıp çalıştırıldığında print komutu ile oluşturulan sınıf ekrana gelecektir.

declare @TableName sysname = 'TableName' 

declare @Result varchar(max) = 'public class ' + @TableName + ' 

{' 

select @Result = @Result + ' 

    public ' + ColumnType + NullableSign + ' ' + ColumnName + ' { get; set; } 

' 

from 

( 

    select  

        replace(col.name, ' ', '_') ColumnName, 

        column_id ColumnId, 

        case typ.name  

            when 'bigint' then 'long' 

            when 'binary' then 'byte[]' 

            when 'bit' then 'bool' 

            when 'char' then 'string' 

            when 'date' then 'DateTime' 

            when 'datetime' then 'DateTime' 

            when 'datetime2' then 'DateTime' 

            when 'datetimeoffset' then 'DateTimeOffset' 

            when 'decimal' then 'decimal' 

            when 'float' then 'float' 

            when 'image' then 'byte[]' 

            when 'int' then 'int' 

            when 'money' then 'decimal' 

            when 'nchar' then 'char' 

            when 'ntext' then 'string' 

            when 'numeric' then 'decimal' 

            when 'nvarchar' then 'string' 

            when 'real' then 'double' 

            when 'smalldatetime' then 'DateTime' 

            when 'smallint' then 'short' 

            when 'smallmoney' then 'decimal' 

            when 'text' then 'string' 

            when 'time' then 'TimeSpan' 

            when 'timestamp' then 'DateTime' 

            when 'tinyint' then 'byte' 

            when 'uniqueidentifier' then 'Guid' 

            when 'varbinary' then 'byte[]' 

            when 'varchar' then 'string' 

            else 'UNKNOWN_' + typ.name 

        end ColumnType, 

        case  

            when col.is_nullable = 1 and typ.name in ('bigint', 'bit', 'date', 'datetime', 'datetime2', 'datetimeoffset', 'decimal', 'float', 'int', 'money', 'numeric', 'real', 'smalldatetime', 'smallint', 'smallmoney', 'time', 'tinyint', 'uniqueidentifier')  

            then '?'  

            else ''  

        end NullableSign 

    from sys.columns col 

        join sys.types typ on 

            col.system_type_id = typ.system_type_id AND col.user_type_id = typ.user_type_id 

    where object_id = object_id(@TableName) 

) t 

order by ColumnId 

set @Result = @Result  + ' 

}' 

print @Result 




Uzak Bilgisayar Yerel Gruplardan Kullanıcı Silme

Sistem yönetiminde istemci bilgisayarlardaki özellikle “Yöneticiler” grubunda yer alan kullanıcıların kontrol edilmesi son derece önemlidir. Bu kontrol sonucunda da gerekli durumlarda bu kullanıcıların silinmesi gerekiyor. Bu işlem için bir yazılım geliştirilmesi gerekiyorsa gerekli olan C# metotu aşağıdaki gibidir.

public bool RemoveUserFromAdminGroup(string computerNameVeyaIp, string silinecekKullanıcı) 

        { 
            try 

            { 

                var de = new DirectoryEntry("WinNT://" + computerName); 

                var objGroup = de.Children.Find("Administrators", "Group"); 
//Administrator: Kullanıcısı silinecek grup
//Group: Statik bir değerdir. Administrator öğesinin grup olduğunu belirtiyor.

                foreach (object member in (IEnumerable)objGroup.Invoke("Members")) 

                { 

                    using (var memberEntry = new DirectoryEntry(member)) 

                        if (memberEntry.Name == user) 

                            objGroup.Invoke("Remove", new[] { memberEntry.Path }); 

                } 

 

                objGroup.CommitChanges(); 

                objGroup.Dispose(); 

 

                return true; 

            } 

            catch (Exception ex) 

            { 

                MessageBox.Show(ex.ToString()); 

                return false; 

            } 

        }




Visual Studio İle GitHub Bağlantısı




Visual Studio’da Siteyi Aynı Anda Birden Fazla Tarayıcı ile Açmak

Yazılım geliştirmenin en önemli işlemi yazılımı yazmaktan sonra elbette ki onu denemektir 🙂 Geliştirilen yazılım masaüstü uygulaması ise ekran ve yerleşim konusunda çok sıkıntı olmasa da geliştirilen uygulama web sayfası ise tarayıcılar arasında farklılık olabilmektedir. Burada devreye, geliştiricinin uygulamayı birden fazla tarayıcı ile deneme işlemi girmektedir. Bu işlemi her defasında farklı bir tarayıcı açarak yapabileceği gibi Visual Studio ile gelen özelliklerden biri olan çoklu tarayıcı işlemi ile de yapabilir. Aşağıda bu işlem için Visual Studio’nun ayarlanması adım adım anlatılacaktır.

  1. Visual Studio ekranında projeyi başlatmak için kullanılan menüden “Browse With…” seçeneğine tıklayın

    Tarayıcı Seçme İşlemi

  1. Ekrana bilgisayarınıza yüklü tarayıcıların listesini barındıran tarayıcı seçme ekranı gelecektir.

Tarayıcı Seçme Ekranı

  1. Tarayıcı seçme ekranından beraber açmak istediğiniz bütün tarayıcıları seçip tarayıcıları başlatmak için “Browse” butonuna tıklayın. Bu işlem sonunda seçilen bütün tarayıcılar başlatılacaktır.

Tarayıcıları Seçme İşlemi




KALİTE DOKÜMAN YÖNETİM SİSTEMİ – KULLANICI EKRANLARI

Merhabalar, projelerimiz arasına yenisini eklemiş bulunuyoruz. Bu yazımızda Kalite Doküman Yönetim Sistemi’mizin kullanıcı ekranlarını görüyor olacağız.

Doküman Yükleme

Doküman Yükleme Ekranı

Kullanıcıların sisteme doküman yükledikleri ekrandır. Bu ekranda yer alan alanlardan dikkat edilecek alanlar aşağıdaki gibidir:

  • İlgili Şirket: Bu alan dokümanın hangi fabrikayı ilgilendirdiği bilgisinin girildiği alandır. Fabrika listesi gruplar listesinde yer alan “Fabrika Yetkileri”nden beslenmektedir. Kişinin yetkili olduğu fabrika listesi gelmektedir.
  • Dokümanı Aşağıdaki Fabrikalarda Genel Yayınla: Burada seçilen fabrikalarda active directory entegrasyonu ile giriş yapan kullanıcıların active directory üzerinden fabrikası tespit edilerek ilgili fabrikada genel dokümanlar listelenir.
  • “Benzer Doküman Ara” butonu: Girilen doküman adı SQL server full text search özelliği ile aranarak daha önce sisteme yüklü dokümanlar görüntülenir. Böylece mükerrer doküman yükleme önüne geçilmiş oluyor. 
    Eğitim başlığı girilerek aratıldığında çıkan sonuç:

Benzer Doküman Arama

Sistem Hareketlerim

Daha önceki yönetici ekranında açıklanan “Doküman Olayları” başlığının kişiye özgü olayların izlendiği ekrandır.

Yüklediğim Dokümanlar

Kişinin yüklediği dokümanlar

Bu ekran aracılığı ile kişi yüklediği dokümanları ve onay durumlarını takip edebilir.

SSS

Sık Sorulan Sorular




KALİTE DOKÜMAN YÖNETİM SİSTEMİ – YÖNETİCİ EKRANLARI

Merhabalar, projelerimiz arasına yenisini eklemiş bulunuyoruz. Bu yazımızda Kalite Doküman Yönetim Sistemi’mizin yönetici ekranlarını görüyor olacağız.

Sistem Genel Görünüm

Sistem hakkında bilgi verilen dashboard ekranıdır. Ekranda aşağıdaki bilgiler yer almaktadır:

Sistem Genel Görünümü

  • Sisteme yüklü doküman sayıları
  • Fabrikalara göre doküman sayıları
  • En fazla okunan 15 doküman
  • Son 10 günde kullanıcıların sisteme giriş sayıları
  • Kullanıcı sayıları
  • Sistemden atılan mail sayısı
  • Sistemden gönderilen bildirim sayıları

Doküman Onaylama

Doküman Onaylama

Sisteme kullanıcılar tarafından yüklenen doküman ve revizyonlar sistemde yayınlanmadan önce sistem yöneticisi ekranına düşmektedir. Yöneticinin onaylaması durumunda doküman / revizyon sistemde yayınlanmaktadır.
Revizyon onayında yönetici isterse onaylamadan önce “Görüntüle” butonuna tıklayarak dokümanı görüntüleyebilir.

Onay Öncesi Doküman Görüntüleme

Doküman veya revizyon onaylanması durumunda; dokümanı görüntüleme yetkisine sahip bütün kullanıcılara mail ve bildirim ile bilgi verilmektedir. Reddedilmesi durumunda ise dokümanı yükleyen kişiye mail ile bilgilendirilme yapılmaktadır.

Harici Paylaşım Linkleri

Kullanıcılar tarafından sisteme üye olmayan kişilerle belli süre için dokümanı paylaşma istekleri onay ekranıdır. Doküman yanında yer alan “Paylaş” butonuna tıklandığında paylaşılacak kişinin mail adresi ve paylaşım başlangıç – bitiş tarihleri girildikten sonra yönetici ekranına düşmektedir. Yönetici tarafından onay verildikten sonra paylaşılan kişiye mal ile şifreli link gönderilmektedir.

Kullanıcılara Mail Gönderme

Kullanıcılara Mail Gönderme

Kullanıcılara toplu olarak mail gönderilen ekrandır. Bu ekranda istenirse grup seçilerek, istenirse de kişiler tek tek seçilerek mail gönderilecek kişiler seçilebilir.

Kullanıcılara Bilgilendirme Gönderme

Kullanıcılara Mail Gönderme

Kullanıcılara toplu olarak bilgilendirme gönderilen ekrandır. Bilgilendirilme kullanıcıların ilk oturum açmasında veya oturum açık ise ilk sayfa yenilemesinde ekranda mesaj kutusu şeklinde gösterilecektir. Bu ekranda istenirse grup seçilerek, istenirse de kişiler tek tek seçilerek mail gönderilecek kişiler seçilebilir.

Kullanıcı Listesi

Kullanıcı Listesi

Sisteme kayıtlı kullanıcılar listesidir. Pasif durumda olan kullanıcılar kırmızı renkle işaretlenir. Düzenle butonu ile kişi bilgileri düzenlenebilir. 

Yeni şifre verilmesi durumunda kişinin ilk oturum açmasında sistem kişiyi şifre değiştirmeye zorlar. Şifre değiştirilmeden sisteme giriş yapılamamaktadır.

Yeni Kişi Ekleme

Kişi Ekleme

Grup Listesi

Grup Listesi

Kullanıcı grupları listesini tutan ekrandır.

Yeni Grup Ekleme

Yeni Grup

Grup özelliklerinde yer alan “Fabrika Yetkileri” başlığı kişinin doküman yüklemesi sırasında doküman özelliklerinde yer alan hangi fabrikaya ait olduğu bilgisinde hangi fabrikaları seçebileceği yetkisidir. (Kullanıcı ekranında anlatılacaktır.)

Klasörler

Klasörler

Sistemde tanımlı olan klasörleri tutan ekrandır.

Yeni Klasör / Özellikleri

Klasör Özellikleri

Klasör özelliklerinin altında hangi kullanıcı grubunun klasör üzerinde sahip olabileceği yetkiler ayarlanabilir.

Fabrika Listesi

Fabrika Listesi

Sisteme tanımlı fabrika listesidir. Aynı menüde yer alan “Yeni Fabrika” menüsü ile yeni fabrika tanımlanabilir. Fabrika kodu doküman numarasının sistem tarafından otomatik tanımlanmasında kullanılacaktır.

Doküman Türleri Listesi

Doküman Türleri

Sisteme tanımlı doküman türlerini tutan ekrandır. Doküman tür kodları doküman numarasının otomatik oluşturulmasında kullanılmaktadır.

Departman Listesi

Departmanlar

Sisteme tanımlı departmanları tutan ekrandır. Departman kodları doküman numarasının otomatik oluşturulmasında kullanılmaktadır.

Doküman Olayları

Doküman Olayları

Sistemde kullanıcıların doküman üzerinde yaptıkları işlemlerin izlendiği ekrandır.

Gönderilen Bildirimler

Bildirmler

Kullanıcılara gönderilen bildirimlerin izlendiği ekrandır.

Kullanıcı Girişleri

Kullanıcı Girişleri

Kullanıcıları sisteme girişlerinin izlendiği ekrandır.

Sistem Ayarları

Sistem ayarları

Bu ekrandan ayarlanabilen sistem parametreleri:




Hesap Makinesi

Programın temel özellikleri:

  • Yapılan işlem dizisinin tarihçesini tutar
  • Tutulan işlem tarihçesini txt dosyasına çıktı alabilir
  • txt dosyasına çıktı alınan işlem tarihçesini programa alıp hatalı işlem kontrolü sağlar

Programın kodlarını https://github.com/saitorhan/HesapMakinesi adresinden alabilirsiniz.




Hastane Yönetim Sistemi Projesi GitHub’ta

Merhabalar arkadaşlar, bundan bir kaç gün önce yazdığım Projeler GitHub’a… adlı yazımda belirttiğim gibi yavaş yavaş elimdeki projeleri GitHub hesabıma yüklüyorum.

Bugün en güzel projelerimden biri olan Hastane Yönetim Sistemi projemi GitHub’a yükledim. Projeyi https://github.com/saitorhan/HealthMonitoringSystem adresinden indirebilirsiniz. Aşağıda indirdiğiniz projeyi nasıl çalıştıracağınız anlatılmıştır.

Dosyaları kaydedeceğimiz “C:\inetpub\wwwroot\Hospital\Application” ve “C:\inetpub\wwwroot\Hospital\Services” klasörlerini oluşturuyoruz. Daha sonra IIS içerisinde aşağıdaki yapıyı oluşturuyoruz.

IIS Yapısı

Burada ki Hospital bir web sitesidir, Application da Hospital altında applicationdur.

Hospital fiziksel konumu [C:\inetpub\wwwroot\Hospital\Services], Application fiziksel konumu da [C:\inetpub\wwwroot\Hospital\Application] olarak ayarlanacak.

Son olarak [C:\inetpub\wwwroot\Hospital\Application] adresinde tr adlı bir klasör açılarak https://github.com/saitorhan/HealthMonitoringSystem/tree/master/tr adresinde yer alan dosyalar klasöre kopyalanacak.

[C:\inetpub\wwwroot\Hospital\Application] klasörüne bir de https://github.com/saitorhan/HealthMonitoringSystem/blob/master/Files.xml dosyası kopyalanacak.

Visual Studio aracılığı ile;
HealthMonitoringSystem.WCFService WCF servisi IIS’de oluşturulan Hospital sitesine,
HealthMonitoringSystem.WinApp Windows uygulaması da Hospital/Application uygulamasına publish edilecek.

Programı bilgisayra kurmak için de http://localhost:[Hospital Sistesini Portu]/Application adresine giderek uygulamayı çalıştırabilirsiniz.

Proje raporunu https://github.com/saitorhan/HealthMonitoringSystem/blob/master/HealthMonitoringSystem.pdf adresinden inceleyebilirsiniz.




Matrix Kayan Yazılar

Matrix Kayan Yazılar kodlarına aşağıdaki linkten ulaşabilirsiniz:

https://github.com/saitorhan/MatrixNumbers