AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TreeView auf mehrere Unterverzeichnisse zugreifen lassen?
Thema durchsuchen
Ansicht
Themen-Optionen

TreeView auf mehrere Unterverzeichnisse zugreifen lassen?

Ein Thema von iPlayboy · begonnen am 21. Jan 2008 · letzter Beitrag vom 23. Jan 2008
Antwort Antwort
Seite 1 von 2  1 2      
iPlayboy

Registriert seit: 14. Feb 2007
7 Beiträge
 
#1

TreeView auf mehrere Unterverzeichnisse zugreifen lassen?

  Alt 21. Jan 2008, 12:54
Hallo,

also ich hab eine TreeView und ein TImage und wenn man jetzt im TreeView ein Item auswählt dann zeigt er das Bild im TImage an...

so ist mein code gerade:

Delphi-Quellcode:
procedure TForm2.ListChange(Sender: TObject; Node: TTreeNode);
var
  LoadFile: String;
begin
  if List.Selected.Parent <> nil then
  begin
      {Try loading the picture from the subdirectory Maps}
      LoadFile := IncludeTrailingBackslash(extractfilepath(paramstr(0))) +
      'Maps\Dungeon\' + List.Selected.Text + '.png';
      Current.Picture.LoadFromFile(LoadFile);

      Current.SetBounds((Holder.ClientWidth - Current.Width) div 2,
        (Holder.ClientHeight - Current.Height) div 2, Current.Width,
        Current.Height);

      end
end;
so

Allerdings hab ich mehrere Verzeichnisse in \Maps , nicht nur Dungeon. wie lass ich die auch auslesen ? ich komm einfach nicht drauf ^^
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.135 Beiträge
 
Delphi 12 Athens
 
#2

Re: TreeView auf mehrere Unterverzeichnisse zugreifen lassen

  Alt 21. Jan 2008, 13:58
entweder zu speicherst zu jedem Item das Verzeichnis in .Data

oder du gehst die EternItems bis zum Rootverzeichnis zurück und setzt Name+Verzeichnis zusammen


[add]
PS: in Node steht der selektierte Node drin

Delphi-Quellcode:
procedure TForm2.ListChange(Sender: TObject; Node: TTreeNode);
var
  LoadFile: String;
begin
  if Node = nil then Exit;
  LoadFile := '';
  while Node <> nil do
  begin
    if LoadFile = 'then
      LoadFile := Node.Text
    else
      LoadFile := Node.Text + '\' + LoadFile;
    Node := Node.Parent;
  end;
  Current.Picture.LoadFromFile(IncludeTrailingBackslash(extractfilepath(paramstr(0)))
    + 'Maps\' + LoadFile);

  Current.SetBounds((Holder.ClientWidth - Current.Width) div 2,
    (Holder.ClientHeight - Current.Height) div 2, Current.Width,
    Current.Height);
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
iPlayboy

Registriert seit: 14. Feb 2007
7 Beiträge
 
#3

Re: TreeView auf mehrere Unterverzeichnisse zugreifen lassen

  Alt 22. Jan 2008, 00:24
Hi

Danke für die schnelle Hilfe aber irgendwie funzt das nicht

Er lädt die Bilder irgendwie nicht.....

Wie speicher ich den die ganzen Items in .data?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: TreeView auf mehrere Unterverzeichnisse zugreifen lassen

  Alt 22. Jan 2008, 06:04
Moin,

die dynamische Ermittlung des Pfades halte ich hier für die bessere Lösung. Den RootPath würde ich nur einmal ermitteln wollen.

Delphi-Quellcode:
  private
    ImageRootPath: TFileName;
  end;

var
  DemoForm: TDemoForm;

implementation

{$R *.dfm}

resourcestring
  SSUBDIR = 'Maps';

function NodePath(node: TTReeNode; const sDelimiter: string = PathDelim): string;
begin
  Result := node.Text;
  if Assigned(node.Parent) then
    Result := NodePath(node.Parent) + sDelimiter + Result;
end;

procedure TDemoForm.FormCreate(Sender: TObject);
begin
  ImageRootPath := IncludeTrailingPathDelimiter(
    ExtractFilePath(ParamStr(0)) + SSUBDIR);
end;

procedure TDemoForm.ListChange(Sender: TObject; Node: TTreeNode);
var
  fn: TFileName;
begin
  with Sender as TTreeView do
    if node.Level > 0 then
    begin
      fn := ImageRootPath + NodePath(node) + '.png';
      Current.Picture.LoadFromFile(fn);
      Current.SetBounds((Holder.ClientWidth - Current.Width) div 2,
        (Holder.ClientHeight - Current.Height) div 2, Current.Width,
        Current.Height);
      end
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
iPlayboy

Registriert seit: 14. Feb 2007
7 Beiträge
 
#5

Re: TreeView auf mehrere Unterverzeichnisse zugreifen lassen

  Alt 22. Jan 2008, 11:03
Danke marabu ! Funzt prima !

jetzt muss ich nurnoch rausfinden wie ich verhinder das er die dateiendung .png mit im treeview anzeigt und alles ist wunderbar !
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: TreeView auf mehrere Unterverzeichnisse zugreifen lassen

  Alt 22. Jan 2008, 11:13
Verwendest du wirklich die Komponente TTreeView?

Dann kannst du die Dateinamen mit fn := ChangeFileExt(fn, '') vorbehandeln, bevor du sie in den Baum einbaust. Wenn du nur mit einer Erweiterung arbeitest reicht das schon.
  Mit Zitat antworten Zitat
iPlayboy

Registriert seit: 14. Feb 2007
7 Beiträge
 
#7

Re: TreeView auf mehrere Unterverzeichnisse zugreifen lassen

  Alt 22. Jan 2008, 22:04
Zitat von marabu:
Verwendest du wirklich die Komponente TTreeView?

Dann kannst du die Dateinamen mit fn := ChangeFileExt(fn, '') vorbehandeln, bevor du sie in den Baum einbaust. Wenn du nur mit einer Erweiterung arbeitest reicht das schon.
Ja ich verwende wirklich die Komponente TTreeView , hab sie nur in 'List' umbenannt.

Also entweder bin ich zu doof oder das mit der ChangeFileExt geht nicht
Er zeigt die Bilder weiterhin mit .png an im TreeView......
Hat ja aber denk ich mal nichts damit zu tun das erst ein Root dann ein Child und dann wieder ein Child kommt was das Bild darstellt , oder?

Ich habs jetzt schon fastÜberall das eingebaut und immer das selbe Ergebnis. Geht das ganze nicht auch mit ExtraceFileName ?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: TreeView auf mehrere Unterverzeichnisse zugreifen lassen

  Alt 23. Jan 2008, 08:15
ExtractFileName() liefert dir den Namen inklusive Erweiterung. Zeige doch mal die Zeile, mit der du einen Dateinamen in den Baum einfügst.
  Mit Zitat antworten Zitat
iPlayboy

Registriert seit: 14. Feb 2007
7 Beiträge
 
#9

Re: TreeView auf mehrere Unterverzeichnisse zugreifen lassen

  Alt 23. Jan 2008, 10:32
Hier ich hab dir mal das ganze als Projekt mit beispiel Maps mit rangehängt.
Angehängte Dateien
Dateityp: rar project1_182.rar (91,1 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: TreeView auf mehrere Unterverzeichnisse zugreifen lassen

  Alt 23. Jan 2008, 11:40
Hier meine Änderungen:

Delphi-Quellcode:
{ ... }
implementation

uses
  StrUtils;

const
  SEXT = '.png';
{ ... }
        Else
          // Eintrag ist eine Datei
          If aWithFiles
          and (AnsiIndexStr(SearchRec.Name, ['.', '..']) < 0)
          and SameText(ExtractFileExt(SearchRec.Name), SEXT) Then
          Begin
            New (Info);
            Info^.Path := False;
            Info^.Name := aPath + SearchRec.Name;
            aTree.Items.AddChildObject (aNode, ChangeFileExt(SearchRec.Name, ''), Info);
          End;
{ ... }
procedure TForm1.ListChange(Sender: TObject; Node: TTreeNode);
{ ... }
      fn := ImageRootPath + NodePath(node) + SEXT;
{ ... }
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:49 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