Results 1 to 9 of 9

Thread: Edit tekst lezen in een treeview component

  1. #1
    John van Dijk
    Join Date
    Aug 2006
    Location
    Belfeld
    Posts
    51

    Post Edit tekst lezen in een treeview component

    Hallo,
    Ik maak gebruik van een TJVDBTreeview Component (Jedi).
    Ik heb een copy paste functie geschreven, waarbij treeview items kunnen worden gekopieerd / geplakt.
    Ik heb deze functies gekoppeld aan Ctrl+C en Ctrl+V. Dat werkt prima.
    Echter, als ik nu de treeview tekst aan het editen ben, en ik selecteer een stukje tekst, en ik druk dan op Ctrl+C, dan wil ik niet dat die hele node wordt gekopieerd, maar enkel die geselecteerde tekst.
    Hoe kan ik die geselecteerde tekst uitlezen?
    Ik heb nu onderstaande code:
    Code:
    procedure TfrmMain.popKopierenClick(Sender: TObject);
    begin
      if not tvParams.IsEditing then
      begin
        iCopyCount := 0;
        slCopyList.Clear;
        if tvParams.SelectedIndex > -1 then
        begin
          slCopyList.Add(dmData.tblBasis.FieldByName('ID').AsString+'|'+dmData.tblBasis.FieldByName('ID').AsString);
          GetAllChild( dmData.tblBasis.FieldByName('ID').AsInteger );
        end;
      end else
      begin
        Clipboard.AsText := tvParams.Selected. tvParams.Selected.Text;
      end;
    end;
    De regel "Clipboard.astext := tvParams.... etc" daar moet ik dus alleen de in de editor geselecteerde tekst in zien te krijgen.

    Wie weet raad?

  2. #2
    Als je aan het editen bent, werkt Ctrl+C dan niet al vanzelf? Kan die hele else niet weg, met behoud van de if, zodat jouw code het standaard-gedrag niet in de weg zit.

    Ik ken de JVDBTreeView niet, maar vaak hebben dat soort editors dat soort gedrag al ingebouwd.
    1+1=b

  3. #3
    John van Dijk
    Join Date
    Aug 2006
    Location
    Belfeld
    Posts
    51
    Ja dat klopt, alleen heb ik de toetscombinatie Ctrl+C gekoppeld aan mijn eigen kopieer functie.
    Dus werkt die standaard kopieer handling niet meer.

  4. #4
    Eenvoudig op te lossen.

    Gooi de functionaliteit van het kopiëren en plakken in actions.
    En dan de onUpdate gebruiken

    Delphi Code:
    1. procedure TfrmMain.acCopyUpdate(Sender: TObject);
    2. begin
    3.   acCopy.Enabled := not TreeView1.IsEditing;
    4. end;
    5.  
    6. procedure TfrmMain.acPasteUpdate(Sender: TObject);
    7. begin
    8.   acPaste.Enabled := not TreeView1.IsEditing;
    9. end;

    Zodra je dan een item aan het bewerken bent wordt de actie uitgeschakeld en zal het programma (in theorie) terug moeten vallen op de standaard Ctrl+C, Ctrl+V functionaliteit
    Last edited by crownie; 20-Sep-19 at 10:29. Reason: Moet ik wel de goede code neerzetten natuurlijk

  5. #5
    John van Dijk
    Join Date
    Aug 2006
    Location
    Belfeld
    Posts
    51
    OK bedankt, ga ik uitproberen.

  6. #6
    Was het nog gelukt trouwens?
    Vraag me af of mijn vermoeden klopte :P

  7. #7
    John van Dijk
    Join Date
    Aug 2006
    Location
    Belfeld
    Posts
    51
    Ik heb het uitgeprobeerd, maar helaas, dat werkt niet.
    De actions worden wel disabled, maar de standaard koppeling naar Ctrl+C en Ctrl+V worden niet hersteld....

  8. #8
    John van Dijk
    Join Date
    Aug 2006
    Location
    Belfeld
    Posts
    51
    Maar met die Actions heb ik het nu wel opgelost:
    Ik schakel nu gewoon de shortcut code op wel / niet Ctrl+C en Ctrl+V:

    Code:
    procedure TfrmMain.tvParamsEdited(Sender: TObject; Node: TTreeNode;
      var S: string);
    begin
      acDoCopy.ShortCut  := 16451;  // Ctrl+C
      acDoPaste.ShortCut := 16470;  // Ctrl+V
      bTV_EditMode       := False;
    end;
    
    procedure TfrmMain.tvParamsEditing(Sender: TObject; Node: TTreeNode;
      var AllowEdit: Boolean);
    begin
      acDoCopy.ShortCut  := 0;
      acDoPaste.ShortCut := 0;
      bTV_EditMode       := True;
    end;
    
    procedure TfrmMain.tvParamsExit(Sender: TObject);
    begin
      acDoCopy.ShortCut  := 16451;
      acDoPaste.ShortCut := 16470;
      bTV_EditMode       := False;
    end;
    
    procedure TfrmMain.tvParamsChange(Sender: TObject; Node: TTreeNode);
    begin
      acDoCopy.ShortCut  := 16451;
      acDoPaste.ShortCut := 16470;
      bTV_EditMode       := False;
    end;
    Das misschien niet de meest eleganste methode, maar het werkt wel :-)

  9. #9
    Heb jij misschien een deelbaar project voor mij?
    Dan zal ik ook even kijken als ik vanmiddag tijd heb

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •