Announcement

Collapse
No announcement yet.

Frage zum VirtualStringTree

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Frage zum VirtualStringTree

    Hallo,

    ich beschäftige mich schon seit längerem mit dem VirtualStringTree von M.Lischke.
    ich habe gerade folgendes Problem.
    dass hier ist meine Suche nach einem bestimmten node:

    <pre>
    procedure TFormMainBike.NodeSuchen(Suchwert: String;ganzerBaum:boolean);
    var
    aNode: PVirtualNode;
    Data: PTreeData;
    gefunden,suchdurchlauf : integer;
    vSuchwert,VNodecaption : String;
    begin
    vSuchwert := Suchwert;
    VNodecaption := '';
    vSuchwert := StringReplace(vSuchwert,'_','',[rfReplaceAll]);
    vSuchwert := StringReplace(vSuchwert,'-','',[rfReplaceAll]);
    suchdurchlauf := 0;
    gefunden := 0;
    ActiveControl := TreeViewBaum;
    with TreeViewBaum do
    begin
    if ganzerBaum then
    begin
    SetFocus;
    aNode := GetFirst;
    if aNode = nil then ShowMessage('Kein Knoten aktiv');
    end
    else aNode:=TreeViewBaum.FocusedNode;
    TreeViewBaum.ClearSelection;

    While aNode <> nil do
    begin
    Data:=TreeViewBaum.GetNodeData(aNode);
    VNodecaption := Data.FCaption;
    VNodecaption := StringReplace(VNodecaption,'_','',[rfReplaceAll]);
    VNodecaption := StringReplace(VNodecaption,'-','',[rfReplaceAll]);

    if (lowercase(vSuchwert) = lowercase(VNodecaption)) or
    (pos(lowercase(vSuchwert),lowercase(VNodecaption)) > 0) then
    begin
    gefunden := 1;
    //Gefundener Node markieren
    if not TreeViewBaum.HasChildren[aNode] then
    begin
    TreeViewBaum.Selected[aNode] := true;
    TreeViewBaum.InvalidateNode(aNode);

    //Bild laden
    Bild_laden(aNode,true,true);
    ANode:=aNode.Parent;
    end else
    begin
    TreeViewBaum.Selected[aNode] := true;
    HotSpotImageBikeWare1.Picture := nil;
    HotSpotImageBikeWare1.Visible := false;
    Bild_laden(aNode,true,true);
    end;
    //Node Öffnen
    if suchdurchlauf > 0 then
    begin
    TreeViewBaum.Expanded[ANode]:=True;
    break;
    end;
    end;
    inc(suchdurchlauf);
    aNode := TreeViewBaum.GetNext(aNode);
    end;
    end;
    if gefunden = 0 then ShowMessage(Suchwert + ' Konnte nicht gefunden werden!');
    end;
    </pre>

    mein problem ist, dass nach
    <pre>
    <b>TreeViewBaum.Selected[aNode] := true;</b>
    </pre>

    der node zwar selektiert ist, aber nicht zwingend den focus hat.
    ich habe es gemerkt, als ich meine suche testete und der eine node war bla markiert und der andere node, hatte noch eine gestrichelten rahmen drum rum! der mit dem gestrichelten rahmen, hatte wohl den focus.
    wenn ich nämlich dann mit der maus auf den blau markierten node klicke verschwindet der gestrichelte rahmen um den anderen node!

    wer weiss <b>irgendeine</b> lösung?

    Gruß

    Markus
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    Hallo Markus,

    ich verwende den VST auch schon seit längerem.
    Mal abgesehen davon, dass mir Deine Suche recht umständlich erscheint, sollte ein zusätzliches
    TreeViewBaum.Focused[aNode] := true; bzw. ein TreeViewBaum.FocusedNode := aNode Dein Problem lösen.

    Gruß Andrea

    Comment


    • #3
      hi andreas,

      tatsächlich so geht es:
      <pre>
      TreeViewBaum.FocusedNode := anode;
      </pre>

      wie sieht deine suchroutine aus?
      meine muss hhalt noch paar andere sächelchen berücksichtigen

      gruß und danke
      Herzliche Grüße

      Markus Lemcke
      barrierefreies Webdesign

      Comment


      • #4
        hi,

        ich habe noch folgendes Problem.
        Vielleicht schaut ja andreas nochmal rein
        ich bin in der Artikelverwaltung und habe ne artikelnummer. diese artikelnummer wird in der hotspotstabelle gesucht um das dazugehörige bild zu finden! jetzt gibt es die artikelnummer in der hotspotstabelle mehrmals, zum teil im gleichen bild aber auch in unterschiedlichen bildern. nun möchte cheffe dass ich alle nodes (Bilder) im tree öffne in den der artikel vorkommt! die verbindung zwischen bild und node ist ungefähr so:
        bildname: B700_01.jpg
        Nodecaption: B700

        es kann aber auch sein, dass es eine Nodecaption gibt die B700 heißt, aber einmal ist das Bild B700_01.jpg und das zweite mal das Bild B700_02.jpg hinterlegt ist und ich möchte aber nur die nodes mit dem bild B700_01.jpg.
        wie würdet ihr das problem lösen?

        gruß

        Marku
        Herzliche Grüße

        Markus Lemcke
        barrierefreies Webdesign

        Comment


        • #5
          habe das problem gelöst. weiss jemand ob man treeviewnodes farbig machen kann?

          gruß

          Marku
          Herzliche Grüße

          Markus Lemcke
          barrierefreies Webdesign

          Comment


          • #6
            &gt;weiss jemand ob man treeviewnodes farbig machen kann?
            <br>Schau dir mal den Punkt "Paint cycles" (oder so ähnlich" in der Hilfe zum VT an.
            <p>Uli

            Comment


            • #7
              okay, danke!
              habe inzwischen auch das hier:
              <pre>
              TreeViewBaum.Colors.UnfocusedSelectionColor := clgreen;
              </pre>
              entdeckt!

              marku
              Herzliche Grüße

              Markus Lemcke
              barrierefreies Webdesign

              Comment


              • #8
                nochmal ne frage!
                wenn ich einen node gefunden habe, möchte ich diesen hervorheben. die hervorhebung soll aber aktiv bleiben auch wenn der node nicht mehr selektiert ist!
                farbig, fettdruck irgendwas!
                gibt es da was?

                Gruß

                Marku
                Herzliche Grüße

                Markus Lemcke
                barrierefreies Webdesign

                Comment


                • #9
                  In OnPaintText (oder OnBeforePaintText oder so ähnlich) kannst du die Eigenschaften von TargetCanvas.Font verbiegen. <b>Welche(n)</b> Knoten du so hervorhebst, musst du natürlich selbst verwalten - der VT kümmert sich nur um Selected, Focused etc.

                  <p>Uli

                  Comment


                  • #10
                    okay, danke! ich schaue mal.

                    gruß

                    marku
                    Herzliche Grüße

                    Markus Lemcke
                    barrierefreies Webdesign

                    Comment

                    Working...
                    X