2016-08-08 40 views
1

Wir verschieben unsere Anwendung von XE6 nach 10.1 Berlin und wir haben eine benutzerdefinierte Raster-Stil funktioniert nicht. Als ich getestet habe, ging ich zurück zu XE6, um den Standard-Gitternetzstil & checkcellstyle zu betrachten, wenn eine TCheck-Spalte verwendet wurde und es funktioniert gut. Ich ging dann zu 10.1 Berlin und testete den Standard-Gridstyle und checkcellstyle, wenn ich eine TCheck columnum nutze und es funktioniert nicht. Das Kontrollkästchen wird nicht angezeigt, es sei denn, Sie klicken auf die Zeile im Raster .... und nachdem es angezeigt wird, können Sie es nicht aktivieren oder deaktivieren. Ist das ein Bug oder müssen wir noch etwas anderes in 10.1 Berlin machen?Grid's TCheckColumn funktioniert nicht in Delphi 10.1 Berliner firemonkey Anwendung

+0

Was sind die genauen minimalen Schritte zu reproduzieren? Was ist der * benutzerdefinierte Raster-Stil *? Ist das Raster 'DefaultDrawing' aktiviert oder deaktiviert? –

+0

Drop ein Raster auf dem Formular. Klicken Sie mit der rechten Maustaste, um Elemente hinzuzufügen. Fügen Sie eine TCheckColumn hinzu, und fügen Sie eine TStringColumn hinzu. Sie sollten die Kontrollkästchen sofort sehen, aber Sie nicht. Sie müssen zuerst auf eine Reihe klicken ... aber selbst dann können Sie das Kästchen nicht ankreuzen. Ich habe es sogar zur Laufzeit versucht und mit Daten in der Reihe. Diese Schritte funktionieren sowohl in XE6 als auch in XE7 einwandfrei. – John

+0

Entschuldigung, der benutzerdefinierte Gridstyle ist standardmäßig "gridstyle". Wenn Sie den Standard-Stil auf dem Raster wählen, finden Sie ihn – John

Antwort

3

Der Unterschied zwischen XE6 FMX.Grid und Delphi 10.1 Berlin FMX.Grid, speziell TCheckColumn, besteht darin, dass in XE6 die Kontrollkästchen auch dann sichtbar sind, wenn die verknüpfte TValueEmpty ist. Dies war bis D10 Seattle der Fall. In D10.1 Berlin wurde dies so geändert, dass die Checkboxen nur dann sichtbar sind, wenn die verknüpfte TValue entweder False oder True ist. Wenn TValueEmpty ist, wird das Kontrollkästchen nicht angezeigt.

In D10.1 Berlin der folgende Test (ähnlich dem Dokument Beispiel) funktioniert für mich:

type 
    TForm27 = class(TForm) 
    Grid1: TGrid; 
    Column1: TColumn; 
    CheckColumn1: TCheckColumn; 
    StringColumn1: TStringColumn; 
    procedure Grid1GetValue(Sender: TObject; const ACol, ARow: Integer; 
     var Value: TValue); 
    procedure Grid1SetValue(Sender: TObject; const ACol, ARow: Integer; 
     const Value: TValue); 
    procedure FormCreate(Sender: TObject); 
    private 
    { Private declarations } 
    Arr: array of TValue; 
    public 
    { Public declarations } 
    end; 

implementation 

procedure TForm27.FormCreate(Sender: TObject); 
begin 
    SetLength(Arr, Grid1.RowCount); 
end; 

procedure TForm27.Grid1GetValue(Sender: TObject; const ACol, ARow: Integer; 
    var Value: TValue); 
begin 
    if ACol = 1 then 
    Value := Arr[ARow]; 
end; 

procedure TForm27.Grid1SetValue(Sender: TObject; const ACol, ARow: Integer; 
    const Value: TValue); 
begin 
    if ACol = 1 then 
    Arr[ARow] := Value.AsBoolean; 
end; 

zur Laufzeit sieht und es wie folgt aus:

enter image description here

Hier habe ich besuchte drei Zeilen und sie zeigen die Checkboxen.

Und zum Vergleich der XE6-Test;

enter image description here

+0

Ja! Danke für die Erklärung – John