Dj Demir Posted August 12, 2013 Share Posted August 12, 2013 Merhabalar arkadaşlar. Bir uygulama yaptım. Yaklaşık iki haftadır bu sorunumu çözemedim. Gelelim sorunuma. Programın On Preload Bölümüne iki farklı koşul okutuyorum. Birincisi sağlanırsa bu olsun ikincisi de sağlanırsa bu olsun diye Örnek kod. MenuKontrol = INIFile.GetValue(_ProgramFilesFolder.. "\\Alt F4\\Database\\Settings.ini", "Menü Settings", "Start"); if MenuKontrol == "StartUp" then function g_OnUpdateMenuEnabled(CommandID,tblInfo) if (CommandID == 102) then return false; end if MenuKontrol == "NonStartUp" then if (CommandID == 400) then return false; end end end end PassKontrol = File.DoesExist(_ProgramFilesFolder.. "\\Alt F4\\Database\\Alt F4.ini"); if PassKontrol == true then function g_OnUpdateMenuEnabled(CommandID,tblInfo) if (CommandID == 101) then return false; end end end if PassKontrol == false then function g_OnUpdateMenuEnabled(CommandID,tblInfo) if (CommandID == 300) then return false; end end end Komutlardan da anlaşılacağı üzere eğer ini dosyasında StartUp yazarsa 102 ID'li menüyü devre dışı bırak. Eğer NonStartUp yazarsa bu defa 400 ID'li menüyü devre dışı bırak dedirtiyorum. ve bunun yanında ini dosyası yoksa 101 ID'li menüyü devre dışı bırak diyorum Ancak program sadece birini devreye sokuyor. Yani 101 ID'li menüyü devre dışı bırakıyor ama ini dosyasında NonStartUp yazmasına rağmen menüyü devre dışı bırakmıyor. Quote Link to comment Share on other sites More sharing options...
KintaRo Posted August 12, 2013 Share Posted August 12, 2013 MenuKontrol = INIFile.GetValue(_ProgramFilesFolder.. "\\Alt F4\\Database\\Settings.ini", "Menü Settings", "Start"); burada value kısmında türkçe karakter kullanmışsın, onu düzeltip denermisin. Quote Link to comment Share on other sites More sharing options...
Dj Demir Posted August 12, 2013 Author Share Posted August 12, 2013 Denemiştim olmamıştı. Tavsiyeniz üzerine tekrardan denedim yine olmadı maalesef. Quote Link to comment Share on other sites More sharing options...
nightmare3519 Posted August 12, 2013 Share Posted August 12, 2013 MenuKontrol = INIFile.GetValue(_ProgramFilesFolder.. "\\Alt F4\\Database\\Settings.ini", "Menü Settings", "Start"); if MenuKontrol == "StartUp" then function g_OnUpdateMenuEnabled(CommandID,tblInfo) if (CommandID == 102) then return false; end elseif MenuKontrol == "NonStartUp" then if (CommandID == 400) then return false; end end end PassKontrol = File.DoesExist(_ProgramFilesFolder.. "\\Alt F4\\Database\\Alt F4.ini"); if PassKontrol == true then function g_OnUpdateMenuEnabled(CommandID,tblInfo) if (CommandID == 101) then return false; end end end elseif PassKontrol == false then function g_OnUpdateMenuEnabled(CommandID,tblInfo) if (CommandID == 300) then return false; end end Bu şekilde denermisin? Quote Link to comment Share on other sites More sharing options...
Dj Demir Posted August 12, 2013 Author Share Posted August 12, 2013 Düzeltmende ufak bir sıkıntı vardı hallettim. Ancak koşul olarak elseif şeklinde de denemiştim. Sizin yaptığınız da bu. Yine de okumuyor maalesef. Quote Link to comment Share on other sites More sharing options...
Dj Demir Posted August 13, 2013 Author Share Posted August 13, 2013 Yardımcı olabilecek ? Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted August 13, 2013 Share Posted August 13, 2013 bu şekilde olmuyor mu ? if MenuKontrol == "StartUp" and PassKontrol == true then Quote Link to comment Share on other sites More sharing options...
Dj Demir Posted August 14, 2013 Author Share Posted August 14, 2013 Maalesef o da olmamıştı. Pek iyi değilim Ams'de ama sanırım Fonksiyon'da sıkıntı var. Bu fonksiyonu art arda koyamıyoruz galiba. Koyunca sadece birincisi okuyor. Fonksiyon üzerinde değişiklikler yapacağım. O zaman bakalım neler oluyor. Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted August 14, 2013 Share Posted August 14, 2013 ini dosyasını da dahil ederek projeyi yada bir ufak örneğini gönderirmisin bir bakarım istersen... Quote Link to comment Share on other sites More sharing options...
Dj Demir Posted August 14, 2013 Author Share Posted August 14, 2013 Genel kutunuzda... Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted August 14, 2013 Share Posted August 14, 2013 (edited) Bu şekilde denermisin lütfen; MenuKontrol = INIFile.GetValue(_ProgramFilesFolder.. "\\Alt F4\\Database\\Settings.ini", "Menu Settings", "Start"); PassKontrol = File.DoesExist(_ProgramFilesFolder.. "\\Alt F4\\Database\\Alt F4.ini"); if MenuKontrol == "StartUp" and PassKontrol == true then tblMenu = Application.GetMenu(); tblMenu[1].SubMenu[3].Enabled = false; Application.SetMenu(tblMenu); elseif MenuKontrol == "NonStartUp" and PassKontrol == true then tblMenu = Application.GetMenu(); tblMenu[1].SubMenu[4].Enabled = false; Application.SetMenu(tblMenu); elseif PassKontrol == false then Application.SetMenuBarActive(false); end Eğer koşullarda eksik varsa düzenleyebilirsin... Not : Ayrıca SourceFolder olarak kullanırsan daha iyi olur bence çünkü yol değişebilir... Edited August 14, 2013 by muratboy31 Quote Link to comment Share on other sites More sharing options...
Dj Demir Posted August 14, 2013 Author Share Posted August 14, 2013 MenuBar devre dışı oluyor. Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted August 14, 2013 Share Posted August 14, 2013 İstediğin zaten o değilmiydi ? Quote Link to comment Share on other sites More sharing options...
DivaneTR Posted August 14, 2013 Share Posted August 14, 2013 On Show eventi ile denediniz mi ? On Preload daha arayüz gelmeden çalıştığı için bazen sıkıntı olabiliyor. Quote Link to comment Share on other sites More sharing options...
Dj Demir Posted August 14, 2013 Author Share Posted August 14, 2013 Hayır MenuBar tamamen devre dışı oldu. Tabi ki istediğim tamamen devre dışı olması değildi. Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted August 14, 2013 Share Posted August 14, 2013 Tamamda sen dosyayı yanlış yere koyuyuorsundur o yüzden dosyayı bulmadığı için menu bar devredışı oluyor... :) PassKontrol = File.DoesExist(_ProgramFilesFolder.. \\Alt F4\\Database\\Alt F4.ini); bu dosyanın doğru yerde olduğundan emin ol... çünkü yukarıda verdiğim kodda eğer bu dosya yoksa menuyu pasif et var... Quote Link to comment Share on other sites More sharing options...
DivaneTR Posted August 14, 2013 Share Posted August 14, 2013 Proje dosyası verebilirsen detaylı olarak bakmak isterim. Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted August 14, 2013 Share Posted August 14, 2013 (edited) Bu şekilde eğer dosya yoksa 101 i devredışı bırakır... MenuKontrol = INIFile.GetValue(_ProgramFilesFolder.. "\\Alt F4\\Database\\Settings.ini", "Menu Settings", "Start"); PassKontrol = File.DoesExist(_ProgramFilesFolder.. "\\Alt F4\\Database\\Alt F4.ini"); if MenuKontrol == "StartUp" and PassKontrol == true then tblMenu = Application.GetMenu(); tblMenu[1].SubMenu[3].Enabled = false; Application.SetMenu(tblMenu); elseif MenuKontrol == "NonStartUp" and PassKontrol == true then tblMenu = Application.GetMenu(); tblMenu[1].SubMenu[4].Enabled = false; Application.SetMenu(tblMenu); elseif PassKontrol == false and MenuKontrol == "NonStartUp" then tblMenu = Application.GetMenu(); tblMenu[1].SubMenu[1].Enabled = false; tblMenu[1].SubMenu[4].Enabled = false; Application.SetMenu(tblMenu); end ama yukarıda da dediğim gibi, koşulda eksiklik varsa ekleyebilirsin, kod çalışıyor çünkü... Ayrıca eğer buda olmadı diyorsan bence senin koşulda yanlışlık var ozaman, birde şöyle anlatmayı dene; eğer dosya varsa ve nonstartup sa bunu yap eğer dosya varsa ve startup sa bunu yap eğer dosya yoksa ve nonstartup sa bunu yap eğer dosya yoksa ve startup sa bunu yap gibi... Edited August 14, 2013 by muratboy31 Quote Link to comment Share on other sites More sharing options...
Dj Demir Posted August 14, 2013 Author Share Posted August 14, 2013 Sanırım sen beni anlamadın.Üstelik sana apz'yi de verdim. Orada görmen gerekiyordu. 1.MenuBar sadece Startup veya NonStartUp'tan ibaret değil ki devre dışı olsun. Ayrıca dosya yolu doğru. Gidilen yolda dosyalar mevcut. 2.Ben farklı farklı koşullar iletiyorum programa ama sen iki koşulu birleştiriyorsun. Mesela diyorsun ki ; if MenuKontrol == "StartUp" and PassKontrol == true then felan filan. Ancak burada ikisinin birden sağlanması istenince Startup sağlanıp PassKontrol sağlanmazsa komut StartUp'ı da yok sayıyor. Yani bana göre olmayan bir koşul bu. Kısacası şu; StartUp ise 102 ID'li SubMenüyü devre dışı bırak NonStartUp ise 400 ID'liyi Dosya varsa 101 ID'liyi Dosya yoksa 300 ID'liyi. Yani 4 farklı koşul her biri için Submenüyü devre dışı bırakan fonksiyon. Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted August 14, 2013 Share Posted August 14, 2013 Tamamda bence bunu yapmak daha kolay zaten sana enbaştan beri diyorum... eksik varsa tamamlayabilirsin çünkü verdiğim kod doğru çalışıyor, yane mantık orada var zaten... bunu denermisin; MenuKontrol = INIFile.GetValue(_ProgramFilesFolder.. "\\Alt F4\\Database\\Settings.ini", "Menu Settings", "Start"); PassKontrol = File.DoesExist(_ProgramFilesFolder.. "\\Alt F4\\Database\\Alt F4.ini"); if MenuKontrol == "StartUp" then tblMenu = Application.GetMenu(); tblMenu[1].SubMenu[3].Enabled = false; Application.SetMenu(tblMenu); elseif MenuKontrol == "NonStartUp" then tblMenu = Application.GetMenu(); tblMenu[1].SubMenu[4].Enabled = false; Application.SetMenu(tblMenu); end if PassKontrol == false then tblMenu = Application.GetMenu(); tblMenu[1].SubMenu[2].Enabled = false; Application.SetMenu(tblMenu); elseif PassKontrol == true then tblMenu = Application.GetMenu(); tblMenu[1].SubMenu[1].Enabled = false; Application.SetMenu(tblMenu); end Quote Link to comment Share on other sites More sharing options...
Dj Demir Posted August 14, 2013 Author Share Posted August 14, 2013 (edited) Mesele eksiklikte değil. Onu zaten tamamlayacağım. Ancak geçen sefer ki düzenlemende iki koşulu birbirine bağlamıştın. Biri olmazsa diğeri de sağlanmayacaktı. Ancak sorun olan şuydu. Dosyalar olmasına rağmen, MenuBar tamamen devre dışı kalıyordu. Ancak şimdi oldu. Çok teşekkür ederim. Bu da olmasaydı en son çözümüm Application.SetMenu olacaktı [spoiler]Menu = {}; Menu[1] ={}; Menu[1].Text = "Menü"; Menu[1].ID = 100; Menu[1].Checked = false; Menu[1].Enabled = true; Menu[1].SubMenu = {}; Menu[1].SubMenu[1] = {}; Menu[1].SubMenu[1].Text = "Şifre Oluştur"; Menu[1].SubMenu[1].IconID = 0; Menu[1].SubMenu[1].ID = 101; Menu[1].SubMenu[1].Checked = false; Menu[1].SubMenu[1].Enabled = true; Menu[1].SubMenu[2] = {}; Menu[1].SubMenu[2].Text = "Şifreyi Kaldır"; Menu[1].SubMenu[2].IconID = 18; Menu[1].SubMenu[2].ID = 300; Menu[1].SubMenu[2].Checked = false; Menu[1].SubMenu[2].Enabled = true; Menu[1].SubMenu[3] = {}; Menu[1].SubMenu[3].Text = "Açılışta Çalıştır"; Menu[1].SubMenu[3].IconID = 1; Menu[1].SubMenu[3].ID = 102; Menu[1].SubMenu[3].Checked = true; Menu[1].SubMenu[3].Enabled = false; Menu[1].SubMenu[4] = {}; Menu[1].SubMenu[4].Text = "Açılıştan Kaldır"; Menu[1].SubMenu[4].IconID = 16; Menu[1].SubMenu[4].ID = 400; Menu[1].SubMenu[4].Checked = false; Menu[1].SubMenu[4].Enabled = true; Menu[1].SubMenu[5] = {}; Menu[1].SubMenu[5].Text = "Ana Tema"; Menu[1].SubMenu[5].IconID = 2; Menu[1].SubMenu[5].ID = 103; Menu[1].SubMenu[5].Checked = false; Menu[1].SubMenu[5].Enabled = true; Menu[1].SubMenu[6] = {}; Menu[1].SubMenu[6].Text = "Kısayollar"; Menu[1].SubMenu[6].IconID = 15; Menu[1].SubMenu[6].ID = 12; Menu[1].SubMenu[6].Checked = false; Menu[1].SubMenu[6].Enabled = true; Menu[2] ={}; Menu[2].Text = "|"; Menu[2].ID = -1; Menu[2].Checked = false; Menu[2].Enabled = false; Menu[3] ={}; Menu[3].Text = "Tema 1"; Menu[3].ID = -1; Menu[3].Checked = false; Menu[3].Enabled = true; Menu[3].SubMenu = {}; Menu[3].SubMenu[1] = {}; Menu[3].SubMenu[1].Text = "Temayı Uygula"; Menu[3].SubMenu[1].IconID = 8; Menu[3].SubMenu[1].ID = 11; Menu[3].SubMenu[1].Checked = false; Menu[3].SubMenu[1].Enabled = true; Menu[4] ={}; Menu[4].Text = "|"; Menu[4].ID = -1; Menu[4].Checked = false; Menu[4].Enabled = false; Menu[5] ={}; Menu[5].Text = "Tema 2"; Menu[5].ID = 22; Menu[5].Checked = false; Menu[5].Enabled = true; Menu[5].SubMenu = {}; Menu[5].SubMenu[1] = {}; Menu[5].SubMenu[1].Text = "Temayı Uygula"; Menu[5].SubMenu[1].IconID = 8; Menu[5].SubMenu[1].ID = 22; Menu[5].SubMenu[1].Checked = false; Menu[5].SubMenu[1].Enabled = true; Menu[6] ={}; Menu[6].Text = "|"; Menu[6].ID = -1; Menu[6].Checked = false; Menu[6].Enabled = false; Menu[7] ={}; Menu[7].Text = "Tema 3"; Menu[7].ID = -1; Menu[7].Checked = false; Menu[7].Enabled = true; Menu[7].SubMenu = {}; Menu[7].SubMenu[1] = {}; Menu[7].SubMenu[1].Text = "Temayı Uygula"; Menu[7].SubMenu[1].IconID = 8; Menu[7].SubMenu[1].ID = 33; Menu[7].SubMenu[1].Checked = false; Menu[7].SubMenu[1].Enabled = true; Menu[8] ={}; Menu[8].Text = "|"; Menu[8].ID = -1; Menu[8].Checked = false; Menu[8].Enabled = false; Menu[9] ={}; Menu[9].Text = "Tema 4"; Menu[9].ID = -1; Menu[9].Checked = false; Menu[9].Enabled = true; Menu[9].SubMenu = {}; Menu[9].SubMenu[1] = {}; Menu[9].SubMenu[1].Text = "Temayı Uygula"; Menu[9].SubMenu[1].IconID = 8; Menu[9].SubMenu[1].ID = 44; Menu[9].SubMenu[1].Checked = false; Menu[9].SubMenu[1].Enabled = true; Menu[10] ={}; Menu[10].Text = "|"; Menu[10].ID = -1; Menu[10].Checked = false; Menu[10].Enabled = false; Menu[11] ={}; Menu[11].Text = "Tema 5"; Menu[11].ID = -1; Menu[11].Checked = false; Menu[11].Enabled = true; Menu[11].SubMenu = {}; Menu[11].SubMenu[1] = {}; Menu[11].SubMenu[1].Text = "Temayı Uygula"; Menu[11].SubMenu[1].IconID = 8; Menu[11].SubMenu[1].ID = 55; Menu[11].SubMenu[1].Checked = false; Menu[11].SubMenu[1].Enabled = true; Menu[12] ={}; Menu[12].Text = "|"; Menu[12].ID = -1; Menu[12].Checked = false; Menu[12].Enabled = false; Menu[13] ={}; Menu[13].Text = "Tema 6"; Menu[13].ID = -1; Menu[13].Checked = false; Menu[13].Enabled = true; Menu[13].SubMenu = {}; Menu[13].SubMenu[1] = {}; Menu[13].SubMenu[1].Text = "Temayı Uygula"; Menu[13].SubMenu[1].IconID = 8; Menu[13].SubMenu[1].ID = 66; Menu[13].SubMenu[1].Checked = false; Menu[13].SubMenu[1].Enabled = true; -- Yeni Menüyü Ayarla Application.SetMenu(Menu);[/spoiler] Edited August 14, 2013 by Dj Demir Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.