Hallo, allerseits!
Danke wie verrückt für Eure schnelle Hilfe.
sniper_w schreibt, dass es so hier funktioniert:
[
ot]
for i:=0 to Menu.Items.Count-1 do
for j:=0 to Menu.Items[i].Count-1 do
LBox.Items.Add(Menu.Items[i].Items[j].Caption);
[/
ot]
Perfekt, funktioniert auch, Danke
mr47 schreibt:
[
ot]
Herzlich willkommen in der
DP! Very Happy Benutz bitte die den Code-Tag, damit der Quellcode von dir leserlicher wird Exclamation
[/
ot]
Ok, werde ich beherzigen. Habe bei obigem Quelltext in dieser Antwort das Tag gleich mal verwendet, um zu sehen, ob es wie gewünscht funktioniert.
urs.liska schreibt:
[
ot]
Damit existiert das Objekt Menu.Items[0].Items[0] (nämlich "Datei->Neu").
Das Objekt Menu.Items[1] existiert aber noch nicht, deshalb wird bei Deinem Versuch, mit Menu.Items[1].Add(Oeffnen) auf das Objekt zuzugreifen, eine
Exception ausgelöst.
Der Abschnitt müsste also (wie gesagt, wenn ich es richtig sehe) so aussehen:
Quellcode: markieren
Menu.Items.Add(Datei);
Menu.Items[0].Add(Neu);
Menu.Items[0].Add(Oeffnen); /etc.
[/
ot]
Du hast recht, das war der Grund, warum ich keine weiteren Menüpunkte einfügen konnte. Zu dem anderen Problem hat mir sniper_w bereits gehlfen. Sein Tipp ist hier der richtige.
roderich schreibt:
[
ot]
für mehrsprachige Menues müßtest Du aber weder die MenuItems zur Laufzeit erzeugen noch ResourceStrings verwenden.
-> Beim Umschalten der Sprache kannst du auch einfach nur die Captions ändern
[/
ot]
Gut und schön, aber wie ordne ich dann den Spracheintrag der richtigen Caption zu? Von Hand ist es klar, aber um die Captions spracabhängig aus einer Datei zu lesen, muss ich zur Laufzeit auf die Menüeinträge zugreifen können. Und durch meine Laufzeitmenüs in meinem Programm, weiß ich nun, wie ich die Captions dann erreiche.
[
ot]
-> Den Sinn von ResourceStrings habe ich noch nie verstanden. Wir verwenden
Ascii-Dateien mit den Spracheinträgen, die an die Tags der Komponenten gekoppelt sind. Der riesige Vorteil ist der, daß man Sprachdateien einfach mit einem Texteditor ändern kann, ohne das Projekt neu kompilieren zu müssen.
[/
ot]
[
ot]
-> Den Sinn von ResourceStrings....
[/
ot]
Ich nehme an, das man damit verschiedene Stringkonstanten nach folgendem Muster anlegt:
[
ot]
ResourceString
sDatei = 'Datei';
sFile = 'File';
............
sBearbeiten = 'Bearbeiten';
sEdit = 'Edit';
............
type TLanguage = (english, german, french, .... );
begin
case Language of
english: Menu.Items[0].Caption := sFile;
german: Menu.Items[0].Caption := sDatei;
french: ...;
end;
end;
[/
ot]
Sprachdatei verwenden, ist natürlich auch ein Vorschlag. Werde das testen.
Ich danke Euch noch einmal allen für Eure unkomplizierte schnelle Hilfe und
grüße Euch
DelphiSourcer