Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: In einem TreeView einen Knoten erstellen

  Alt 3. Nov 2019, 18:40
Hi Redeemer

Mein Problem ist nach wie vor ungelöst. Ich habe die prozedur TVFilesExplorerContextPopup bis auf den Prozedurkopf auskommentiert. Damit sollte sie unassigned sein - auszuführen gibts da eh nichts mehr.

Dafür habe ich die Prozedure Mousedown angepasst:
Delphi-Quellcode:
procedure TOpenFileFrame.TVFilesExplorerMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  var AnItem: TTreeNode; P: TPoint;
begin
  if Button =(mbRight) then
  begin
    AnItem := TVFilesExplorer.GetNodeAt(X, Y);
    if AnItem <> nil then
    begin
      FPopUpNode := AnItem;
      FPopUpPath := PNameRec(AnItem.Data)^.RealName;
      FPopUpPoint := Point(x,y);
    end;
    P := ClientToScreen(Point(x,y));

    ShowMessage('procedure TOpenFileFrame.TVFilesExplorerMouseDown' +sLineBreak+
                'FPopUpPath := ' + FPopUpPath +sLineBreak+
                'FPopUpNode :=' + FPopUpNode.Text);
    PopupMenu1.PopupComponent := TVFilesExplorer;
    PopupMenu1.Popup(P.X, P.Y);
  end;
end;
Anschliessnd wird PopupMenu1Popup aufgerufen, wo ich per Showmessage einige Ausgaben mache.
Interessant wirds dann aber bei den Menuklicks. Hier das wesentliche Schnipsel aus 'OrdnererstellenClick':

Delphi-Quellcode:
  if LIsdirectory then
  begin
// Node := TVFilesExplorer.Items.AddChildFirst(FPopUpNode, 'Neu');
    Node := TVFilesExplorer.Items.Add(FPopUpNode, 'Neu');
// Node := TVFilesExplorer.Items.AddChild(FPopUpNode, 'Neu');
    Node.ImageIndex := 3;
    Node.SelectedIndex := 3;
    Node.EditText;
  end
  else
  begin
    Showmessage('Der Ordner kann nicht erstellt werden.');
  end;
end;
Interessant hier: Beide auskommentirten Zeilen erzeugen den Knoten zwar, zeigen ihn aber aber in der Linken oberen Ecke des Treeviews an.
Die nicht auskommentierte Zeile zeigt den Knoten zwar an, aber nicht mit dem Knoten als Parent, den ichh ausgewählt hatte ( Hier 'P:\'), sondern eigentlich darunter, also auf gleicher Ebene.
ordnerposition2.jpg
Das Problem ist also nicht die Prozedur TVFilesExplorerContextPopup.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat