Announcement

Collapse
No announcement yet.

Nur eine Spalte bearbeiten im DBGrid

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

  • Nur eine Spalte bearbeiten im DBGrid

    Guten Morgen!
    Das ist vieleicht ein simples Problem, ich komme aber im Moment nicht weiter.<br>
    Ich füge in eine Tabelle Daten ein, die später in einem DBGrid angezeigt werden. Es darf aber nur <br>
    ein Feld bearbeitet und keine weiteren Datensätze hinzugefügt werden. Wenn ich DBGrid anzeige<br>
    befindet sich die Datenmenge immer Browsemodus, nur wenn ich neue Datensätze hinzufügen würde,<br>
    kann ich diese editieren. DBGrid->EditorMode = true; TTable->Edit() alles schon probiert.<br>
    Hilft nur beim ersten anklicken, danach bin ich wieder im Browsemodus.<br>
    Gleichzeitig möchte ich dieses Feld für eine Berechnung benutzen. In welche Funktion klinke ich mich <br>
    am besten ein ? DBGrid,TTable oder DataSource ?<br>
    <br>
    Gruß Fred

  • #2
    Hallo Fred,

    hoffentlich verstehe ich das einigermaßen richtig, dann kannst Du vielleicht was mit
    Table->FieldByName("...")->ReadOnly=false;(bzw. true)
    machen.

    Gruß Irmgar

    Comment


    • #3
      Danke Irmgard,<br>
      diese Einstellung habe ich schon bei TBGridColumn vorgenommen,<br>
      so das alle anderen Spalten nicht editierbar sind.<br>
      Mein Hauptproblem ist, daß TBGrid immer im Browsemodus ist. Normalerweise sollte <br> ich Daten bearbeiten können.<br>
      Beim 1.Aufruf setze ich EditorMode auf true-funktioniert auch, aber wenn ich <br>
      irgendwo anders hinwechsle, bin ich wieder raus.<br>
      <br>

      Gruß Fre

      Comment


      • #4
        Was ist mit der DBGrid Option dgEditing ? true oder false ? Versuchst Du, die während der Laufzeit zu ändern ? Beim Builder 1.0 und 4.0 geht das nicht
        Günther

        Comment


        • #5
          Hi!<br>
          dgEditing ist im Objectinspector gesetzt -> true.(CB4.0)<br>
          Wie gesagt, wenn ich neue Datensätze hinzufüge klappt es,<br>
          aber das fange ich für die Endversion ab.<br>
          Großes ?.<br>
          <br>
          Gruß Fre

          Comment


          • #6
            hatte ein ähnliches Problem... <br>
            habe ein DBEdit genommen und dort ->Text beschrieben. <br>
            DBEdit unter DataSource und DataField Table1 und der gewünnschten Spalte zuweisen... <br>
            und dann ungefähr so:<br>
            {<br>
            Table1->Open(); //öffnet die Datentabelle<br>
            Table1->Edit(); //macht die Tabelle editierbar<br>
            int i = 0; //beliebige Zählvariable<br>
            for (i=0;i<=Table1->RecordCount;i++) //RecordCount ist der <br>
            //"Datensatzzähler" <br>
            {<br>
            switch(i)<br>
            case 0BEdit1->Text = "A"; break; // ...irgendwas <br>
            case 1BEdit1->Text = "B"; break; // ins DBEdit<br>
            : // schreiben...<br>
            :<br>
            case 25BEdit1->Text = "Z";break;<br>
            Table1->Post(); //Das im DBEdit (und im DBGrid<br>
            //stehende im DS speichern<br>
            }<br>
            //weiter im Code ;-)<br>
            }<br>
            <br>
            hoffe das hilft dir. (und ich hoffe, daß ich keine großen Fehler eingebaut habe... hab meinen Source gerade nicht da...)<br>
            Grüßle Iv

            Comment


            • #7
              Danke an alle Meinungen.<br>

              Ich bin in meiner Lösung etwas brutaler vorgegangen.<br>
              In OnKeyDown rufe ich einfach immer wieder DB->Edit() auf.<br>
              Ist zwar nicht schön, aber funktioniert.<br>

              Gruß Fre

              Comment


              • #8
                Hi Fred,
                Setzte im Spateneditor des DBGrids die <br>
                Eigenschaft ReafOnly auf True für die Felder, <br>
                die nicht editierbar sein sollen.<br>
                Das kannst du auch während der Laufzeit machen<br>
                DBGrid1.Columns[0].ReadOnly := True;<br>
                Gruß<br>
                Matthia

                Comment


                • #9
                  Danke Matthias!<br>

                  <br>
                  Mitlerweilen mache ich es ganz anders, da man ja sowieso keine<br>
                  float Zahlen maskieren kann, habe ich ein TEdit umgebaut welches<br>
                  immer auf Show&Hide gesetzt wird. So wie der InplaceEditor, auf den<br>
                  man ja leider keinen Zugriff hat.<br>
                  Genause bescheuert ist borland's programmierung mit anderen funktionen.<br>
                  Versuche mal eine Row zu löschen oder zu verschieben.<br>
                  Da gibt es fertige funktionen auf die Du nicht zugreifen kannst.<br>
                  Absolut Plam,Plam die Programmierer. Das Fahrad wird zweimal erfunden.<br>
                  <br>

                  Gruß Fre

                  Comment

                  Working...
                  X