Announcement

Collapse
No announcement yet.

Eigenschaften von eigenen ActiveX-Komponenten

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

  • Eigenschaften von eigenen ActiveX-Komponenten

    Ich bin dabei ein ActiveX-Control zu erstellen, dass den Datenaustausch zwischen Intouch und Interbase herstellen soll. Das ActiveX soll Daten von der Datenbank an Intouch weiterleiten und andersrum. Eine Datenbankanbindung und das Anzeigen von Daten in Intouch, sowie das ausführen von Methoden sind nicht so das Problem, aber ich kann die deklarierten Eigenschaften scheinbar nicht übergeben. Hier mein Versuch die Daten zu übergeben :

    <code>
    STDMETHODIMP TUebertragungImpl::get_AktBemerk(BSTR* Value)<br>
    {<br>
    try<br>
    {<br>
    *Value = WideString(m_VclCtl->IBTable1->FieldByName("BEMERK")->AsString).Copy();<br>
    }<br>
    catch(Exception &e)<br>
    {<br>
    return Error(e.Message.c_str(), IID_IUebertragung);<br>
    }<br>
    return S_OK;<br>
    };<br>
    </code>

    Ich hab so dass gefühl, dass das nicht so ganz funktioniert. Wie also kann ich meine Eigenschaften aktualisieren, oder so, damit sie automatisch in Intouch angezeigt werden?

    Ciao Martin

  • #2
    In TLD-Datei muß zwingend das Feld Datenbindung markiert sein, sonst kann InTouch nur lesend zugreifen.

    Beispielmethode aus unserem Projekt für InTouch:

    STDMETHODIMP TActiveXPlatzdatenImpl::get_Platzname(BSTR* Value)<br>
    {<br>
    try<br>
    {<br>
    *Value = WideString( m_VclCtl->Platzname ).Copy();<br>
    }<br>
    catch(Exception &e)<br>
    {<br>
    return Error(e.Message.c_str(), IID_IActiveXPlatzdaten);<br>
    }<br>
    return S_OK;<br>
    };<br>
    STDMETHODIMP TActiveXPlatzdatenImpl::set_Platzname(BSTR Value)<br>
    {<br>
    try<br>
    {<br>
    Protokoll( "set_Platzname " + AnsiString(Value) );<br>
    m_VclCtl->Platzname = AnsiString( Value );<br>
    }<br>
    catch(Exception &e)<br>
    {<br>
    return Error(e.Message.c_str(), IID_IActiveXPlatzdaten);<br>
    }<br>
    return S_OK;<br>
    };<br&gt

    Comment


    • #3
      Ist an und für sich ja ne lustige Idee, aber das irgendwie hat das mit dem Aktivieren der Datenbindung noch nicht so ganz gereicht. Ich meine mein Programm zieht doch genauso, wie deins einen String aus einem Objekt und übermittelt ihn an die entsprechende Eigenschaft. Ich bekomme trotzdem keine Ausgabe in Intouch. Gut, ich bin auch nicht bewandert mit Intouch (habs mir letzte Woche zum ersten mal angesehen), aber laut der Person, die mich hier bei meiner Arbeit betruet sind alle Einstellungen OK. Nur das klappt irgendwie nicht so recht. Hast du noch ne Idee?!

      Ciao und Danke für deine Hilfe!

      Marti

      Comment


      • #4
        Nagut, scheint doch zu klappen. Danke! Jetzt muss ich das Programm nurnoch dazu überreden, dass es die Daten auch aktualisiert. Soll heissen, wenn ich nen neuen Datensatz auswähle sollen auch die Daten des aktuellen / neuen Datensatzes übermittelt werden. Dies scheint entweder nicht zu geschen, oder ich muss Intouch noch dazu überreden. Hast du evtl. schoneinmal ein solches Problem gehabt

        Comment


        • #5
          Hier kann ich leider nicht weiterhelfen, da ich mit InTouch selbt noch nichts gemacht habe

          Comment


          • #6
            Es ghet ja nicht dirket um Intouch! Ich habe das Problem, dass ich die Eigenschaft des ActiveX-Elements nach außen hin ändern muss. Demnachzufolge müssten dann auch die Daten in Intouch geändert werden.

            Heisst auf gut Deutsch : "Wie kann ich eine Eigenschaft der ActiveX-Komponente von 'innen' her manipulieren?"

            Ich hab mir die Sache so gedacht: Wenn eine Änderung der Datenquelle vorliegt (Datenänderung / Änderung der Position in der Datenbank), dann sollen die entsprechenden Eigenschaften auch geändert werden. Kann man da evtl. was mit Zeigern machen? Sowas, wie nen Zeiger auf das aktuelle Tupel/Entität und dessen Attribut.

            Marti

            Comment

            Working...
            X