TStringGrid



  • Nein Du kannst immer nur das komplette Grid editierbar machen. Wo ist denn das Problem? Abhänging von der Spalte, in die der User klickt, machst Du das Grid editierbar, oder eben nicht editierbar.

    void __fastcall TForm_Main::STringGrid1SelectCell(TObject *Sender, int ACol,
          int ARow, bool &CanSelect)
    {
        if (ACol == 2)
            StringGrid1->Options << goEditing;
        else
            StringGrid1->Options >> goEditing;
    }
    


  • Hallo

    Die Bedingung hat natürlich zwei Seiten. Desweiteren ist das mit dem "reinschieben" von Werten in VCL-Properties nicht so einfach.

    void __fastcall TForm_Main::STringGrid1SelectCell(TObject *Sender, int ACol,
          int ARow, bool &CanSelect)
    {
        if (ACol == 2)
        {
            StringGrid1->EditorMode = true;
            StringGrid1->Options = StringGrid1->Options << goEditing;
        }
        else
        {
            StringGrid1->EditorMode = false;
            StringGrid1->Options = StringGrid1->Options >> goEditing;
        }
    }
    

    bis bald
    akari



  • Ach klar,
    danke euch. Da hätte ich ja drauf kommen müssen.



  • StringGrid1->Options = StringGrid1->Options << goEditing;
    

    Zu meiner eigenen großen Überraschung funktioniert es in diesem Fall auch ohne die Zuweisung, also so, wie ein meinem Beispiel. Zumindest im BCB6.



  • Hallo

    Hm, im BCB5 gehts auch ohne extra Zuweisung... erstaunlich.

    bis bald
    akari



  • Habe nun ein weiteres Problem, welches ich nicht ganz beheben kann.
    Möchte ja nun die einegegeben Werte Überprüfen ob sie
    1. Zahlen Werte sind
    2. Nicht unter bzw. über einen Wertebereich kommen.

    In einem meiner Verusche habe ich dieses hier probiert. Leider völlig blöde und unpraktisch. Zusätzlich auch noch fehlerhaft.

    void __fastcall TForm_Main::STringGrid1SetEditText(TObject *Sender, int ACol,
          int ARow, const AnsiString Value)
    {
         if (Value < 0 || Value >1)
         {
          	STringGrid1->Cells[ACol][ARow] = "0";
         }
    }
    

    Hat jemand von euch ein Tip oder ein Beispiel?



  • Hallo

    siehe die Funktion StrToIntDef in der BCB-Hilfe

    bis bald
    akari



  • Klasse, das war ein guter Tip.
    Danke dir.



  • Das ist mir shon fast peinlich, aber ich habe noch eine, für euch, einfache Frage.

    Ich möchte nun die Anzahl der einzugebenen Zeichen auf eins beschränken und gleichzeitig verhindern das Buchstaben eingegben werden könnnen.

    Könntet ihr mir dabei nochmal helfen? Verspreche, ich werde versuchen dann nicht mehr fragen.
    Das ganze muss wohl bei 'OnSetEditText' passieren?



  • Hallo

    Siehe den Event TStringGrid::OnGetEditMask. Dort gibst du eine Maske an, wie du es bei TMaskEdit machen würdest.

    bis bald
    akari


Anmelden zum Antworten