In DBGrid eine CheckBox ???



  • Hallo!

    Ich habe in meinem Projekt o. g. Beispiel eingebaut. Die CheckBox wird auch richtig im DBGrid angezeigt. Leider ist bei allen Datensätzen kein Haken gesetzt obwohl in der Datenbank alle Datensätze den Status "Wahr" haben. Auch beim Draufklicken passiert garnichts.

    Hier mein Code:

    void __fastcall Tf_kundenverwaltung::DBGrid2CellClick(TColumn *Column)
    {
    	if (Column->FieldName == "ColumnBool")
    	{
    		ADOQuery2->Edit();
    		Column->Field->AsBoolean = !Column->Field->AsBoolean;
    		ADOQuery2->Post();
    		ADOQuery2->Requery();
    	}
    }
    
    void __fastcall Tf_kundenverwaltung::DBGrid2ColEnter(TObject *Sender)
    {
    	if (DBGrid2)
    	{
    	TDBGridOptions go(DBGrid2->Options);
    		go = (DBGrid2->SelectedField->FieldName == "ColumnBool" ? go >>
    			dgEditing : go << dgEditing);
    		DBGrid2->Options = go;
    	}
    }
    
    void __fastcall Tf_kundenverwaltung::DBGrid2ColExit(TObject *Sender)
    {
    	if(DBGrid2->SelectedField->FieldName == DBCheckBox1->DataField)
    		DBCheckBox1->Visible = false;
    }
    
    void __fastcall Tf_kundenverwaltung::DBGrid2DrawColumnCell(TObject *Sender, const TRect &Rect,
    		  int DataCol, TColumn *Column, TGridDrawState State)
    {
    	// DBCheckBox in DBGrid setzen
    	if(Column->FieldName == "GEBUEHR_KD_STATUS")
    	{
    		UINT Checked = (Column->Field->AsBoolean && !Column->Field->IsNull ?  DFCS_BUTTONCHECK | DFCS_CHECKED : DFCS_BUTTONCHECK);
    		TRect DrawRect;
    		if (State.Contains(gdFocused))
    		{
    			if (Column->Field->FieldName == DBCheckBox1->DataField)
    			{
    				DBCheckBox1->Left = Rect.Left + DBGrid2->Left + 2;
    				DBCheckBox1->Top = Rect.Top + DBGrid2->Top + 2;
    				DBCheckBox1->Width = Rect.Right - Rect.Left;
    				DBCheckBox1->Height = Rect.Bottom - Rect.Top;
    				DBCheckBox1->Visible = True;
    			}
    		}
    		else
    		{
    			if (Column->Field->FieldName == DBCheckBox1->DataField)
    			{
    				DrawRect=Rect;
    				InflateRect(&DrawRect,-1,-1);
    				DBGrid2->Canvas->FillRect(Rect);
    				DrawFrameControl(DBGrid2->Canvas->Handle, &DrawRect, DFC_BUTTON, Checked);
    			}
    		}
    	}
    }
    

    Falls jemand eine Idee hat woran das liegen könnte wäre ich über Hilfe sehr dankbar.

    Gruss

    Maik


Anmelden zum Antworten