Hallo,
erst mal Danke für die Antwort. In der Demo wird im Prinzip nichts anderes gemacht, als das was ich schon habe.
Ich habe auf der Form nur die Orpheus-Komponenten für Table, Zeile, Spalte und für Strings und CheckBox platziert, aber nicht untereinander zugewiesen. Das passiert erst zur Laufzeit, u.a. in der Prozedur 'FormActivate'. Hier wird ein Array mit den Spaltennamen durchlaufen und für jede Spalte der zugehörige Datentyp aus einer Liste ermittelt.
Delphi-Quellcode:
procedure TForm.FormActivate;
begin
// Code gekürzt
SetGridColumns;
end;
procedure TForm.SetGridColumns;
begin
// Code gekürzt
for ixField := 1 to MaxPosArray do begin
ocFeldTyp := MeldeListe[0].FieldTypeOf(FeldArray[ixField, 2]);
if (ocFeldTyp <> vftBool)
then begin
Table.Columns.DefaultCell[ixField - 1] := TCField_StringLeft;
end
else begin
Table.Columns.DefaultCell[ixField - 1] := TCField_Check;
end;
end;
end;
In der Prozedur 'GetCellData' soll dann das Grid gefüllt werden (Code gekürzt):
Delphi-Quellcode:
procedure TForm1.TableGetCellData(...);
begin
// Code gekürzt
Data := nil;
if ((RowNum > 0) and (RowNum <= Table.RowLimit))
then begin
bFeldState := false;
sFeldName := FeldArray[ColNum + 1, 2];
ocFeldTyp := pMeldung.FieldTypeOf(sFeldName);
if (ocFeldTyp <> vftBool)
then begin
sFeldText := pMeldung.getString(sFeldName);
Data := @sFeldText;
end
else begin
bFeldState := pMeldung.getBoolean(sFeldName);
Data := @bFeldState;
end;
end;
end;
Die Strings werden auch korrekt angezeigt, nur die Checkboxen bleiben eben leer und repräsentieren damit immer einen False-Wert. Muß ich vielleicht noch einen Bezug über TCheckBoxState herstellen ?
Mike