Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Ausführen, was im Menü steht, aber das zuvor ausgelesen wurd
91KEY8 - Sa 24.03.07 16:44
Titel: Ausführen, was im Menü steht, aber das zuvor ausgelesen wurd
Das Problem: Ich möchte, dass wenn man auf einen Menüpunkt klickt, der Text ausgeführt wird, der da steht. Ich lese den Text aus einer *.dat Datei aus.
Folgendes hab ich schon, aber damit wird immer nur der Letzte Punkt gestartet.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| var sl: TStringList; zeilennr: integer; mi2: string; begin begin sl:=TStringList.Create; try sl.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'mein_menü.dat'); for zeilennr:=0 to sl.Count-1 do begin mi2:=sl.Strings[zeilennr]; end; finally sl.free; end; end; ShellExecute(Application.Handle, 'open', PChar(mi2), Nil, Nil, SW_NORMAL) |
Wie kann ich es machen, dass das gestartet wird, was da steht.
So hab ich zuvor die Menüpunkte eingelesen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var sl: TStringList; zeilennr: integer; mi: TMenuItem; begin sl:=TStringList.Create; try sl.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'mein_menü.dat'); for zeilennr:=0 to sl.Count-1 do begin mi := NewItem(sl.Strings[zeilennr], 0, False, True, startemein, 0, ''); ools1.Add(mi); end; finally sl.free; end; end; |
mfg 91KEY8
Blawen - Sa 24.03.07 18:22
Titel: Re: Ausführen, was im Menü steht, aber das zuvor ausgelesen wurd
91KEY8 hat folgendes geschrieben: |
| Das Problem: Ich möchte, dass wenn man auf einen Menüpunkt klickt, der Text ausgeführt wird, der da steht. Ich lese den Text aus einer *.dat Datei aus. |
Irgendwie verstehe ich Deine Frage nicht ganz. So nebenbei wird es nicht reichen nur den Beschriftungstext einzulesen, irgendwie musst Du ja auch deklarieren, was genau ausgeführt werden soll.
91KEY8 - Sa 24.03.07 21:36
Titel: Re: Ausführen, was im Menü steht, aber das zuvor ausgelesen wurd
Blawen hat folgendes geschrieben: |
91KEY8 hat folgendes geschrieben: | | Das Problem: Ich möchte, dass wenn man auf einen Menüpunkt klickt, der Text ausgeführt wird, der da steht. Ich lese den Text aus einer *.dat Datei aus. | Irgendwie verstehe ich Deine Frage nicht ganz. So nebenbei wird es nicht reichen nur den Beschriftungstext einzulesen, irgendwie musst Du ja auch deklarieren, was genau ausgeführt werden soll. |
Wie deklariere ich das??
91KEY8 - Fr 30.03.07 21:10
Kann mir niemand helfen??
mfg 91KEY8
JayEff - Fr 30.03.07 23:27
Titel: Re: Ausführen, was im Menü steht, aber das zuvor ausgelesen wurd
Blawen hat folgendes geschrieben: |
91KEY8 hat folgendes geschrieben: | | Das Problem: Ich möchte, dass wenn man auf einen Menüpunkt klickt, der Text ausgeführt wird, der da steht. Ich lese den Text aus einer *.dat Datei aus. | Irgendwie verstehe ich Deine Frage nicht ganz. So nebenbei wird es nicht reichen nur den Beschriftungstext einzulesen, irgendwie musst Du ja auch deklarieren, was genau ausgeführt werden soll. |
Klar, wir helfen immer, aber ... HÄ? Du willst einen "Text ausführen" ... Soweit ich weiß, müssen Texte nicht Gassi gehn :lol:
Nein, Spaß bei Seite. Meinst du, du hast einen Menüpunkt der "Hallo" heißt, und der soll mit der Prozedur "Hallo;" verbunden werden, oder willst du .. äh .. Sorry, ich versteh wirklich kein bisschen, was du meinst... :(
raiguen - Sa 31.03.07 00:47
Och... ist doch nicht schwer zu erkennen, was 91KEY8 möchte ;) :
Beispiel: auf dem MenuItem steht als Caption (oder wie 91KEY8 es ausdrückt: Text) SOKOBAN.EXE; bei Klick auf dieses MEnuItem möchte er nun das Spiel SOKOBAN starten...
Blawen hat folgendes geschrieben: |
| ... irgendwie musst Du ja auch deklarieren, was genau ausgeführt werden soll. |
Das hat er ja auch gemacht mit dem Parameter
startemein:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| mi := NewItem(sl.Strings[zeilennr], 0, False, True, 0, startemein, 'mi'+IntToStr(Zeilennr); |
So, nun noch das OnClick-Ereignis:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure startemein(Sender: TObject); var MenuText: STring; begin MenuText := TMenuItem(Sender).Caption; ShellExecute(Application.Handle, 'open', PChar(MenuText), Nil, Nil, SW_NORMAL); end; |
So sollte es prinzipiell funktioneren...
Guts Nächtle
91KEY8 - So 01.04.07 18:48
raiguen hat folgendes geschrieben: |
Och... ist doch nicht schwer zu erkennen, was 91KEY8 möchte ;) :
Beispiel: auf dem MenuItem steht als Caption (oder wie 91KEY8 es ausdrückt: Text) SOKOBAN.EXE; bei Klick auf dieses MEnuItem möchte er nun das Spiel SOKOBAN starten...
Blawen hat folgendes geschrieben: | | ... irgendwie musst Du ja auch deklarieren, was genau ausgeführt werden soll. |
Das hat er ja auch gemacht mit dem Parameter startemein:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| mi := NewItem(sl.Strings[zeilennr], 0, False, True, 0, startemein, 'mi'+IntToStr(Zeilennr); |
So, nun noch das OnClick-Ereignis:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure startemein(Sender: TObject); var MenuText: STring; begin MenuText := TMenuItem(Sender).Caption; ShellExecute(Application.Handle, 'open', PChar(MenuText), Nil, Nil, SW_NORMAL); end; |
So sollte es prinzipiell funktioneren...
Guts Nächtle |
Vielen Dank raiguen!
mfg 91KEY8
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!