in unterschiedliche Edit-Felder eintragen lassen, aber wie?



  • first of all:
    ich bin absoluter Anfänger und kann keine Nackenschläge gebrauchen. Also bitte nur zielführende Tips oder Hilfestellungen geben, Danke.
    Ich nutze, nein besser beginne gerade mit C++ Builder 201o.
    Ich habe es geschafft durch anklicken eines Edit-Feldes in Form1 ein neues Formblatt aufzurufen, auf dem sich mehrere Buttons befinden.
    Durch anklicken eines dieser Button wird ein gewisser Wert in das Edit Feld in Form1 geschrieben und Form2 wieder geschlossen.
    Jetzt mein Problem, ich habe mehrere Edit-Felder in Form1 und möchte das für jedes einzelne Edit-Feld auch so haben, bleibe jedoch im Moment daran hängen, daß ich ja in Form2 für alle Button definiert habe, immer in Edit1 zu schreiben.
    Habe schon verschieden Sachen mit "if" ausprobiert, komme allerdings nicht weiter, kann jemand helfen?
    hier noch ein kurzer Auszug aus Form2

    //---------------------------------------------------------------------------

    #include <vcl.h>
    #pragma hdrstop

    #include "Unit2.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm2 Form2;
    //---------------------------------------------------------------------------
    __fastcall TForm2::TForm2(TComponent
    Owner)
    : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm2::Button1Click(TObject *Sender)
    {
    Form1->Edit1->Text=IntToStr(1);
    Form2->Close();
    }
    //---------------------------------------------------------------------------

    void __fastcall TForm2::Button2Click(TObject *Sender)
    {

    Form1->Edit1->Text=IntToStr(2);
    Form2->Close();

    }
    //---------------------------------------------------------------------------



  • Ciao Holger

    Möglicherweise ist switch das was du suchst. Mit dem kannst du mehrere ifs hintereinander erstellen.

    Hast du das schon erlebt, dass man dir Nackenschläge verpasst hat?

    Gruss Renato



  • Wenn du je Editfeld einen zugehörigen Button hast, dann mußt du im entsprechenden Button-Click auch das dazu passende Editfeld ansprechen:
    Button1Click: Edit1
    Button2Click: Edit2

    PS: Du solltest den Komponenten von Anfang an sprechende Namen geben!!!



  • Hallo Th69,
    Jeder Button soll in jedes Edit-Feld seinen Wert eintragen können, also funktioniert Dein Tip so nicht, Schade.
    Danke für den Hinweis mit den eindeutigen Namen, ich fange ja gerade erst an,-))



  • Woran unterscheidest du denn, in welches Editfeld der Wert eingetragen werden soll?

    Auch (oder gerade) weil du Anfänger bist, solltest du nicht von einem Dialogfenster eine Änderung an einer Hauptform durchführen. Besser ist der umgekehrte Weg:

    // in Hauptform (Form1)
    dialogform.ShowDialog(this); // Form2
    
    Edit1->Text = dialogform.GetValue();
    

    Die DialogForm sollte also nur eine Funktion bereitstellen, welche den Wert (bzw. String) bereitstellt.
    So entscheidet die aufrufende Funktion (Editfeld-Click), in welches Feld der Text geschrieben werden soll (du kannst sogar dann nur eine Ereignisfunktion für alle Editfelder benutzen und anhand der 'sender'-Variablen unterscheiden).

    Solltest du doch eine nicht-modales Form haben wollen, so benutzt man dafür Ereignisse (events).



  • Hm, ich wollte durch das Anklicken des jeweiligen Edit-Feldes in Form1 immer wieder das gleiche Form2 aufrufen und so die werte aus Form2 übernehmen. Scheinbar muss man ander herum denken??
    darf ich per mail in Kontakt bleiben?



  • Hallo zusammen

    Was auch möglich währe, ein Array mit TEdit Komponenten. Diese müsste man aber dynamisch erstellen. So könnte man dann durch alle Editfelder iterieren.

    Zu dir Holger habe ich noch eine Frage:
    Beginnst du mit C++ oder dem C++ Builder? Fallst du mit C++ beginst, dann würde ich dir empfehlen zu erst mit einer Konsolenanwendung zu beginnen. Denn so lernst du die Strucktur von C++ kennen. Denn C++ zu lernen mit einer Builder Applikation halte ich für schwierig.

    Gruss Renato



  • Hallo Renato,
    ich wollte extra mit einer objektorientierten Software anfangen, da man da ja was basteln kann, so mit Labeln, Button usw. (wenn man es kann, was offensichtlich noch lange nicht der Fall sein wird...) eben noch blutiger Anfänger, aber hartnäckig 🙂



  • Ciao Holger

    C++ ist ein objektorientierte Programmiersprache. Du kannst auch in einer Konsolenanwendung objektorientiert programmieren. Wenn du gleich mit einem Windowsprogramm beginst, wirst du schnell einmal enteuscht aufgeben, weil du die Zusammenhänge nicht siehst.

    Wenn du Programmieren lehrnen möchtest, dann muss du dir zu erste ein gutes Fundament erarbeiten. Dabei spielt die Programmiersprache nicht eine so wichtige Rolle.

    Gruss Renato


Log in to reply