Announcement

Collapse
No announcement yet.

Fehler SpinButton

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

  • Fehler SpinButton

    Hallo,

    ich möchte mit drei SpinButton Editfeldeer mit var =0.1 runter bzw hochzählen ... (zwischen 0-5V)
    Im Moment ändert sich nur Rückwärts wenn ich vorwärts OnUpCLick betätige ....
    Könnt ihr mir sagen wie ich vorgehe ???
    Code:
    // getriebepositionierung
    
    
    void __fastcall TForm1::vorspin1DownClick(TObject *Sender)
    {
    		 if (Form1->vorsp1->Text == 0)
    		{
    			Form1->vorspin1->Invalidate()  ;
    		}
    		else
    		{
    			button2 = true;
    
    		}
    }
    
    
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::vorspin1UpClick(TObject *Sender)
    {
    		if (Form1->vorsp1->Text == 5)
    	{
    	  Form1->vorspin1->Invalidate()  ;
    	}
    	else
    	{
    		button2 = true;
    
    	}
    
    }
    //---------------------------------------------------------------------------
    
    
    void __fastcall TForm1::AbSpinButton2DownClick(TObject *Sender)
    {
    	if (Form1->neutral2->Text == 0.099999999999998)
    	{
    			Form1->AbSpinButton2->Invalidate()  ;
    	}
    	else
    	{
    		button1 = true;
    		//Form1->neutral2 ->Text = ((myaus.neutral2v)+(double(var)));
    		//myaus.neutral2v = myaus.neutral2v - var;
    	}
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::AbSpinButton2UpClick(TObject *Sender)
    {
    		if (Form1->neutral2->Text == 5)
    	{
    	  Form1->AbSpinButton2->Invalidate()  ;
    	}
    	else
    	{
    		button1 = true;
    
    	}
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::AbSpinButton3DownClick(TObject *Sender)
    {
    		 if (Form1->rueck2->Text == 0.0999999999999998)
    	{
    	  Form1->AbSpinButton3->Invalidate()  ;
    	}
    	else
    	{
    		button3 = true;
    		Form1->rueck2 ->Text = (double(myaus.rueck2v)+(double(var)));
    		myaus.rueck2v = myaus.rueck2v - var;
    	}
    }
    //---------------------------------------------------------------------------
    
    
    void __fastcall TForm1::AbSpinButton3UpClick(TObject *Sender)
    {
    		if (Form1->rueck2->Text == 5)
    	{
    	  Form1->AbSpinButton3->Invalidate()  ;
    	}
    	else
    	{
    		button3 = true;
    		Form1->rueck2->Text = (double(myaus.rueck2v)+(double(var)));
    		myaus.rueck2v = myaus.rueck2v + var;
    	}
    }
    //---------------------------------------------------------------------------
    
    
    
    				   if (button2 == true)
    				   {
    					   Form1->aktpoge->Digit = (double(myaus.vorsp1v)/1000);       // Von mV auf V !!!
    					   Form1->spa0->Caption = (double(myaus.vorsp1v));
    
    					   if (Form1->vorspin1->OnDownClick)
    					   {
    							 Form1->vorsp1->Text = ((double(myaus.vorsp1v))-(double(var)));
    							 myaus.vorsp1v= myaus.vorsp1v - var;
    							 
    					   }
    					   if(Form1->vorspin1->OnUpClick)
    					   {
    							Form1->vorsp1->Text = ((double(myaus.vorsp1v))+(double(var)));
    							myaus.vorsp1v= myaus.vorsp1v + var;
    						   	var++;
    					   }
    
    				}
    
    				   if (button1 == true)
    				   {
    					   Form1->aktpoge->Digit = (myaus.neutral2v);
    					   Form1->spa0->Caption = (double(myaus.neutral2v));
    						if (Form1->AbSpinButton2->OnUpClick)
    						{
    							 Form1->neutral2->Text = (double (myaus.neutral2v)+(double(var)));
    							 myaus.neutral2v = myaus.neutral2v + var;
    						}
    							if (Form1->AbSpinButton2->OnDownClick)
    						{
    							 Form1->neutral2->Text = (double(myaus.neutral2v)-(double(var)));
    							 myaus.neutral2v = myaus.neutral2v - var;
    						}
    
    				   }
    				  
    				   if (button3 == true)
    				   {
    					   Form1->aktpoge->Digit = (myaus.rueck2v);
    					   Form1->spa0->Caption = (double(myaus.rueck2v));
    
    
    				   }

    LG
    Iva

  • #2
    Der Cod ist mir unklar. Ein SpinButton zählt selber in dem Editfeld, wenn er verknüpft wurde, rauf und runter.
    Wozu also das ständige Invalidate?
    Christian

    Comment


    • #3
      Ich dachte invalidate wäre soetwas wie stoppen ... wenn die 5 erreicht ist bzw. 0 darf das Editfeld per SpinButton nicht mehr gesetzt werden.
      Außerdem soll ein Ausgang gesetzt werden SpinButton1 zb auf 3. Dieses wird in einer Anzeige ( Label) übernommen. Dann setzt man SpinButton3 auf 5. Dieser Wert wird in dr Anzeige übernommen. Dannach kann wieder SpinButton1 gesetzt werden .... usw.


      LG
      Iva

      Comment


      • #4
        Nutze ein TUpDown

        Setze Associate auf dein Editfeld
        Setze Max, Min und Increment für die Wert
        Nutze das OnChanging Ereignis um ggf. andere Elemente zu steuern
        Christian

        Comment


        • #5
          [QUOTE=iva;185321]
          Könnt ihr mir sagen wie ich vorgehe ???

          Darüber habe ich nicht nachgedacht.

          Aber ich stolperde ueber deine Code. Da benutzt du immer die Form1 globale variabele.

          void __fastcall TForm1::vorspin1DownClick(TObject *Sender)
          {
          if (Form1->vorsp1->Text == 0)
          {
          Form1->vorspin1->Invalidate() ;
          Dass is kein gute programmierpraxis. Solche globale TForm variabelen sind when mann mit mehrere forms arbeitet meistens null, also nichtinitialisiert.

          Und auch is es auf diese weise nicht Möchlich zwei Instancen van diese form zu haben.

          Besser:
          Code:
          void __fastcall TForm1::vorspin1DownClick(TObject *Sender)
          {
          		 if (vorsp1->Text == 0)
          		{
          			vorspin1->Invalidate()  ;

          Comment


          • #6
            Dass is kein gute programmierpraxis. Solche globale TForm variabelen sind when mann mit mehrere forms arbeitet meistens null, also nichtinitialisiert.
            ????
            void __fastcall TForm1::vorspin1DownClick(TObject *Sender)
            {
            if (Form1->vorsp1->Text == 0)


            Wie sollte diese nicht initialisiert sein?? Er hätte auch this nehmen können.....
            Christian

            Comment


            • #7
              Originally posted by Christian Marquardt View Post

              if (Form1->vorsp1->Text == 0)

              Wie sollte diese nicht initialisiert sein??


              Weil keiner das dan gemacht hat. Z.B.

              In WinMain()

              Application->CreateForm(__classid(TMainForm), &MainForm);

              Und dann in die MainForm ein TButton mit:

              Code:
              void __fastcall TMainForm::Button1Click(TObject *Sender)
              {
                TForm1 *MyForm = new TForm1 ( this );
              
                MyForm->Show();
              }
              Mann kann dann mehrere Instancen von TForm1 machen und keine
              hat etwas zu tun mit die globale variabele TForm1 *Form1; die die IDE
              bereitgesteld hat.


              Nur wenn Form1 die Application->MainForm ist ist sie garantiert in WinMain
              mit
              Application->CreateForm(__classid(TForm1), &Form1);
              initialisiert und auch whenn sie autocreated ist (wie die mainform immer).



              Er hätte auch this nehmen können.....
              Dass ist natürlich ok. Unvergleichbar aber.

              Comment


              • #8
                Joo, wenn man das manuell macht sollte man etwas schauen....
                Christian

                Comment

                Working...
                X