|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Ich würde die ganzen Kontrolltasten lieber nicht für sowas nehmen, da habe ich schon böse Überraschungen erlebt, weil die dann in MT schon für andere Aktionen belegt waren - das nur zur Info voraus.
(Die Tasten Notierung stehen in VirtualKeys.mqh von MT5 oder in der winuser.h von WIN, google hilft da.) Die Tasten kannst Du auf 2 Weisen festlegen 1. mit #define als long Variable (#define Shift_Key 0x10) 2. mit ner externen Variable Ich bevorzuge Buchstaben als externe Variable, weil man sich das erstens leichter merken kann und zweitens das dann ändern kann, falls man mal mit irgendwas anderem in Konflikt kommt. Hier ein Beispiel wie ich für meine Indikatoren einen Button benutze, der 3 Funktionen hat: Indikator anzeigen/verstecken und Einstellungen speichern. Code:
// ======================= UserInputs extern string LetterShow = "S"; // Letter show (S) extern string LetterHide = "H"; // Letter hide (H) // ======================= Button #define ButtonText "Sic2" //TextOnButton #define ButtonName "STRATic2" //NameOfButtonObject static int DoHiding = -1; // 1=yes -1=no static bool AllowSave = 0; // 1=yes 0=no // ==================================== void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam ) { // ============================== letter was pressed if(id==CHARTEVENT_KEYDOWN) { if(lparam==StringGetCharacter(LETTERSHOW,0)) { DoHiding=-1; } //NoHiding if(lparam==StringGetCharacter(LETTERHIDE,0)) { DoHiding= 1; } //DoHide } // ============================== button was pressed if(id==CHARTEVENT_OBJECT_CLICK) { if(sparam==ButtonName) { if (DoHiding==-1) //NoHiding { if(ShowIndi()) //ExecuteShowActions { ChangeButton(0); //IsPressed->ChangeToUnpressed DoHiding=-1; //KeepNoHiding AllowSave=true; //AllowSaving } } else if(DoHiding== 1) //DoHide { if(HideIndi()) //ExecuteHideActions { ChangeButton(1); //IsNotPressed->ToPressed DoHiding= 1; //KeepHiding AllowSave=false; //NoSavingWhenHiding } } if( AllowSave && SaveConfigToFile() ) { ReInit(); } } else //TheButtonOfAnotherIndiWasPressed { if( ObjectGetInteger(0,ButtonName,OBJPROP_STATE)==false ) //OurButtonUnpressed { DoHiding=-1; AllowSave=true; } //AssumeNoHiding else { DoHiding= 1; AllowSave=false; } //OurButtonPressed } } } // ==================================== AVT |
Lesezeichen |
|
|