Einzelnen Beitrag anzeigen

Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
236 Beiträge
 
Delphi 10.3 Rio
 
#1

FMX Android Grid bearbeiten schlägt im 2. Durchgang fehl

  Alt 14. Jun 2016, 09:34
Hallo, Ich habe hier ein sehr interessantes Phänomen, aus dem ich nicht schlau werde.
Ich habe ein TGrid, welches ich über Livebindings mit Daten fülle.
Da das Grid dynamisch von Breite, Spaltenanzahl und Beschriftung aufgebaut wird, gebe ich einer Query ein Dynamisch zusammengebautes SQL, und öffne diese dann.
Danach bearbeite ich das Grid mit folgender Prozedur:

Delphi-Quellcode:
procedure TfrmErhebung.SpaltenAuswertenAnpassen(GRD:TGrid);
var i:Integer;
    Name:String;
Begin

  i := 0;

  while i < GRD.ColumnCount - 1 do
  Begin
    Name := GRD.Columns[i].Header;
    Name := StringReplace(Name, '~', #13#10, []);

    if Copy(Name,1,4) = 'RO_^then
    begin
      Name := TRIM(Copy(Name, 5, length(name)));
      GRD.Columns[i].ReadOnly := True;
      GRD.Columns[i].CanFocus := False;
    end;

    if Copy(Name,1,4) = 'HID_then
    begin
      GRD.Columns[i].Visible := False;
    end;

    if pos('#', Name) <> 0 then
    Begin
      GRD.Columns[i].Width := StrToInt(Copy(Name, Pos('#', Name)+1, 3))*10;
      Name := Copy(Name, 1, Pos('#', Name)-1)
    End;

    GRD.Columns[i].Header := Name;
    i := i+1;
  End;

End;
Meine Header der Spalten sehen Folgendermaßen aus:

Code:
HID_Artikel_Nr | HID_Changed_Last | HID_Changed_By | HID_IDX_Erhebung | RO_^Artikel#6 | RO_^Bezeichnung1#25 | RO_^Einheit#10 | Bst.#5 | R.o#3
Jetzt das Phänomen: Wenn ich das ganze zum ersten mal ausführe, Funktioniert alles. Führe ich es dann noch ein Zweites mal aus, bekomme beim Editieren der Zweiten Spalte (HID_Changed_Last) eine Zugriffsverletzung der Adresse 00000000 an folgender Stelle:

      GRD.Columns[i].Visible := False;
Die erste Spalte wird ohne Probleme editiert. Nachdem ich die Spalten-Reihenfolge geändert habe auf

Code:
RO_^Artikel#6 | RO_^Bezeichnung1#25 | RO_^Einheit#10 | Bst.#5 | R.o#3 | HID_Artikel_Nr | HID_Changed_Last | HID_Changed_By | HID_IDX_Erhebung
Bekomme ich immer noch eine Zugriffsverletzung der Adresse 00000000 beim Editieren der Zweiten Spalte (RO_^Bezeichnung1#25). Diesmal an Folgender Stelle:

    GRD.Columns[i].Header := Name;
Es ist also egal, welche spalte an zweiter Stelle steht! Ich kann an den Stellen auch noch Informationen über die Spalte auslesen etc.

Hat da jemand eine Idee? Ich bin inzwischen absolut am ende mit meinem Latein.

Crossposting: http://www.entwickler-ecke.de/viewtopic.php?p=701002#701002
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.

Geändert von Devil1925 (14. Jun 2016 um 10:32 Uhr)
  Mit Zitat antworten Zitat