Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Tastenkombinationen/Shortcuts?!? (http://www.expert-advisor.com/forum/showthread.php?t=5319)

Trader6666 29.11.16 09:55

Tastenkombinationen/Shortcuts?!?
 
Hi Leute,


leider findet man zu diesem Thema sehr sehr wenig im Netz.

Kann mir einer vllt kurz nen Code zeigen wie ich ne Tastenkombi wie z.B
shift+A generieren kann???!???

einzelnde Buchstaben bekomm ich hin

Code:


#define HOTKEY_O = 79;//natürlich ganz oben deklariert


if(id==CHARTEVENT_KEYDOWN && lparam == 79)

aber ich find nirgends ne Option für Tastenkombinationen......

Kronenchakra 29.11.16 21:34

Wenn du Keycodes suchst für OnChartevent() hilft sicher VirtualKeys.mqh weiter.
Findest du sicher im Netz.
Falls du Tasten simulieren möchtest geht das über WINAPI

Trader6666 01.12.16 10:06

Hi Kronenchakra,

danke für die Info, da ich kein Programmierer bin, weiß ich ned wie man mit WINAPI arbeitet,hatte noch nie damit zu tun. Lerne viel durch Learning by Doing


ich hab aber ne einfache Form im Netz gefunden :

Code:


bool shift_pressed_B  = false;
      if (id == CHARTEVENT_KEYDOWN)
      if (shift_pressed_B == false && lparam == 16)
          shift_pressed_B  =  true;
      if (shift_pressed_B == true &&lparam == 66)   
     
      { shift_pressed_B = false; }

nicht so elegant aber Sie erfüllt Ihren zweck:)

Kronenchakra 01.12.16 10:52

Dann ist ja alles bestens :)

Trader6666 09.12.16 19:18

Hey Kronenchakra,

leider is mein weg leider nicht förderlich, denn wenn lparam mit der Mausposition im Chart übereinstimmt wird auch dann die Tastenkombination ausgeführt, was ja eig nicht sein sollte.


Dachte ich find was über die VirtualKeys.mqh aber leider fehlanzeige.

Kannst du mir einen kleinen Tipp geben wie ich das hin bekomme?!
eventuell Tutorials oder ein kleines Codebeispiel würd mir schon weiterhelfen.

LG Trader

Kronenchakra 09.12.16 23:57

Code:

//+------------------------------------------------------------------+
//|                                                      KeyTest.mq5 |
//+------------------------------------------------------------------+

#property indicator_chart_window
#property indicator_plots 0

int OnInit()
{
  return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
  return(rates_total);
}

//mogliche Chartevents
//CHARTEVENT_KEYDOWN — event of a keystroke, when the chart window is focused;
//CHARTEVENT_MOUSE_MOVE — mouse move events and mouse click events (if CHART_EVENT_MOUSE_MOVE=true is set for the chart);
//CHARTEVENT_OBJECT_CREATE — event of graphical object creation (if CHART_EVENT_OBJECT_CREATE=true is set for the chart);
//CHARTEVENT_OBJECT_CHANGE — event of change of an object property via the properties dialog;
//CHARTEVENT_OBJECT_DELETE — event of graphical object deletion (if CHART_EVENT_OBJECT_DELETE=true is set for the chart);
//CHARTEVENT_CLICK — event of a mouse click on the chart;
//CHARTEVENT_OBJECT_CLICK — event of a mouse click in a graphical object belonging to the chart;
//CHARTEVENT_OBJECT_DRAG — event of a graphical object move using the mouse;
//CHARTEVENT_OBJECT_ENDEDIT — event of the finished text editing in the entry box of the LabelEdit graphical object;
//CHARTEVENT_CHART_CHANGE  — event of chart changes;
//CHARTEVENT_CUSTOM+n — ID of the user event, where n is in the range from 0 to 65535.
//CHARTEVENT_CUSTOM_LAST — the last acceptable ID of a custom event (CHARTEVENT_CUSTOM +65535).

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
  if(id==CHARTEVENT_OBJECT_CLICK)
      {
        Print("Objectname: ",sparam," wurde angeclickt");
      }
   
  if(id==CHARTEVENT_CLICK)
      {
        Print("Auf den Chart geclickt");
      }
 
  if(id==CHARTEVENT_KEYDOWN)
      {
        Print(lparam);
        if(lparam==0x26) Print("VK_UP"); else
        if(lparam==0x28) Print("VK_DOWN"); else
        if(lparam==0x43) Print("VK_C"); else
        if(lparam==0x46) Print("VK_F"); else
        if(lparam==0x54) Print("VK_T"); else
        if(lparam==0x5A) Print("VK_Z"); else
        if(lparam==0x13) Print("VK_PAUSE");
      }
}

Kann man natürlich auch mit switch machen.
Hoffentlich kannst du's brauchen.

Grüße Otto

Trader6666 10.12.16 15:02

werd ich gleich mal versuchen danke schon mal für deine Mithilfe Otto!!!:):):)

Trader6666 10.12.16 22:13

hat leider nix gebracht, wie davor werden aktionen ausgeführt wenn der lparam-wert
mit einem Buchstabenwert matched.....

vom Ausschlußprinzip liegt es entweder an dieser Zeile oder ich hab einfach keine Ahnung vom richtigen proggen:o:confused:

Code:

      if (id == CHARTEVENT_KEYDOWN)
      if (shift_pressed_B == false && lparam == 0x10)//Shift wurde gedrückt
          shift_pressed_B  = true;

wenn ich 6 bereiche habe die ich alle mit Shift bedienen möchte
wie die untere hier
Code:

if (shift_pressed_B == true &&lparam == 0x42)
dann sind die Variablen die alle so beginnen" if( shift_pressed_...... "
ja auch automatisch true und werden bei einem match mit lparam ausgelößt


ich versuch mal alle variablen auf false zu setzten nach jeder Tastenkombi, wenns dann auch ned klappt ,dann brauch ich nen neuen logikaufbau .-.

Kronenchakra 11.12.16 03:34

Wenn du mit dem Code spielst den ich hier gepostet habe wirst du sehen, daß die Tastenanschläge der Reihe nach abgearbeitet werden.
Also nicht Ctrl+A gleichzeitig drücken, sondern zuerst Ctrl dann A. Detto mit shift.
Mit boolschen Variablen wie CtrlWasPressed arbeiten und die wieder bei einer anderen Taste auf false setzten.
Mit Alt geht nix, ebenso Leertast und Enter, Funktionstasten sind belegt

Viel Erfolg
Otto

Trader6666 13.12.16 16:59

Hey Otto,:)

ja das mit den Tastenschlägen war auch bei meinem Code so, Sparam gibt nen Wert wieder wenn man eine Taste länger hält, mit dem könnte man eventuell arbeiten, aber idR. kommt man da nicht hin weil man mit den fingern schneller ist, als der Wert zurück kommt vom MT4. Aber lag wirklich an den Codeschnipsel von mir , was auch völlig logisch ist -.- weil alle Tastenkombi´s ja dann frei geschaltet sind.

Danke für deine Hilfe/Interesse :)

LG Trader


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:35 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum