AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi In Konsole angeklickten Menüpunkt ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

In Konsole angeklickten Menüpunkt ermitteln

Ein Thema von implementation · begonnen am 6. Sep 2009 · letzter Beitrag vom 7. Sep 2009
 
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#1

In Konsole angeklickten Menüpunkt ermitteln

  Alt 6. Sep 2009, 13:52
Mein Programm schreibt in ein Konsolenfenster ein Menü, etwa in dem Stil:
Code:
Alt F1 File F2 Edit F3 Help F4 Info
Mit Alt+F1, Alt+F2, Alt+F3 und Alt+F4 kann ich den jeweiligen Punkt ansprechen.
Das funktioniert auch problemlos.
Nun möchte ich allerdings auch auf das Anklicken des Punkts reagieren.
Also fange ich in der Konsole das Mausevent ab und frage ab, ob in die erste Zeile geklickt wurde.
In dem Fall wird ProcessMenuClick aufgerufen:
Delphi-Quellcode:
procedure TNWLGUICon.ProcessMenuClick(Rec:MOUSE_EVENT_RECORD);
var m: TNWLGUICMenu; i: Byte;
begin
   m := Menu;
   i := 1;
   AppMan.Console.Cursor.Move(0,2);
   while (Rec.dwMousePosition.X > m.PaintInfo.Left) and (m<>nil) do begin
      m := m.NextMenu;
      i += 1;
      if m=nil then WriteLn('nil');
   end;
   AppMan.Console.Cursor.Move(0,1);
   AppMan.Console.InOut.Space := Menues[i-2].PaintInfo.Left;
   AppMan.Console.InOut.Ansi := Menues[i-2].Caption;
end;
TNWLGUICMenu.PaintInfo.Left enthält die Position des Menüpunkts von Links.
Menu ist eine Eigenschaft von TNWLGUICon vom Typ TNWLGUICMenu und stellt die gesamte Menüstruktur nach.

Den ersten Menüpunkt bekommt man über Menu,
den zweiten über Menu.NextMenu,
den dritten über Menu.NextMenu.NextMenu,
den vierten über Menu.NextMenu.NextMenu.NextMenu
usw.

Weiterhin gibt es über die Eigenschaft Menues die Möglichkeit einen Menüpunkt über den Index zu bekommen:
den ersten über Menues[0] (=Menu)
den zweiten über Menues[1] (=Menu.NextMenu)
den dritten über Menues[2] (=Menu.NextMenu.NextMenu)
usw.

Das Problem ist folgendes:
Wenn ich den letzten Menüpunkt anklicke, gibt es eine AccessViolation.

Hat jemand eine Idee, woher die kommen könnte und wie ich die umgehen kann?

[EDIT]Screenshot hinzugefügt[/EDIT]
Angehängte Grafiken
Dateityp: jpg fenster_104.jpg (24,9 KB, 22x aufgerufen)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz