Komponenten: wie bewege ich meinen Pfeil, er will nicht >>> kann jemand helfen?



  • void __fastcall TPfeilzeiger::SetFPosition(int value)
    {
    FPosition = L; // das funktioniert aber auch nicht........
    Refresh();
    }

    Wie soll das auch gehen, wenn du der Position nicht den Wert zuweist, den du bekommst, der steht nämlich in value drin. 😃

    Also:

    FPosition = value;
    Refresh();
    

    😉

    Tip: Nicht immer gleich verzweifeln. Erstmal den Debugger benutzen und damit ansehen, was genau passiert. 😋

    Viel Glück 👍



  • Ihr Lieben !

    Hier die neuesten Ergebnisse bzw Meldungen
    (Ps > funktionieren tut noch nix)

    folgend die Informationen >> Auszug aus CPP

    //---------------------------------------------------------------------------
    __fastcall TPfeilzeiger::TPfeilzeiger(TComponent* Owner)
    	: TCustomControl(Owner)
    {
    
    SetBounds(0,0,Width,Height);
    
    FPosition=50;        //  hier setze ich den Wert für FPos (sonst meckert der Builder)
    L=FPosition;         //   hier bekommt L den Wert von FPos (sonst Meldung Kein Argument für Format '%Os') und solange die Sache nicht als Komponente                    compiliert wird geht das auch.
    
    FLinBreite=1;             //    <<   ab  hier funktioniert das...komischer weise
    FLinFarbe = clYellow;
    FVollFarbe = clFuchsia;
    FHiGrLiBreite =1;
    FHiGrLiFarbe =clRed;
    FHiGrVoFarbe =clPurple;
    Canvas->Pen->Width = FLinBreite;
    Canvas->Pen->Color = FLinFarbe;
    Canvas->Brush->Color = FVollFarbe;
    
    }
    //---------------------------------------------------------------------------
    

    Ab hier Zweiter Auszug :

    Aber wenn ich folgendes so mache wie Ihr sagt erhalte ich ebenfalls die Fehlermeldung

    > Kein Argument für Format '%Os' <<

    //---------------------------------------------------------------------------
    void __fastcall TPfeilzeiger::SetFPosition(int value)
    {
      FPosition=value;
      Refresh();                       //   habe das mit und ohne Refresh versucht voravgestellt und nachgestellt
    }                                      //    wie es aktuell gerade der Fall ist.....
    //---------------------------------------------------------------------------
    

    entweder geht garnichts oder der Wert wird wieder harausgeschmissen oder es geht aber
    der Pfeil bewegt sich nicht......

    Ich find das ja auch komisch. Ich arbeite jetzt schon seit Tagen nur an diesem Problem aber
    finde und finde den Knackpunkt nicht..............ich versteh das nicht...

    Klar habe ich versucht die Fehler zu beseitigen aber es geht nicht......

    Ich bin ziemlich Ratlos (...und auch schon ziemlich fertig....) 😞

    Liebe Grüße

    Laura

    .

    [edit="junix"]Sag mal, machst dus eigentlich extra?
    Zum x-ten mal: Bitte Code-Tags verwenden!
    Zur Benutzung der Code Tags siehe: sfds [/edit]



  • Nun, dann schau dir am besten nochmal an, was du in Paint() machst: Die Position des Zeigers ist einzig und allein von L abhängig. Das wird allerdings nie aktualisiert. Also solltest du das schnellstens nachholen. Und vor allem auch nicht global deklarieren.



  • lieber Dasd !

    ÄÄhhhm,,, wie_ geht_ das. Und warum nicht global. Wie soll ichs denn machen, wenn der Builder dann immer wieder sagt >> Variable L unbekannt. Zweimal kann ich doch nicht deklarieren. Ich muß doch der Variablen unten einen Wert zuweisen den sie oben abliefern soll. Und wenn sie nur oben deklariert ist, weiss der Builder unten schon nicht mehr bescheid und umgekehrt. Und dann kommt immer Variable nicht bekannt oder sowas....
    Natürlich soll die Variable geändert werden.... das versuche ich doch die ganze Zeit. Fast Tag und nacht. Na ja, ich bossel halt noch ein bisschen rum....

    bis denn

    Laura 🙄

    .



  • //--------------------------------------------------------------------------- 
    #ifndef Pfeilzeiger1H 
    #define Pfeilzeiger1H 
    //--------------------------------------------------------------------------- 
    #include <vcl\SysUtils.hpp> 
    #include <vcl\Controls.hpp> 
    #include <vcl\Classes.hpp> 
    #include <vcl\Forms.hpp> 
    //--------------------------------------------------------------------------- 
    class TPfeilzeiger : public TCustomControl 
    { 
    private: 
    
    int FLinBreite; 
    TColor FLinFarbe; 
    TColor FVollFarbe; 
    
    int FHiGrLiBreite; 
    TColor FHiGrLiFarbe; 
    TColor FHiGrVoFarbe; 
    
    int FPosition; 
    int L;  // Hier das L rein, dann kennt der das auch.*
    protected: 
    
    virtual void __fastcall Paint(void); 
    void __fastcall SetFPosition(int value); 
    
    public: 
    __fastcall TPfeilzeiger(TComponent* Owner); 
    void __fastcall SetColor(TColor PfPen, TColor PfBrush); 
    
    __published: 
    
    __property int LinBreite = {read=FLinBreite, write=FLinBreite}; 
    __property TColor LinFarbe = {read=FLinFarbe, write=FLinFarbe}; 
    __property TColor VollFarbe = {read=FVollFarbe, write=FVollFarbe}; 
    
    __property int HiGrLiBreite = {read=FHiGrLiBreite, write=FHiGrLiBreite}; 
    __property TColor HiGrLiFarbe = {read=FHiGrLiFarbe, write=FHiGrLiFarbe}; 
    __property TColor HiGrVoFarbe = {read=FHiGrVoFarbe, write=FHiGrVoFarbe}; 
    
    __property int Position= {read=FPosition,write=SetFPosition}; 
    __property OnClick; 
    __property OnMouseDown; 
    __property OnMouseMove; 
    __property OnMouseUp; 
    __property OnEnter; 
    __property OnExit; 
    
    }; 
    //--------------------------------------------------------------------------- 
    #endif
    

    *Tu das L dort hin. Falls du es von anderen Klassen nutzen willst, benutze __property`s.



  • Ihr Lieben, lieber Dasd !

    Ich habs endlich geschafft....

    Die Lösung ist die Folgende......
    💡
    Plötzlich ging mir ein Licht auf. Das darf da nicht Refresh heißen, weil das
    ja für eine Beseitigung sorgt. An der Stelle muß >> Paint << stehen :

    Also der Code muss so lauten >>>

    void __fastcall TPfeilzeiger::SetFPosition(int value)
    {
        FPosition=value;
        Paint();        //das ist entscheidend, dann wird auch L bei Paint akzeptiert
    }
    

    Das war die Lösung. Jetzt bewegt sich der Zeiger endlich auch und reagiert
    auch auf Befehle von einem Edit oder sowas.......

    Juchhuuuuuuuuuuuuu.................

    Jetzt mach ich erst mal ne Pause..........

    Alles Liebe an Alle 🙂

    Laura

    .



  • Ihr lieben !

    Ich möchte hier ausdrücklich erklären, das es sich hier um einen Berichtigungsversuch handelt. Mal sehen, ob ich es jetzt richtig mache.
    Wenn es jetzt auch nich funktioniert, erkläre man mir es doch bitte. Ich habe die Tags gesetzt und nichts hat sich getan ???????????????????

    Also vielleich liegt es ja darn, dass sie nicht dicht genug am Text waren, das probiere ich jetzt noch mal aus; wenn das auch nicht geht, weiß ich nicht, wie man das machen soll.

    Also noch ein Versuch:

    void __fastcall TPfeilzeiger::SetFPosition(int value) 
    { 
    FPosition=value; 
    Paint(); 
    }
    

    Hoffentlich ist das jetzt so richtig, wenn nicht kann ich´s auch nich ändern.........

    herzlichst 🙄

    Laura

    .



  • Hier:
    Mit cs:

    cout << "Huhu";
    

    mit cpp:

    cout << "Huhu";
    

    mit code:

    cout << "Huhu";
    

    Hier:
    Mit cs:
    [Xcs]
    cout << "Huhu";
    [/Xcs]

    mit cpp:
    [Xcpp]
    cout << "Huhu";
    [/Xcpp]

    mit code:
    [Xcode]
    cout << "Huhu";
    [/Xcode]

    BITTE X weg denken, sonst würde das Forum das umwamdeln.

    Das "BBCode in diesem Beitrag deaktivieren" darf KEINEN hacken haben, sonst hast du das nicht was du willst.



  • Lieber DJ BlackEagle !

    Ich kann hier nirgendwo etwas von "BBCode in diesem Beitrag deaktivieren" entdecken. Wo soll das stehen ????
    Dennoch würde ich mich nicht als einen Fehler bezeichnen.

    Also > ich benutze jetzt unten den C/C++ Knopf. Und will hoffen, dass es dann geht. Damit ihr endlich zufrieden seid.

    void __fastcall TPfeilzeiger::SetFPosition(int value) 
    { 
    FPosition=value; 
    Paint(); 
    }
    

    So, jetzt müsste es doch funktioniern

    Mit nicht mehr ganz so freundlichen Grüßen
    🙄
    Laura

    .



  • Liebe Laura,
    schau mal zwischen Texteingabe und dem Absende-Button.
    Da zwischen sind 4 Checkboxen, und schau dir das oberste an.
    Wenn du keine siehst, dann klick mal aus "Zeige Optionen", über den Absende-Button.



  • Danke schwarzer Adler !

    Ich glaube ich hab´s endlich kapiert.
    Außerdem bin ich völlig neu hier. Habt ein wenig Verständnis.

    ( Ganz schön kompliziert, Euer Forum, fast so schwierig wie C++. )

    herzlichst 🙂

    Laura

    .


Anmelden zum Antworten