Jump to content

Program On Preload'ta Tek Koşul Okuyor


Dj Demir
 Share

Recommended Posts

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.

Link to comment
Share on other sites

Denemiştim olmamıştı.
Tavsiyeniz üzerine tekrardan denedim yine olmadı maalesef.

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by muratboy31
Link to comment
Share on other sites

Hayır MenuBar tamamen devre dışı oldu.

Tabi ki istediğim tamamen devre dışı olması değildi.

Link to comment
Share on other sites

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 by muratboy31
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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 by Dj Demir
Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...