Abfrage eines Wert einer Komponente



  • Hallo,
    eine Frage. Wie kann ich einen Wert (z.B. Ansistring) einer Komponente abfragen, ohne das auf der Form sich ein Timer befindet, in den ich im Interval immer die Komponente abfrage.
    Also, ich habe meine erste Komponente geschrieben. Diese enthält Timer, Uhrzeit, Laufzeit-Count,Betriebsstunden-Count, Berechnungsroutiene sowie eine anbindung an eine Datenbank. Den Timer der Komponente habe ich auf 200 ms gesetzt. Der Timer ließt die aktuelle Uhrzeit aus. Nach Berechnungen übergebe ich die Ergebnisse den Werte der Komponente.
    Zur Zeit habe ich auf der Form einen Timer, der die Werte der Komponente ausließt und es in entsprechenden Felder auf der Form anzeigt.
    Funktioniert einwandfrei, bin stolz !!!
    Ich möchte nach möglichkeit den Timer auf der Form einsparen. Ist dies Möglich ? Kann die komponente bei Wert-Änderung nicht direkt die Felder auf der Form ansprechen ?
    Ich weiß, das ich viel verlange, arbeite erst knapp ein Jahr mit C++. Muß noch viel lernen.

    Gruß Siegfried 🙂



  • Hallo

    Das kommt auf die Komponente drauf an, in die der Wert eingegeben wird.
    Bei TEdit zum beispiel ist der Event OnChange, der bei jeder Wertänderung ausgeführt wurd.

    bis bald
    akari



  • hallo,
    ich habe in der Form folgendes gemacht.

    //---------------------------------------------------------------------------
    void __fastcall TForm1::Edit1Change(TObject *Sender)
    {
    Edit1->Text = TimeDateCount1->GetGesamtLaufzeit;
    }
    //---------------------------------------------------------------------------
    

    meinst du dies ?

    holt nur den wert ab, wenn ich ne Zeichen eingebe.

    Gruß Siegfried



  • Hallo

    das wolltest du doch?

    Kann die komponente bei Wert-Änderung nicht direkt die Felder auf der Form ansprechen ?

    bis bald
    akari



  • Hallo,
    ja, das möchte ich. Habe aber festgestellt, das der Inhalt des Edit-Felds nur aktualisiert wird, wenn ich ein Zeichen eingebe. Da die Komponente ca alle 200ms durch einen in der Komponete befindicher Timer "TimeDateCount1->GetGesamtLaufzeit;" aktalisiert, möchte ich erreichen, das ohne Timer auf der Form, das Editfeld aktualisiert wird.
    Dies funktioniert noch nicht.

    Gruß Siegfried 🙂



  • Hallo,

    dann musst Du in Deiner selbst entwickelten Komponente selbst ein Ereignis einbauen, z.B. "OnTimeChanged", über welches Du dann die Änderung im Editfeld reagieren kannst!

    Gruß,
    Robert



  • Hallo

    achso du willst das Edit mit dem Wert aus der berechnung aktualsieren, nicht anders rum.
    Das kommt darauf an, von was für Faktoren die Rechnung abhängt, die eine Neu-berechnung erfordern. Wenn es nur die aktuelle Zeit ist, brauchst du schon einen Timer, der das erledigt.
    Eventuell gibt es in der WinAPI noch Möglichkeiten, direkt jede Zeitänderung geliefert zu bekommen.

    bis bald
    akari



  • Hallo,
    man kann nicht alles haben!
    werde die aktalisierung erst mal zurückstelle.
    werde sehen, wie die Komponente sich bewährt.
    Danke an alle.
    Gruß Siegfried 🙂



  • Guten Morgen,

    Ich bin der Auffassung, das man nicht nur Fragen stellt, sondern auch eingesteht, wenn man auf die Nase fällt.
    Ich hatte beim Erstellen die Komponente mit einer Form verbunden. Dort ist alles wunderbar verlaufen. Auch das installieren verlief erfolgreich. Danach habe ich diese in meinem Projekt eingesetzt. Hier gab es eine Bombe nach der anderen. Findet dies und das nicht. Möchte nicht vom Code soweit ausholen, da dies vom Thema abweicht. In der Testform weiterin keine Probleme.
    So ist das, wenn man sich so früh freut !!!!!

    Gruß Siegfried 😉 😉 😉



  • Hallo,

    habe meine Komponente zum laufen gebracht und installiert. Den in der Komponente enthalten Timer habe ich vorerst entfernt. Werde dies später nocheinmal versuchen.

    Gruß Siegfried 🙂 🙂


Anmelden zum Antworten