Announcement

Collapse
No announcement yet.

Wer übersetzt mir Code von Delphi nach C++?

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

  • Wer übersetzt mir Code von Delphi nach C++?

    <html>

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <title>Neue Seite 2</title>
    </head>

    <body>

    <p>Auf der Suche hier im Forum nach Beispielcode für Drag&amp;Drop im TreeView
    bin ich auf einen Delphi-Code gestoßen, den ich aber nicht so recht in C++
    übersetzen kann.&nbsp; Die Zeilen, die ich nicht verstehe hab ich rot markiert.</p>
    <pre>void __fastcall TTreeViewForm::TreeView1DragDrop(TObject *Sender,TObject *Source, int X, int Y)
    {
    TTreeNode *AnItem;
    TNodeAttachMode AttachMode;
    THitTests HT;
    if(TreeView1->Selected==NULL) return;
    HT=TreeView1->GetHitTestInfoAt(X, Y);
    AnItem=TreeView1-&gt;GetNodeAt(X, Y);
    //<font color="#FF0000">if (HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] &lt;> HT)</font>
    //{
    // if ((<font color="#FF0000">htOnItem in HT</font>) | (<font color="#FF0000">htOnIcon in HT</font><font color="#000000">)</font>) AttachMode= naAddChild;
    // else if (<font color="#FF0000">htNowhere in HT</font>) AttachMode = naAdd;
    // else if (<font color="#FF0000">htOnIndent in HT </font>)
    AttachMode=naInsert;
    TreeView1-&gt;Selected-&gt;MoveTo(AnItem, AttachMode);
    // }
    }</pre>
    <p>Wer kann mir auf die Sprünge helfen? Danke - Günther</p>
    <p>&nbsp;</p>

    </body>

    </html>
    Günther

  • #2
    Das sind Pascal-Sets. Soweit ich weiß, gibt's im BCB eine Template-Klasse Set<>, die du zum Umsetzen benutzen kannst. Aus<pre>
    htOnItem in HT
    </pre>wird dann AFAIR<pre>
    HT.Contains(htOnItem)
    </pre>. Für den if-Ausdruck wirst du wohl ein temporäres Set anlegen müssen:<pre>
    THitTests tmpHT;
    tmpHT << htOnItem << htOnIcon << htNowhere << htOnIndent;
    if (HT - tmpHT != HT)
    </pre>oder so. Alles ohne Gewähr natürlich.
    <p>Ciao, Uli

    Comment


    • #3
      Das mit dem HT.Contains(htOnItem) hab ich inzwischen auch rausgefunden. Kann man das mit dem tmpHT vereinfacht so ausdrücken, daß wenn die Bedingung (HT - tmpHT != HT) unwahr ist, also (HT == tmpHT) zutrifft, die folgenden Abfragen (die wären dann ja alle wahr, kann das bei so einem TreeView vorkommen?) und das MoveTo nicht ausgeführt werden sollen? Programmiertechnisch habe ich es dann verstanden, aber den Sinn dieser Abfrageformulierung kapier ich nicht.

      Ich hab mein Programm unabhängig vom genauen "Niederlassungspunkt" inzwischen weitergebastelt, ist also nicht so wichtig...

      Danke - Günthe
      Günther

      Comment


      • #4
        Das:<pre>
        (HT - tmpHT != HT)
        </pre>und das:
        <pre>(HT == tmpHT)
        </pre>sind <b>nicht</b>gleichbedeutend!
        Das Minus ist die Mengendifferenz, z.B. mit HT :=
        [htOnItem]<pre>
        [htOnItem] - [htOnItem, htOnIcon, htNowhere,
        htOnIndent] = [] <> HT ,
        </pre>aber trotzdem<pre>
        [htOnItem] <> [htOnItem, htOnIcon, htNowhere,
        htOnIndent] !
        </pre>
        Die Bedingung<pre>
        HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <>
        HT</pre>
        bedeutet: "Mindestens eins der 4 aufgezählten Flags
        ist in HT enthalten."
        Denn wenn eines in HT ist, wird es durch die
        Differenzbildung rausgenommen,
        und somit ist die Differenz eine <b>echte</b>
        Teilmenge von HT.
        <p>HTH, Uli.
        <p>PS: Das HTH grad eben hat nichts mit Hittests zu
        tun. :-

        Comment


        • #5
          jedenfalls Danke, man lernt nie aus!

          Günthe
          Günther

          Comment

          Working...
          X