Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TreeView als Ablaufplan selber erstellen (https://www.delphipraxis.net/2945-treeview-als-ablaufplan-selber-erstellen.html)

bis 15. Feb 2003 14:19


TreeView als Ablaufplan selber erstellen
 
Hi Leute, ich sitze seit gestern an einem Problem, ich möchte gerne einen TreeView als Ablaufplan haben, wo der User selber den Ablauf bestimmen kann. Um jetzt den Tree zu erstellen habe ich folgenden Code erstellt :
Code:
procedure TConfigurationMain.category_addClick(Sender: TObject);
begin
  if category_tree_view.Items.Count = 0 then
    category_tree_view.Items.Add(nil,category_name.Text)
  else begin
    if category_tree_view.Selected.EditText then
      category_tree_view.Items.AddChild(category_tree_view.Selected,category_name.Text)
    else
      category_tree_view.Items.Add(nil,category_name.Text);
  end;
  category_name.Clear;
end;
Also, wenn ich auf denn Button Klicke soll er einen neuen Eintrag machen, ist nichts makiert, so soll er diesen Eintrag aus dem Edit-Feld als Hauptknotenpunkt machen. Ist ein Punkt makiert, so soll der Eintrag aus dem Edit-Feld als Unterpunkt in den Tree aufgeführt werden. Das mit den Unterpunkten funktioniert ja auch irgendwie. Nur das mit den Weitere haupteinträgen funktioniert nicht richtig. Was mache ich verkehrt ? Hat jemand eine bessere Lösung als die Komponente TTreeView ?

Christian Seehase 15. Feb 2003 14:25

Moin Rolf,

statt Add würde ich's mal mit AddChild probieren.

bis 15. Feb 2003 14:41

Wo ? Einen Tree mit einem Zweig kann ich ja einwandfrei erstellen. Ersetze ich jetzt das zweite Add durch einen AddChild, bekomme ich genau in der Zeile eine Fehlermeldung :
Zitat:

Im Projekt xxxx ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung:
'zzzzzz'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start
fortsetzen.
Das schwarze funktioniert einwandfrei, rot bekomme ich die obengenannte Fehlermeldung in der zweiten Else-Schleife mit AddChild und mit Add bei der zweiten If-Abfrage :

-- Test_1
||
|- Test_1_1
||
|- Test_1_2
|
-- Test_2

Christian Seehase 15. Feb 2003 15:05

Moin Rolf,

die AccessViolation dürfte daher kommen, dass Du die Eigenschaft Selected benutzt, ohne vorher geprüft zu haben, ob denn überhaupt ein Item Selected ist. Wenn nicht gibt Selected nil zurück, und somit wird beim Zugriff auf Selected.EditText eine Exception ausgelöst.

Bei mir sähe das so aus:

Delphi-Quellcode:
procedure TConfigurationMain.category_addClick(Sender: TObject);
begin
  if category_tree_view.Items.Count = 0 then
  begin
    category_tree_view.Items.Add(nil,category_name.Text);
  end
  else
  begin
    category_tree_view.Items.AddChild(category_tree_view.Selected,category_name.Text);
  end;
  category_name.Clear;
end;

bis 15. Feb 2003 15:12

Ich danke Dir, so funktioniert es wunderbar. Ich hatte das zwar in meinen unzähligen Versuchen ohne die zweite If-Schleife ausprobiert aber es funktionierte nicht. Ist ja jetzt auch egal. Ich Danke Dir nochmals ganz herzlich hast mir echt weitergeholfen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:29 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