T
Hallo @Jansen, erst mal Danke für Deinen Hinweis.
bin Deinem Rat gefolgt u habe die Ereignisse OnSetText, OnGetText ausprobiert.
Dazu habe ich die Spalten der MySQL-Tabelle als persistente Felder angelegt.
Das Ganze sieht dann mit problematischer Spalte "ColumnBool" so aus:
//Unit.h
..
TSmallintField *ADODataSet2ColumnBool;
..
//Unit.cpp
..
void __fastcall TForm1::ADODataSet2ColumnBoolGetText(TField *Sender,
AnsiString &Text, bool DisplayText){
int Feldwert = Sender->AsInteger; //Sender == ColumnBool == Smallint
if (Feldwert > 0) Text = "Yes"; //Feldwert == 1
else Text = "No"; //Feldwert == 0
}
..
Okay, klappt, "Yes" bzw. "No" wird im DBGrid angezeigt. Das Ganze ist aber nach wie vor nur Pseudo-Bool. Überzeugend ist das aber noch nicht. Leider.
Deshalb nochmals für mich eine Verständnisfrage:
Eine Spalte, die in einer MySQL-DB als Tinyint (= BCB6 Smallint) formatiert ist und in der nur die Feldinhalte (0,1) vorkommen, kann ich mit BCB6 im DBGrid nicht direkt als Boolean ansprechen (da datensensitiv). Ist diese Aussage richtig?
Es ist nicht möglich z.B eine direkte Abfrage des DBGrid-Zellinhaltes, wie if (Feldwert == true) durchzuführen, es müßte dann heißen if (Feldwert ==1)? Ist das so korrekt?