Announcement

Collapse
No announcement yet.

*myedit = NULL??

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

  • *myedit = NULL??

    hi,

    ich habe folgendes problem:
    ich habe einen globalen Zeiger vom Typ TEdit und erzege die komponente entgültig nach dem drücken eines Buttons. Desweitern weise ich dem Edit eine Funktion für das OnChange ereignis zu. Bis da hin geht alles, auch die funktion für das OnChange wird ordnungs gemäß aufgerufen jedoch kann ich nicht auf eine eigenschaft z.B. Text zugreifen, da der Zeiger wert NULL ist. kann mir jemand helfen was ich falsch mache? Hier der Quelltext:

    <PRE>
    TEdit *mylabel; //global
    <br>
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    TEdit *myedit= new TEdit(Form1);
    myedit->Left = 90;
    myedit->Top = 8;
    myedit->Parent = Form1;
    myedit->OnChange = chkValue;
    }
    <br>
    void __fastcall TForm1::chkValue(TObject *Sender)//funktion für OnChange
    {
    if(myedit!=NULL) ShowMessage(myedit->Text);
    }
    <br>
    in Headerdatei
    .
    .
    public:
    void __fastcall chkValue(TObject *Sender);
    </PRE>

  • #2
    Bei der Initialisierung muß der Eigenschaft Text noch ein Text zugewiesen werden
    Günther

    Comment


    • #3
      ist es ja, da ich einen text eingebe und dadurch das ereignis aufgerufen wir

      Comment


      • #4
        Versuch mal
        <pre>
        TEdit *myedit= new TEdit(Form1);
        myedit->Left = 90;
        myedit->Top = 8;
        myedit->Parent = Form1;
        <b>myedit->Text=""; </b>
        myedit->OnChange = chkValue;
        </pre&gt
        Christian

        Comment


        • #5
          nein geht auch nicht. der Zeiger in der OnChange prozedur hat immer den Wert NUL

          Comment


          • #6
            Oje habe ich auch übersehen.

            Dein myedit wird in TForm1::Button1Click angelegt ist ist folglich auch nur da gültig (Gültigkeitsbereiche)

            Du musst global am besten da wo

            TForm1 *Form1;

            steht

            TEdit *myedit;

            anlegen und in TForm1::Button1Click

            myedit=new TEdit(Form1);

            Dann hast du ein Edit welches global von jeder Funktion genutzt werden kann
            Christian

            Comment


            • #7
              Oder du plazierst das Edit in der Formklasse - das ist prinzipiell der "sauberere" Weg, wenn du keine guten Gründe hast, es anders zu machen.
              <br>Uli

              Comment


              • #8
                danke dir Christian, ich bin ja auch blöde ^^" TEdit *myedit war global. Aber ich habe ja noch einen lokalen Zeiger TEdit *myedit in der Click rotine erstellt und nur der lokale Zeiger wurde richtig "erstellt"

                Comment

                Working...
                X