AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi FMX Android Grid bearbeiten schlägt im 2. Durchgang fehl

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

Ein Thema von Devil1925 · begonnen am 14. Jun 2016 · letzter Beitrag vom 21. Jun 2016
Antwort Antwort
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, 08: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 09:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Devil1925
Devil1925

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

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

  Alt 16. Jun 2016, 08:16
Ich habe mal weiter getestet und bin zu dem Ergebnis gekommen, das Phänomen auch auftritt, wenn ich z.B. nur die Spaltennamen verändere.

Ich habe Folgenden Code eingefügt und auch hier tritt der Fehler beim zweiten Durchlauf in der zweiten Spalte auf:

Delphi-Quellcode:
  for I := 0 to GRD.ColumnCount -1 do
  Begin
    Name := GRD.Columns[i].Header;
    GRD.Columns[i].Header := Name + '1';
  End;
Hier bekomme ich die Zugriffsverletzung beim Ausführen des Folgenden Elements:

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

Wenn hier irgendjemand eine Idee hat wäre das Super! Wie wage diese auch sein mag... ich komme hier einfach nicht weiter!
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.
  Mit Zitat antworten Zitat
Benutzerbild von Devil1925
Devil1925

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

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

  Alt 21. Jun 2016, 13:57
Ich habe nun eine "Lösung" des Problems Gefunden: Ich habe das Grid auf ein Anderes Formular ausgelagert, welches ich beim Schliessen auf NIL setze GRD := nil; .
Damit ist jeder Aufruf des Formulars quasi der erste und es Funktioniert.
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf