AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TreeView in Datei speichern bei bestimmten Aktionen
Thema durchsuchen
Ansicht
Themen-Optionen

TreeView in Datei speichern bei bestimmten Aktionen

Ein Thema von Mazel · begonnen am 9. Aug 2007 · letzter Beitrag vom 10. Aug 2007
Antwort Antwort
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#1

TreeView in Datei speichern bei bestimmten Aktionen

  Alt 9. Aug 2007, 19:45
Hallo,

ich habe ein TreeView auf meinem Formular. Nun möchte ich dieses in eine Datei speichern, wenn bestimmte Aktionen auftreten. Das scheint aber nicht ganz einfach zu sein. Folgendes:
Mit einem Button erstelle ich ein Node der editierbar ist, heißt, gleich nach dem erstellen kann man ihn ändern oder eben nicht. Das Editieren kann man mit 2 Aktionen beenden, entweder mit Enter oder mit der Maus irgendwo hin klicken. Während das Programm läuft, kann man immer wieder den Eintrg ändern.

Wie stell ich das nun am besten an, ohne bei jedem Klick auf das TreeView die Daten zu speichern, weil ich nicht weis, ob es da nicht einmal zu einem Fehler kommen könnte.

Das Enter über MouseUp ist kein Problem aber eben der Mausklick. Klicke ich zum Beispiel in ein anderes Control kann ich das wiederrum nicht so einfach abfangen.

Welche Lösung kennt ihr?

Gruß
Marcel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: TreeView in Datei speichern bei bestimmten Aktionen

  Alt 9. Aug 2007, 21:06
Hi,

bringt dich das Event onEdited des TTreeview eventuell weiter?
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#3

Re: TreeView in Datei speichern bei bestimmten Aktionen

  Alt 10. Aug 2007, 00:52
Leider nein. Es heißt zwar, das OnEdited kurz nach dem editieren ausgelöst wird aber das ist wohl so schnell, dass es die aktuelle Änderung nicht mit einbezieht.
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: TreeView in Datei speichern bei bestimmten Aktionen

  Alt 10. Aug 2007, 08:48
Hallo,

wie ändert denn der Benutzer die Items des Treeview, über das Feld welches man zum Beispiel mit treeview.Items.Item[...].EditText; aufrufen kann. Da würde dann falls der Eintrag geändert würde das Ereignis onEdited aufgerufen werden.

Ober wird irgendwo bei dir Code wie dieser treeview.Items.Item[...].Text:= ...; ausgeführt.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
marabu

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

Re: TreeView in Datei speichern bei bestimmten Aktionen

  Alt 10. Aug 2007, 09:19
Guten Morgen,

da das Ereignis OnEdited() noch vor der endgültigen Änderung auftritt, bietet sich eine Nachrichtenverzögerung an:

Delphi-Quellcode:
uses
  ..., AppMessages;

{
unit AppMessages;
interface
uses
  Messages;
const
  UM_EDITED = WM_USER;
implementation
end.
}


type
  TDemoForm = class(TForm)
    TreeView: TTreeView;
    procedure FormCreate(Sender: TObject);
    procedure TreeViewCancelEdit(Sender: TObject; Node: TTreeNode);
    procedure TreeViewEdited(Sender: TObject; Node: TTreeNode;
      var S: String);
  private
    procedure UMEdited(var Message: TMessage); message UM_EDITED;
  end;

var
  DemoForm: TDemoForm;

implementation

{$R *.dfm}

procedure TDemoForm.UMEdited(var Message: TMessage);
begin
  with Message do
  begin
    ShowMessage(TTreeNode(LParam).Text);
    Result := 0;
  end;
end;

procedure TDemoForm.TreeViewEdited(Sender: TObject; Node: TTreeNode;
  var S: String);
begin
  PostMessage(Handle, UM_EDITED, 0, Integer(Node));
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#6

Re: TreeView in Datei speichern bei bestimmten Aktionen

  Alt 10. Aug 2007, 10:11
Guten Morgen,

Nachrichtenverzögerung ist sehr gut. Hat funktiomniert. Danke Dir marabu.

@bitsetter:
Ich rufe nicht EditText auf, aber die Wirkung ist die gleiche. Der Benutzer markiert das Item und klickt dan nochmal drauf, dadurch kann man ihn editieren.

Da kann ich das jetzt so umbauen, dass ich die Abfrage mit der Entertaste nicht mehr brauche, da es ja jetzt funktioniert.

Nochmals Danke an beide.
Marcel Jänicke
www.mj-software.net
  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 15:58 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