Witam.
Używam Delphi XE i komponentu TADMemTable. Muszę dynamicznie utworzyć w tym komponencie kilka kolumn, w których wpisuje liczby zmiennoprzecinkowe.
Zazwyczaj tworzenie kolumny jest proste i można to zrobić przy użyciu kodu: <memTable>.FieldDefs.Add('NazwaKolumny', <TypKolumny> [,<Rozmiar>])
Ja potrzebuję stworzyć kolumnę gdzie wpiszę liczbę z dwoma miejscami po przeicnku np 15,00 i chciałbym aby właśnie te dwa zera po przecinku były widoczne w kolumnie.
Gdy tworzę kolumnę z typem danych ftFloat: <memTable>.FieldDefs.Add('kwota', ftFloat); to niestety liczba 15,00 wyświetlana jest jako liczba całkowita 15, bez zer po przecinku.
Gdy tworzę kolumnę z tym danych ftBCD: <memTable>.FieldDefs.Add('kwota', ftBCD, 15); to wszystko widać poprawnie z zerami po przecinku jednak taki sposób utworzenia kolumny sprawia, że na komponencie typu DBGrid to co wpiszemy jako argument 'NazwaKolumny' jest również wyświetlone jako opis (Caption) tej kolumny. Aby móc określić inny opis kolumny niż jej nazwa to tworzę kolumnę w taki sposób:
memDane: TADMemTable;
...
procedure AddField(AName: string; AType: TFieldType; ASize: Byte = 0; APrec: Byte = 0; ALabel: string = '');
var
NewField: TField;
FieldDef: TFieldDef;
begin
FieldDef := memDane.FieldDefs.AddFieldDef;
FieldDef.DataType := AType;
FieldDef.Name := AName;
if ASize > 0 then
FieldDef.Size := ASize;
if APrec > 0 then
FieldDef.Precision := APrec;
NewField := FieldDef.CreateField(memDane);
if ALabel <> '' then
NewField.DisplayLabel := ALabel
else
NewField.DisplayLabel := AName;
end;
// Użycie procedury AddField:
AddField('M1', ftBCD, 15, 2, 'Styczeń 2023');
Gdy wykorzystam procedurę AddField tworząc kolumnę typu ftBCD to mam błąd: memDane Type mismatch for field 'Styczeń 2023', expecting BCD actual FMTBcdField.
Natomiast gdy utworzę kolumną z typem ftFMTBcd to błędu już nie mam, ale liczba np 15,00 wyświetlana jest bez zer po przecinku.
W jaki sposób zatem utworzyć kolumnę z nazwą (M1) oraz własnym opisem (Styczeń 2023) aby liczba 15,00 wyświetlała się z zerami po przecinku?