Verschtelung: Eigenes Mainmenu Problem

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Verschtelung: Eigenes Mainmenu Problem

Beitrag von pluto »

Hallo,
seit einiger Zeit arbeite ich an einem eigenen Main Menu. Im Prinzip auch gar nicht weiter schwer nur jetzt kommt die Verschachtelung ins spiel. Also Menus mit unter Menus .
Mein ziel ist es so eine Struktur zu erzeugen:
Item1 Item2 Item3 Item4
Sub 1 -> u1
Sub 2 u2
Sub 3
Sub 4
Sub + Zahl gehören zu Item1 zu Sub 1 gehöhren u1 und u2.

das Problem ist nur wie mache ich das ?

Ich habe dafür erstmal eine einfach eigene Listbox geschrieben, die noch sehr einfach auf gebaut ist. Diese Listbox möchte ich für mein MainMenu verwenden. Also die Menu Leiste ist eine eigene Listbox nur die Anordnung ist anders.

Code: Alles auswählen

Tmylistbox = class;
 
  TArrangement = (AGVerti,AGHori);
  TmyListItem = class
    Caption:String;
    r:TRect;
    visible:Boolean;
 
    subitems:Tmylistbox;
  end;
so beim klicken wird folgendes gemacht:

Code: Alles auswählen

if typ = MS_Down then begin
        if index <> -1 then begin
          if ItemDownIndex > -1 then
          AddChangeItem(items[ItemDownIndex].r);
 
          ItemDownIndex:=index;
          AddChangeItem(items[ItemDownIndex].r);
 
          if items[ItemDownIndex].subitems <> NIL then begin
            items[ItemDownIndex].subitems.Visible:=True;
            items[ItemDownIndex].subitems.x:=items[ItemDownIndex].r.left;
            items[ItemDownIndex].subitems.y:=hp.y+5+items[ItemDownIndex].r.top;
 
            items[ItemDownIndex].subitems.onMouseEv:=onMouseEv;
 
 
            fRect.left:=items[ItemDownIndex].subitems.x;
            fRect.top:=items[ItemDownIndex].subitems.y;
            fRect.Right:=fRect.left+items[ItemDownIndex].subitems.hx;
            fRect.Bottom:=fRect.top+items[ItemDownIndex].subitems.hp.y+10;
 
 
            items[ItemDownIndex].subitems.AddChangeItem(fRect);
 
            items[ItemDownIndex].subitems.Draw(fcanvas);
 
 
//            items[ItemDownIndex].subitems.
//            items[ItemDownIndex].subitems.w:=
  //          items[ItemDownIndex].subitems.h:=
          end;
 
          Draw(fcanvas);
        end;
      end;
AddChangeItem fügt einer liste die gemacht Änderung hinzu. Damit ich nicht ständig das gesammte bild neu zeichnen muss.

Ich dachte jetzt irgenwie an Rekusion nur weiß ich nicht wie ich das am besten umsetzten könnte.

Ich hoffe ihr könnt mir weiter Helfen mit: Tipps, oder Vorschlägen zu diesem Problem.
Ich währe sehr Dankbar.

Ich habe schon überlegt eine art Parent einzuestezten also eine Variable die den Vorgänger speichert... und einen Next eine Variable die den nachfolger speichert nur weiß ich noch nicht wirklich wie ich das anstellen könnte/kann :(

PS:
Bitte nur antworten wenn es zu Klärung des Problems beiträgt, sonst bringt das wirklich nichts.
Danke für eurer Verständnis :D
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich habe jetzt mal weiter gemacht leider ohne erfolg.
Mein ziel ist es das Menu zu ermitteln welches ich angeklickt habe.
dazu habe ich folgende funktion geschrieben:

Code: Alles auswählen

function TMylistbox.GetRItemIndex(mx,my:Integer;var myListbox:TMyListBox):Integer;
var
  i:Integer;
begin
//  if (myListbox <> NIL) and ((myListbox.Arrangement = AGHori) and (PtInRect(rect(myListbox.x+10,myListbox.y,myListbox.x+10+myListbox.hx,myListbox.y+myListbox.hp.Y),point(mx,my)))) or
//     (myListbox <> NIL) and ((myListbox.Arrangement = AGVerti) and (PtInRect(rect(myListbox.x,myListbox.y+4,myListbox.x+myListbox.hx,y+myListbox.hp.y),point(mx,my))))
//  then begin
          writeln('OKololol');
 
//    writeln();
//  end
//  else begin
    if mylistbox <> NIL then begin
 
      for i:=0 to High(mylistbox.items) do begin
        if (mylistbox.items[i].subitems <> NIL) and (mylistbox.items[i].subitems.Visible = True) then begin
          GetRitemIndex(mx,my,mylistbox.items[i].subitems);
        end;
      end;
    end;
  //end;
 
end;
der auskomentierte teil diente dazu, um den bereich festzustellen, also eine grobe Ermittlung. erst dann wollte ich alle Items durch gehen.
Diese Funktion sollte irgendwan im var paramenter die richtige list box haben.
hier wird sie genutzt:

Code: Alles auswählen

procedure TMyListBox.MouseEv(typ,mx,my: Integer; shift: TShiftState);
var
  index:Integer;
  fRect:TRect;
  temp:TMyListBox;
begin
//  WriteRect(rect(x,y+4,hx,y+hy));
 // if Arrangement = AGHori then begin
 
  index:=GetItemIndexXY(mx,my);
 
    if ((Arrangement = AGHori) and (PtInRect(rect(x+10,y,x+10+hx,y+hp.Y),point(mx,my)))) or
       ((Arrangement = AGVerti) and (PtInRect(rect(x,y+5,x+hx,y+hp.y),point(mx,my))))
 
    then begin
    //  if index > -1 then begin
  //      WriteRect(items[index].r);
//        write(items[index].Caption);
      //end;
    //  else
  //      writeln('Index:',index);
 
      if typ = MS_Move then begin
        oldMoveIndex:=ItemMoveIndex;
        if ItemMoveIndex > -1 then
        AddChangeItem(items[oldMoveIndex].r);
        if (oldMoveIndex <> index) and (index <> -1) then begin
          ItemMoveIndex:=index;
          AddChangeItem(items[ItemMoveIndex].r);
 
          Draw(fcanvas);
        end;
      end;
 
      if typ = MS_Down then begin
        if index <> -1 then begin
          if ItemDownIndex > -1 then
          AddChangeItem(items[ItemDownIndex].r);
 
          ItemDownIndex:=index;
          AddChangeItem(items[ItemDownIndex].r);
 
          if items[ItemDownIndex].subitems <> NIL then begin
            items[ItemDownIndex].subitems.Visible:=True;
            items[ItemDownIndex].subitems.x:=items[ItemDownIndex].r.left;
            items[ItemDownIndex].subitems.y:=hp.y+5+items[ItemDownIndex].r.top;
 
            items[ItemDownIndex].subitems.w:=items[ItemDownIndex].subitems.x+items[ItemDownIndex].subitems.hx;
            items[ItemDownIndex].subitems.h:=items[ItemDownIndex].subitems.y+items[ItemDownIndex].subitems.hp.y+10;
 
            items[ItemDownIndex].subitems.onMouseEv:=onMouseEv;
 
            temp:=items[ItemDownIndex].subitems;
 
            GetRItemIndex(mx,my,temp);
 
            if temp <> NIL then
              Writeln('Test X:',temp.x, '|', 'Y:',Temp.y,'W:',Temp.w,'H:',temp.h)
            else
              writeln('else');
 
            fRect.left:=items[ItemDownIndex].subitems.x;
            fRect.top:=items[ItemDownIndex].subitems.y;
            fRect.Right:=fRect.left+items[ItemDownIndex].subitems.hx;
            fRect.Bottom:=fRect.top+items[ItemDownIndex].subitems.hp.y+10;
 
 
            items[ItemDownIndex].subitems.AddChangeItem(fRect);
 
            items[ItemDownIndex].subitems.Draw(fcanvas);
 
 
//            items[ItemDownIndex].subitems.
//            items[ItemDownIndex].subitems.w:=
  //          items[ItemDownIndex].subitems.h:=
          end;
 
          Draw(fcanvas);
        end;
      end;
 
    end;
  //end;
 
end;
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich hoffe ihr versteht das: das ich die frage noch einmal hier gestellt habe:
http://www.delphipraxis.net/post698929.html#698929" onclick="window.open(this.href);return false;

Evlt. habe ich dort mehr glück mit dieser Frage... als hier... wer weiß.... Habe ich evlt. die Frage nicht genau beschrieben ?
MFG
Michael Springwald

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

Was hast du denn gegen das Main-Menü von Lazarus?

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

im Prinzip gar nichts es geht mir nur darum, ob ich es hin bekomme oder nicht.

und zum anderen: sobald ich ein Pagecontrol verwende gehen leider die Menu Tasten nicht mehr also die Short Keys und für spiele finde ich das MainMenu von Lazarus oder Delphi doch recht unangebracht oder meint ihr nicht auch ?

Es geht mir nicht darum es besser zu machen, mir geht es nur darum es überhaupt zu machen und vor allem um die Frage: wie geht sowas ?
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Welches Spiel hat denn nen Mainmenu, wo das dann stört? Spätestens bei Gl bzw. DX zeichnet mans dann halt gleich selber.

Ansonsten denk ich, es wäre besser, das Problem mit dem Pagecontrol zu beheben, weil ich persönlich das so mehr für Energieverschwenung halte, wenn es 'nur' darum geht, ein eigenes zu machen, was aber im Grunde nichts weiter darstellt. Eventuell solltest du dann gleich auf das LazarusMainmenu zurückgreifen und dir davon was ableiten.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ihr versteht es immer noch nicht um was es mir eigentlich geht.
Es ist für mich leichter ein Problem zu umgehen indem ich es einfach neu schreibe, weil es ja doch nicht übernommen wird.
Aber darum geht es mir auch nicht.
Mir geht es alleine um die Frage wie könnte sowas aussehen, wie wird sowas gemacht. Das ist der Aussgangspunkt.

PS:
ich kenne mind. ein Spiel wo die Entwickler ein komplett eigens Main Menu erstellt haben. Das spiel gehörht zu einer Fernsehe Sendundg. Genau weiß ich nicht mehr wie es hieß. Dort haben sie auf jedenfall ihr eigenes Animirtes Menu erstellt. Es gibt also Spiele die ihre eigenen GUI Komponenten verwenden.

edit1: und es dürfte auch schneller gehen, als in denn Qullecode die Nadel im Heuhaufen zu suchen.

ich wusste genau das solche antworten kommen werden darum auch der lezte absatzt im meinem ersten Beitrag dieser Frage :evil: :evil:
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Es ist für mich leichter ein Problem zu umgehen indem ich es einfach neu schreibe, weil es ja doch nicht übernommen wird.

Das kannst du nicht so pauschal sagen, wenn du den Bug erfolgreich behebst, und nen patch sendest, wird der auch übernohmen, wenn der Fehler damit wirklich behoben ist. Der Vorteil ist aber, das die Mühe so allen, die Lazarus nutzen zu gute kommt, wenn du dein eigens machst, merken das nur ein paar Leute.

Der andere Grund bezüglich des Lerneffektes ist natürlich nicht von der Hand zu weisen.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Genau und um das geht es mir eigentlich weil ich mich in Fremde Quellcode auch nicht so recht finde(auf jedenfalls nicht so einfach), aber die Idee ist ja auch nicht schlecht, daran hatte ich auch schon gedacht.... Ich weiß halt nur nicht ob es auf das TPageControl beschrängt es oder ob es allgemeines Problem ist !

weil bei einem Leeren Form gehen die ShortKeys
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Keine Angst ihr müsst mir nicht mehr weiter helfen. Habe alleine eine Lösung gefunden.
ich bin jetzt in der Lage folgende Datei zu Laden:
Item0|Informationen zum aussehen
item0\test1|Informationen zum aussehen
item0\test2|Informationen zum aussehen
item0\test3|Informationen zum aussehen

item1|Informationen zum aussehen
item1\test1a|Informationen zum aussehen
item1\test2b|Informationen zum aussehen
item1\test3c|Informationen zum aussehen

item0\test2\Text1a0|Informationen zum aussehen
item0\test2\Text2a1|Informationen zum aussehen
item0\test2\Text3a2|Informationen zum aussehen

item0\test2\Text2a1\Menu00A|Informationen zum aussehen
item0\test2\Text2a1\Menu00B|Informationen zum aussehen
item0\test2\Text2a1\Menu00C|Informationen zum aussehen
item0\test2\Text2a1\Menu00D|Informationen zum aussehen

item0\test2\Text2a1\Menu00B\Hallo1|Informationen zum aussehen
item0\test2\Text2a1\Menu00B\Hallo2|Informationen zum aussehen
item0\test2\Text2a1\Menu00B\Hallo3|Informationen zum aussehen
item0\test2\Text2a1\Menu00B\Hallo4|Informationen zum aussehen

item0\test2\Text2a1\Menu00A\THallo1|Informationen zum aussehen
item0\test2\Text2a1\Menu00A\THallo2|Informationen zum aussehen
item0\test2\Text2a1\Menu00A\THallo3|Informationen zum aussehen
item0\test2\Text2a1\Menu00A\THallo4|Informationen zum aussehen

item1\test3c\GUA1|Informationen zum aussehen
item1\test3c\GUB1|Informationen zum aussehen
item1\test3c\GUC1|Informationen zum aussehen
item1\test3c\GUD1|Informationen zum aussehen

Item2|
Item3|
Item4|
Item5|
und das mit den Verschachtlung klappt auch ganz gut. Es ist etwas anders als ich es mir vor gestellt hatte. Aber besser als gar nichts.

Ich finde es eigentlich keine schlechte Idee alles was die Menustrucktur betrieft einfach auszulagern so bleibt der Qullecode etwas kleiner.... und sauberer oder was meint ihr ?
ich plane diese Scrip Sprache noch weiter aus zu bauen.. Aber erst später.
Vielen Dank für eure Tolle Hilfe, wie immer.

Ich glaube ich brauche gar nicht zu fragen, ob ihr mir noch alternativen vorschlagen könnt. Und sie genauerer zu erläutern, oder

edit1:
im Moment ist das einzigte Problem noch: das die Captions nur einmal vorkommen dürfen.
das wollte ich später per ID lösen die nur einmal vorkommen darf. und dieser ID kann dann ein Caption zu geordnet werden und nach weiter sachen.

z.b. für mehr sprachige Menus währe das denkbar....
das ist auf jeden Fall ein weiters ziel.
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

pluto hat geschrieben:Ich glaube ich brauche gar nicht zu fragen, ob ihr mir noch alternativen vorschlagen könnt. Und sie genauerer zu erläutern, oder

edit1:
im Moment ist das einzigte Problem noch: das die Captions nur einmal vorkommen dürfen.
das wollte ich später per ID lösen die nur einmal vorkommen darf. und dieser ID kann dann ein Caption zu geordnet werden und nach weiter sachen.
Ich nehme mal an, das die Caption das Fette sein soll:
item0\test1|Informationen zum aussehen

Aber wieso niemst du die Caption, die ja nur beim Endknoten benötigt wird, mit in die Struktur?
Jedes Item hat ja zwangsläufig einen eindeutigen namen, muss es ja auch, zur ansprache. Und die Caption an sich würde ich da nicht mit eingliedern, sondern bei den Informationen zum aussehen angeben.

Code: Alles auswählen

Item0 <<Name|>>Caption 'x' + Informationen zum aussehen
item0\test1 <<Name|>>Caption 'x' + sonstige informationen zum aussehen
usw.
Also die Gliederung nur nach Komponentennamen und denn Rest dann abgetrennt. Somit kannst du x-mal die selbe Caption speichern.

Ich denke, die Namenslösung ist der Id vorzuziehen, weil ich persönlich es auch für einfacher erachte, die Komponenten wie gewohnt, über den namen anzusprechen, anstatt sich erstmal die Ids klar zu machen.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich verstehe leider noch nicht genau wie du das meinst.
das Problem mit den Captions habe ich jetzt behoben
id0 = Test1
id001 = Hallo1
id002 = Hallo2
id003 = Hallo3
id1 = Test2
id011 = Hallo1
id012 = Hallo2
id013 = Hallo3
id01a = Tanbaum
id01b = Baum
id01c = Haus
id01d = Blume
id01e = Dach
id3 = Test3
id4 = Test4
id5 = Test5
id033 = 608246
id034 = Dies ist ein test
id035 = Hallo,
id036 = Auto
}
id0|Informationen zum aussehen
id0\id001|Informationen zum aussehen
id0\id002|Informationen zum aussehen
id0\id003|Informationen zum aussehen

id0\id003\id033|Informationen zum aussehen
id0\id003\id034|Informationen zum aussehen
id0\id003\id035|Informationen zum aussehen
id0\id003\id036|Informationen zum aussehen


id1|Informationen zum aussehen
id1\id011|Informationen zum aussehen
id1\id012|Informationen zum aussehen
id1\id013|Informationen zum aussehen

id0\id002\id01a|Informationen zum aussehen
id0\id002\id01b|Informationen zum aussehen
id0\id002\id01c|Informationen zum aussehen
id0\id002\id01d|Informationen zum aussehen
id0\id002\id01e|Informationen zum aussehen

id3|
id4|
id5|
allerdings habe ich jetzt gemerkt wenn ich mehrmals auf den gleichen item klicke(hinter ein andrer) dauert es irgendwann einfach Länger bzw. es wird langsamer.
ich vermute irgendwo ein Speicher leck. mal sehen ob ich das finde.

Bei jedem klicken auf ein Unter Menu wird die Datei an eine bestimmten stelle die wird gesucht, das entsrpechende unter Menu geladen. wenn ich auf ein anderes Menu klicke wird einfach der Eintrag aus er Liste mit den Listboxen gelöscht. bis high.

sicher währe das toll wenn die Menu Items wie gewohnt angesprochen werden können, aber da habe ich leider keine Vorstellung wie ich das hinbekommen könnte.

evlt. währe ein weiter versuch an der mit einem XML Format.

Edit1:
Ich denke, die Namenslösung ist der Id vorzuziehen, weil ich persönlich es auch für einfacher erachte, die Komponenten wie gewohnt, über den namen anzusprechen, anstatt sich erstmal die Ids klar zu machen.

jetzt weiß ich wie du das gemeint hast... ja das wollte ich auch hinbekommen und zwar über eine Funktion beim klicken auf ein Menu Item soll ein ereignis aus gelöst werden wo eine ID übergeben wird.

Ich sehe gerade: wenn ich ein Caption über gebe, wird es Probleme mit mehr sprachige Menus geben. Wenn ich eine ID vergebe kann ich so viele Sprachen haben wie ich möchte.
Hast du da auch eine Idee, wenn ich den das ITem per Caption ansprechen ?
Wie währes mit einem Alias ?
die ID ist bei mir ein String also kann dort auch ein alias ein getragen werden z.b.
Tools = Tools
Editor = Text Editor
Taschenrechener = Taschenrechner
tolls\editor|
tools\taschenrechner

späer soll es noch ein Editor geben.
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

pluto hat geschrieben:jetzt weiß ich wie du das gemeint hast... ja das wollte ich auch hinbekommen und zwar über eine Funktion beim klicken auf ein Menu Item soll ein ereignis aus gelöst werden wo eine ID übergeben wird.

Ich sehe gerade: wenn ich ein Caption über gebe, wird es Probleme mit mehr sprachige Menus geben. Wenn ich eine ID vergebe kann ich so viele Sprachen haben wie ich möchte.
Hast du da auch eine Idee, wenn ich den das ITem per Caption ansprechen ?
Wie währes mit einem Alias ?
die ID ist bei mir ein String also kann dort auch ein alias ein getragen werden z.b.
Tools = Tools
Editor = Text Editor
Taschenrechener = Taschenrechner
tolls\editor|
tools\taschenrechner
Ich bin mir nicht sicher, ob wir uns richtig verstehen.

Was denn bitte für ne ID, und wozu soll die Gut sein?
Der Name ist eindeutig für jedes item, also:
Name = Id
wie die Id dabei aussieht sollte klar sein, so wie jeder andere Komponentenname auch, also nen string.

Und dann nen Wert für caption, der nur angibt, was auf dem Eintrag drauf steht.

Foldlich übergibtst du immer den Namen. Wenn du den namen übergibtst, und beispielsweise ne Funktion aufrufen willst, kannst du denn ja wieder über den Sender den Namen des entsprechenden items ermitteln und das dann weiterverarbeiten.
bzspw.:

Code: Alles auswählen

procedure TForm.KlickAufPlutosMenü(Sender: TPlutosItem);
begin
    ShowMessage(TPlutosItem(Sender).Name + 'wurde geklickt');
//...und anschließend kannst du dann entweder untermenü laden, oder wenns der Endknoten ist, das ereignis an das entsprechende weiterleiten:
//Sinngemäß:
  if GetSubMenüFromMenüConfigFile then
    ShowSubmenü(TPlutosItem(Sender).Name)
  else
    TPlutosItem(Sender).OnClick...;

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

also die ID habe ich eingeführt die hat mehrer vorteile:
1. ich Captions gleich bennen so oft ich möchte.
2. ich kann das Mainmenu in mehreren Sprachen basteln.

und die ID darf nur einmal vorkommen.

von dahrer kann ich dir nichts ganz folgen.
wir können auch sagen die ID ist der Name und nicht der Caption und fertig.

Wenn das leichter ist.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Was Monta meint ist das es nicht wirklich sinn macht in einem Untermenür 2 Einträge mit dem selben namen zu haben also ist deine ID völlig überflüssig. Oder hast du schon mal in einem Menü 2 gleiche Namen gebraucht ?!
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten