Verschtelung: Eigenes Mainmenu Problem

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
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 könnte ja ein Gobales Verzeichnis geben. Wo alle diese Dateien rein kommen.
Am Anfang könnte ein Kurzte Beschreibung und Name der Sprache stehen. Evlt. sogar mit ICON bzw. Flagge. und der User kann dann per Menu eine Sprache auswählen.

Ja, genau, ist meiner Meinugn nach, für mehrsprachigkeit die beste Lösung, die dateien extra zu halten. So ist es beispielsweise auch möglich, das Programm nur mit einer Sprache auszuliefern, indem man einfach die richtigen Sprachdatein ins Verzeichnis schiebt. ;)

m3u ist ja quasi auch ne Art Standard geworden.


P.S.: Ich sehe gerade, ich hab Christian etwas umgewandelt ;)

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

Beitrag von pluto »

Gut dann werde ich das machen, das vereinfacht die sache sehr.

Aber ich stelle mir gerade noch eine andere Frage. Ich weiß im Moment einfach nicht wie ich z.b. für jedes item ein eigens Ereignis Defninieren könnte so wie im Orginal.

Ich hatte/habe es bei mir anderes geplant: es gibt ein Ereignis onClick und für alle ITMS das gleiche, das Ereignis wird mit einer ID und den entsprechenden Item auf gerufen so kann geprüft werden welches Ereignis das onklick oder nadere Ereignise ausgelöst hat.

Ich habe heute gesehen in Java wird das genau so gemacht.
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 »

Eine zentrale Liste aller OnClick ereignisse.
Intern rufen alle Items ein Ereignis auf, dieses Ereignis empfängt den entsprechenden Sender, und leitet das OnClick dann an das Ereignis weiter, welches für diesen Sender definiert ist.

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

Beitrag von pluto »

Die Idee ist nicht schlecht, Aber wie weise ich dann jedem Item ein Ereignis zu ?

im Moment wenn ich das so mache in diesem Text Format dürfte es Probleme geben.

jedes Item könnte ja ein Ereignis haben, aber das bringt mir im Moment nicht viel, weil ich nicht wüsste wo ich es zuweisen kann.
ich kann ja schlecht einen String zu weisen oder ?
In der Delphi Hilfe stand mal als beispiel zwei Funktionen die stringToComponent oder so Ähnlich konnten.

Aber leider habe ich keine Delphi Hilfe mehr....
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 »

Über nen Typcast kannst du doch strings der Kopmponente zuweisen, steht eine Seite weiter vorne oder so

mal nen Beispiel von mir, ich geb allen ComboBoxen das gleiche ereignis:

Code: Alles auswählen

procedure TForm_DSErstellen.CBChange(Sender: TObject);
begin
  if Form_Datenmodul.IsTuple(TComboBox(Sender).Text, TComboBox(Sender).Tag) then
    TComboBox(Sender).Color := clWhite
  else
    TComboBox(Sender).Color := clYellow;
end;

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

Beitrag von pluto »

ja. Ich glaube du hast mich noch nicht richtig verstanden, also:
ich weiß das es zwei Möglichkeiten gibt.
1: Wenn auf ein Item geklickt wird, wird ein und das selbe Ereignis aufgerufen, welches bei TmyMainmenu.onClick drin steht. Dort wird anhand das übergeben Parameters. Geprüft welches Item das Ereignis ausgelöst hat.

Das hat den Vorteil das der Quellcode etwas kleiner werden dürfte. Ich habe mal gezählt für ein Ereignis bei einem normalen TMainmenu brauche ich 5 Zeilen bei mir währen es erheblich weniger. und selten besteht ja ein Tmainmenu nur aus einem Item.

2. ich versuche es so zu machen wie im Original. Dort hätte ich nur Probleme mit der Zuweisung. in der Text Datei steht drin z.b. das das Item Öffnen das Ereignis onOpenItem auf gerufen werden soll.

Wie aber kann ich das zuweisen?
ich habe im Moment ein Record:
TTmyitem = record
name, caption, hint:String
onClick:TOnMenuitemClick
end;

jedes Item hat die gleichen Eigenschaften.
wie aber kann ich onClick mitteieln das es für OpenItem das Ereignis onOpenItem verwenden soll und zwar nur für den Menu punkt öffnen.
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 »

Zuweisen:

Code: Alles auswählen

OpenItem.OnClick := @onOpenItem

:?:
meinst du das?

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

Beitrag von pluto »

ja so ungefähr aber das ist mir klar, nur halt das onOpenitem aus einer Datei gelesen werden muss und nur als String vorhanden ist und nicht als Pointer und wie auch immer.
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 »

Christina meinte die tatsache, das viele frmede Programme (wie Winamp, oder Christians Audio-X (kann es das?)) die Wiedergabelisten vom MS-Mediaplayer auslesen können und man somit seine Wiedergabelisten fast in jedes Programm importieren kann.


NÖ, kennt keiner von euch XML ? ist das für wuich nur n Modewort ?
Man kann xml Dateien ganz simpel in so ziemlich jedes andere Format was man will umwandeln und dazu muss man lediglich ein Stylesheet erstellen. Dann kannst aus der xml direkt z.b. m3u machen oder pls oder ne html zum anzeigen (browser können sie auch direkt mit dem Styleshee anzeigen sie transformieren sie intern) Was denkt ihr eigentlich warum xml so aufgebaut ist wie es ist ? Aus Spass ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

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

Beitrag von pluto »

naja das könnten auch andere Formate. Ich finde XML für Playlisten wie gesagt nicht geeignet. Bei einer Playliste möchte ich numal das schnell geschrieben und geladen werden kann.

ich wette das wenn eine Playliste 100 Einträge hat m3u(einfache Variante) wesentlich schneller ist als die vom MediaPlayer.
MFG
Michael Springwald

Antworten