AGB  ·  Datenschutz  ·  Impressum  







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

TreeView als Navigation

Ein Thema von Jackie1983 · begonnen am 14. Aug 2009 · letzter Beitrag vom 15. Aug 2009
Antwort Antwort
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#1

TreeView als Navigation

  Alt 14. Aug 2009, 08:17
Servus,

ich habe 5 Buttons. Je nach Button werden anderen Werte ins TreeView geschrieben.
Angenommen ich habe so ein TreeView
Delphi-Quellcode:
[-] Menü_1
 .....Untermenü_1
 .....Untermenü_2
[+] Menü_2
[-] Menü_3
 .....Untermenü_1
Wenn ich jetzt auf Menü_1 oder Untermenü_1 klicke möchte ich das eine Funktion aufgerufen wird.
Die Funktion braucht aber auch übergabenparameter.
Habe mir überlegt es so zumachen
Delphi-Quellcode:
TMyProcedure = procedure of Object;
TNaviTree = record
  proc : TMyProcedure;
  parameter : pointer;
end;
//...
var
  navi : TNaviTree;
begin
  //schleife
  new(navi);
  navi.proc := blabla;
  navi.parameter := daten;
  //im tree einfügen
end;
was meint ihr, die idee so gut oder hat jemand ne andere Idee?
Gruß
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.592 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: TreeView als Navigation

  Alt 14. Aug 2009, 08:28
Das kommt darauf an wie der Rest vom Code aussieht. Ich selbst benutze eine TreeView meistens, wenn ich mehrere Seiten auf dem Formular habe. Da nehme ich dann ein PageControl, dann kann ich direkt den absoluten Index des ausgewählten Eintrags als neuen Seitenindex setzen, fertig. Ggf. noch mit Offset, wenn es mehrere Bäume gibt.
Und man kann ja auch einen benutzerdefinierten Integerwert einfach in Data legen.

Wenn bei dir da eine Methode aufgerufen werden muss und das nicht ähnlich einfach umsetzbar ist, dann ist das so ein gangbarer Weg. Du musst aber darauf achten, dass der Record überall auch immer korrekt freigegeben wird. Zudem fehlt deinem TMyProcedure noch der Parameter.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#3

Re: TreeView als Navigation

  Alt 14. Aug 2009, 09:03
Zitat von jaenicke:
Zudem fehlt deinem TMyProcedure noch der Parameter.
Zitat von Jackie1983:
Delphi-Quellcode:
TMyProcedure = procedure of Object;
TNaviTree = record
  proc : TMyProcedure;
  parameter : pointer;
end;
Der Parameter für die Procedure liegt in TNaviTree. So können bei proc verschiedene Proceduren hinterlegt werden ohne das ich an die parameter gebunden bin.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.592 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: TreeView als Navigation

  Alt 14. Aug 2009, 21:57
Zitat von Jackie1983:
Der Parameter für die Procedure liegt in TNaviTree. So können bei proc verschiedene Proceduren hinterlegt werden ohne das ich an die parameter gebunden bin.
Und wie willst du das an die Prozedur übergeben? TMyProcedure = procedure of Object; Ich meinte das so:TMyProcedure = procedure(Param: Pointer) of Object;
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: TreeView als Navigation

  Alt 15. Aug 2009, 07:25
Falls es einigermaßen überschaubar ist, würde ich einfach das einfach über eine Case-Anweisung im NodeChanged-Ereignis(?) lösen. Dabei könnte man den ImageIndex verwenden, dann hätten die Knoten auch noch nette Bildchen. Ich halte das für übersichtlicher.

Ach, das hat jaenicke ja fast so schon geschrieben.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#6

Re: TreeView als Navigation

  Alt 15. Aug 2009, 15:28
Zitat von jaenicke:
Und wie willst du das an die Prozedur übergeben? TMyProcedure = procedure of Object; Ich meinte das so:TMyProcedure = procedure(Param: Pointer) of Object;
Ganz einfach wenn im Tree geklickt wurde greifst du auf Data aus dem Node zu.
Da ist ein Record. Im Record haste deine Procedure abgelegt und die Parameter in Pointer.
Dann liest man die Procedure aus und ruft diese mit den Daten aus dem Pointer auf fertig.

habe es aber jetzt anders gelöst.
Delphi-Quellcode:
type
  TNaviType = (ntMenue1 = 0,
               ntMenue2);

  pTreeNavigation = ^rTreeNavigation;
  rTreeNavigation = record
    Kategorie : TNaviType;
    pData1, pData2 : Pointer;
    sData1, sData2 : string;
  end;
pTreeNavigation wird bei Data hinterlegt.
Wenn auf ein Node geklickt wurde wird das record ausgelesen.
Je nach ntMenue id wird eine andere Procedure aufgerufen.
Die Parameter für die Procedure sind im Pointer.
  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 16:03 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