![]() |
Re: Doppelte Einträge in einem Treeview verhindern
Hallo DeddyH,
stimmt. Bis bald Chemiker |
Re: Doppelte Einträge in einem Treeview verhindern
Hallo,
mit dem Problem hab ich auch schon mal gekämpft. :wall: Zitat:
:arrow: In OnEdit prüfen ob der Nodetext schon vorhanden ist, wenn ja mit Postmessage eine selbst definierte Message abschicken. Dadurch kommst Du raus aus dem Ereignis, in dem die Aktivierung des Edit-Modus scheitert. In der Procedur dann die Problembehandlung durchführen. Hab Dir eine Beispiel-Unit zusammengestellt:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls; type TForm1 = class(TForm) TreeView1: TTreeView; procedure TreeView1Edited(Sender: TObject; Node: TTreeNode; var S: String); private { Private-Deklarationen } public { Public-Deklarationen } FDupeNodeText : String; function TreeNodeSearch(aNode: TTreeNode; SearchItem: string): TTreeNode; procedure PM_TVNodeTextAlreadyExists(var Msg: TMessage); message WM_USER +1001; end; var Form1: TForm1; implementation {$R *.DFM} function TForm1.TreeNodeSearch(aNode: TTreeNode; SearchItem: string): TTreeNode; var I: Integer; begin result := nil; if (aNode = nil) or (SearchItem = '') then Exit; for I := 0 to aNode.Count - 1 do begin if SearchItem = aNode.Item[i].Text then begin Result := aNode.Item[i]; exit; end; end; end; procedure TForm1.PM_TVNodeTextAlreadyExists(var Msg: TMessage); begin case MessageBox(0, 'Sie haben einen doppelten Eintrag erstellt. Ändern ?', 'Doppelter Eintrag', MB_ICONQUESTION or MB_YESNO) of idYes: TTreeNode( Msg.WParam ).EditText; idNo: TTreeNode( Msg.WParam ).Text := FDupeNodeText + ' [new]'; end; end; procedure TForm1.TreeView1Edited(Sender: TObject; Node: TTreeNode; var S: String); begin if TreeNodeSearch(Node.Parent, S) <> nil then begin // neue Caption speichern FDupeNodeText := S; // zurücksetzen S := Node.Text; // nach dem Ereignis Problem behandeln PostMessage(Handle, WM_USER +1001, integer(Node), 0); end; end; end. |
Re: Doppelte Einträge in einem Treeview verhindern
Hallo Lannes,
ich habe mal Dein Beispiel ausprobiert und es funktioniert wunderbar. Genau so habe ich es mir vorgestellt. Danke Dir nochmals. Ich werde mir das Beispiel jetzt näher zur Gemüte führen und es in mein bestehendes Programm einbauen. Danke auch nochmal an die anderen Helfer. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz