AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eigenes Mainmenu: Verschachtelung ?

Ein Thema von mimi · begonnen am 23. Mär 2007 · letzter Beitrag vom 25. Mär 2007
Antwort Antwort
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#1

Eigenes Mainmenu: Verschachtelung ?

  Alt 23. Mär 2007, 12:56
Hallo,
ich möchte mir gerne mit Canvas mein eigenes MainMenu erstellen. Soweit auch kein Problem.

Ich habe eine einfache Listbox geschrieben, wo ich die anordnung der einzelnen Einträge verändern kann.

Ich möchte gerne das jeder Eintrag unter Einträge hat... ich weiß nur nicht wie ich das am besten machen kann.
Ich habe einfach gesagt das jeder Eintrag eine Listbox hat....
aber irgenwie habe ich Probleme das Anklickte Menu ausfindig zu machen.

ich habe die frage schon hier gestellt:
http://www.lazarusforum.de/viewtopic.php?p=6139#6139

dort habe ich auch meinen Quellcode gepostet. Ich hoffe das nimmt mir jetzt hier keine übel das ich denn Qullecode nicht noch einmal hier poste... ich finde es so Übersichtlicher oder was meint ihr ?

Vielen Dank schonmal im voraus !
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
23. Mär 2007, 14:06
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Eigenes Mainmenu: Verschachtelung ?

  Alt 23. Mär 2007, 14:09
hallo, willst du ein komplettes Menü aus Listboxen erstellen mit "Baumstruktur"? Oder hab ich das falsch verstanden?
willst du das es wie Listboxen aussieht?
[Edit]
trotz deine Beschreibung von
Zitat:
Item1 Item2 Item3 Item4
Sub 1 -> u1
Sub 2 u2
Sub 3
Sub 4
ist es anhand der Struktur nicht eindeutig welches Subitem zu welchem Oberitem gehört.
Das TreeView speichert zum Beispiel die Struktur so:
Code:
Item1
  Item1_1
  Item1_2
    Item1_2_1
    Item1_2_2
    Item1_2_3
    Item1_2_4
    Item1_2_5
  Item1_3
Item2
Item3
durch die Einrückung ist eindeutig welches Item zu welchem oberitem gehört.
Bei deiner Struktur müsste man schon textanalyse betreiben. Zudem könntest du dann kein Item haben welches "Sub 2 u2" heißt weil dann das u2 wohl irgendwie interpretiert wird.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Eigenes Mainmenu: Verschachtelung ?

  Alt 23. Mär 2007, 14:17
du hast mich richtig verstanden: mein Mainmenu soll komplet aus meiner eigenen Listbox bestehen also:
der Header soll eine Listbox sein wo nur die anordnung anders ist. und jedes Item soll als unter Menu ein Listbox haben und dieses auch und so weiter....
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Eigenes Mainmenu: Verschachtelung ?

  Alt 23. Mär 2007, 14:34
naja ich wollte nicht nach dem Caption suchen. sondern dem Item allgemein.
Jeder Unter Menu ist ja eine klasse für sich.

Evlt. wenn es nötig ist speichere ich eine art ID mit ab, für jedes menu und jedes Eintrags.

kennst du Mozilla Firefox ? und dort das Lesezeichen Menu ?
Dort kannst du Ordner hinzufügen und so weiter. Im Prinzip möchte ich das gleiche nicht gerade für Lesezeichen.

Mir geht es hauptsälich um die Frage(n)
a: wie erstelle ich so eine Strucktur ?
b: wie greife ich drauf zu.

Edit:
ist es anhand der Struktur nicht eindeutig
das war nur ein Beispiel wie es später Grafisch aussehen soll(te).

edit2:
du meinst ich sollte das intern so regeln wie eine TreeView ?
so in der art. und es halt nur anders da stellen. Keine schlechte Idee. danke für den neuen ansatzt.

edit3:
ach ja, ich möchte gerne ausehr dem Text noch andere Daten mit abspeichern z.b. wude es angeklickt ?
welche Farbe(Hintergrund und Vordergrund) und sowas halt. Im Prinzip könnte ich also eine TStringlist nehmen. Es dort die Daten als Objekte mit abspeichern, Problem ist nur dort kannst du keine Einträge löschen bzw.die Objekte können nicht wieder gelöscht werden, und soviel ich weiß auch nicht auf nil gesetzt werden.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Eigenes Mainmenu: Verschachtelung ?

  Alt 23. Mär 2007, 14:46
ich habe mir noch eine andere strucktur überlegt:
Zitat:
Item0|Informationen zum aussehen
item0\test1|Informationen zum aussehen
item0\test2|Informationen zum aussehen
item0\test3|Informationen zum aussehen

item1|Informationen zum aussehen
item1\test1|Informationen zum aussehen
item1\test2|Informationen zum aussehen
item1\test3|Informationen zum aussehen

item0\item2\Text1|Informationen zum aussehen
item0\item2\Text2|Informationen zum aussehen
item0\item2\Text3|Informationen zum aussehen
was haltet ihr davon ?
währe das denn auch OOP ? ich glaube nicht oder ?
ich würde das schon irgendwie, nach dem OOP Prinzip machen wollen. Und genau da ist das Problem

Edit: aber die haupt Fragen bleiben bestehen: wie könnte ich jetzt auf ein Item zu greifen ? bzw. auf ein Menu
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Eigenes Mainmenu: Verschachtelung ?

  Alt 23. Mär 2007, 14:50
willst du per Textdatei bzw. Text die Struktur erstellen lassen oder zur Laufzeit die Menüeinträge einzeln erzeugen lassen?
die Objectstruktur wäre die gleiche wie bei einem Treeview. Ein Item kann mehrere Subitems haben wovon wieder jedes mehrere Subitems haben kann wovon wieder jedes mehrere Subitems haben kann etc.

Deine Hauptfrage hängt davon ab wie du das ganze realisierst.

Könntest du bitte zukünftig die Edit-Funktion nutzen?!
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#8

Re: Eigenes Mainmenu: Verschachtelung ?

  Alt 23. Mär 2007, 14:57
Die Frage habe ich mir auch gerade eben gestellt.
Ich denke die müssen nicht im OI anklickbar sein. Es reicht vollkommen wenn ich mir mein eigenen Editor dafür schreibe. Wobei währe es aufwendig, wenn jedes item jetzt doch im oi anklickbar sein sollte ?

ein anders Problem ist ja noch: jedes Item muss angeklickbar sein.
angenommen ich nehme eine TStringlist und speichere alles als text ab.

Dann kann ich ja schlecht beim jeden klicken oder bei jeder Maus Bewegung in diese Tstringlist schauen welches Rect die Items haben.

Ich habe mir überlegt dafür eine extra liste zu nehmen, währe das praktisch oder gibt es noch bessere Möglichkeiten ?
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Eigenes Mainmenu: Verschachtelung ?

  Alt 23. Mär 2007, 15:50
ich habe mir überlegt, ich nehme diese Strucktur:
Zitat:
Item0|Informationen zum aussehen
item0\test1|Informationen zum aussehen
item0\test2|Informationen zum aussehen
item0\test3|Informationen zum aussehen

item1|Informationen zum aussehen
item1\test1|Informationen zum aussehen
item1\test2|Informationen zum aussehen
item1\test3|Informationen zum aussehen

item0\item2\Text1|Informationen zum aussehen
item0\item2\Text2|Informationen zum aussehen
item0\item2\Text3|Informationen zum aussehen
jetzt erstelle ich eine Klasse TmyMainMenu, die hat eine Procedure LoadRootItems ein Root item ist eine Zeile wo kein \ vorkommt.
Bein laden wird ein Array gefüllt, und zwar mit jedem einzelnen Item der gezeichnet wird. am Anfang sind das 2(im beispiel Script).

Jetzt klicke ich auf Item0, dann wird eine Procedure mit z.b. dem Namen LoadSubItems auf gerufen. Als Parameter erwartet sie einen Caption (Später eine ID). Es gibt in der Klasse selber eine Gobale Variable Level das ist der aktuelle TokenIndex. der wird um eins erhöht, wenn auf ein Item geklickt wird.

Jetzt habe ich das angeklickte Item und den Aktuellen TokenIndex(Level).
die procedure LoadSubItems ermittelt nun welche unter items zu item0 gehöhren.

In der Liste(array) wird auch die Zeilen Nummer zu den Untermenus gespeichert.
dann muss nicht mehr gesucht werden sondern nur vergliechen:
ist ParentCaption immer noch gleich Zeile als sprich gleich Item0 wenn ja füge es der Liste hinzu.
Wenn nicht breche das hinzufügen ab.

Ich hoffe ihr könnt mir noch folgen.

Dank dieser Liste habe ich die Möglichkeit festzustellen, welches Item angeklickt wurden ist und kann somit sein
unter Menu ermitteln(das hoffe ich auf jedenfall).
beim zeichnen wird jetzt auch nur diese Liste durch gegangen und bei jeder Mausbewegung bzw. beim jeden Klicken mit der Maus ebenfalls.

was meint ihr dazu ?
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Eigenes Mainmenu: Verschachtelung ?

  Alt 25. Mär 2007, 18:48
so bin weiter gekommen heute.
hier habe ich meine Lösung gepostet:
http://www.lazarusforum.de/viewtopic.php?p=6218#6218
ist zwar kein richtige OOP hat, aber wie ich finde auch seine vorteile.
(der Letzte Beitrag von Pluto um 18:46) was meint ihr ?

edit1:
ps: nicht von den anderen antworten abschrecken lassen, der ton dort ist normal und ich habe mich auch dran gewöhnt wie ihr an meiner Antwort evlt. merken werdet
im Grunde sie sie dort auch nett nur nicht bei jeder Frage....
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz