Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Probleme beim Wechsel auf Seattle (https://www.delphipraxis.net/188535-probleme-beim-wechsel-auf-seattle.html)

greenmile 14. Mär 2016 09:27


Probleme beim Wechsel auf Seattle
 
Hallo zusammen,

ich wollte "mal eben" mein Projekt unter Seattle compilieren, leider lief es (wie man es bei Delphi ja kennt) nicht schmerzfrei. Natürlich sind einige Funktionen/Prozeduren mal wieder umgezogen, ein nerviges, aber handelbares Thema. Allerdings zeigt mein TGridPanelLayout nun nichts mehr an. Im Designer ist alles ok, zur Laufzeit ist da einfach nichts. Dann startet es unter Android nicht mehr, es wird direkt nach dem Start wieder beendet. -cleaninstall, Deinstallation, Bereitstellung/Auf Standard habe ich schon versucht, es werden auch keine zusätzlichen Dateien mitgegeben. Wenn ich es unter Win32 starte dann läuft es zwar an, dafür ist mein TGridPanelLayout leer. Im Debugger bekomme ich keine Fehlermeldung beim Start, es ist einfach weg.

Im Strukturaufbau ist es so aufgebaut (4 x nebeneinander):

TTabControl => TTabItem => TPanel => TGridPanelLayout => TPanel => TRectangle => TImage

Alle anderen Tabs zeigen den Inhalt korrekt, es liegt also nicht am TTabControl.
Hatte jemand dieselben Probleme und kann mir ev einen Tipp geben?

PS: Da anscheinend die QS bei Embarcadero unbesetzt ist: Wo muss man sich bewerben?

greenmile 14. Mär 2016 18:51

AW: Probleme beim Wechsel auf Seattle
 
Inzwischen bin ich der Lösung ein wenig näher gekommen, das GridPanelLayout darf in Seattle keinem Panel untergeordnet sein, in XE8 ging das noch. Jetzt habe ich aber das Problem, dass TRectangle, die einer GridPanelLayout Section untergeordnet sind, die Größe nicht behalten. Egal was ich im Designer setze, sie haben zur Laufzeit die Höhe 0. Ich kann aber in FormCreate die Größe setzen, dann wird sie akzeptiert. Es wird zwar mit Sicherheit wieder eine tolle Erklärung geben warum das so ist. Aber Sorry, geht garnicht! In der Changeslist steht nix darüber.

Das es unter Android nicht mehr startete lag an der Template.XML, die musste neu erzeugt werden.

Rollo62 16. Mär 2016 11:38

AW: Probleme beim Wechsel auf Seattle
 
Woher hast du den das GridPanelLayout nicht auf einen Panel liegen darf ?

Ich mache es so das ich die Row/Col Grössen im Code manuell neu anlege, auf den Designer verlasse ich nicht mehr.
Das ist zwar mehr Arbeit, aber da weiss ich wenigstens was passiert und kann einigermassen debuggen.

Siehe unten ist ein Beispiel, auch ein Experiment von vielen, aber das funktioniert im Moment ganz gut ohne Probleme.

Delphi-Quellcode:
procedure TS4ImageViewKeyfield.Keyfield_Panel(iCols, iRows : Integer);
var
  I: Integer;
  btNew: TSpeedButton;
begin

    if FGridPanelLayout.ColumnCollection.Count > 0 then
    begin
      Keyfield_Clear;

      FGridPanelLayout.ControlCollection.Clear;

      FGridPanelLayout.ColumnCollection.Clear;
      FGridPanelLayout.RowCollection.Clear;

    end;

    //##
    //## Create the Row and Column structures
    //##
    FGridPanelLayout.RowCollection.BeginUpdate;
    try
      if GIS4_DeviceInfo.IsTablet then
        FGridPanelLayout.Height := iRows * 60 * 2
      else
        FGridPanelLayout.Height := iRows * 60;

      for I := 0 to iRows-1 do
        FGridPanelLayout.RowCollection.Add;

    finally
      FGridPanelLayout.RowCollection.EndUpdate;
    end;

    FGridPanelLayout.ColumnCollection.BeginUpdate;
    try

      for I := 0 to iCols-1 do
        FGridPanelLayout.ColumnCollection.Add;

    finally
      FGridPanelLayout.ColumnCollection.EndUpdate;
    end;


    // Buttons
    for I := 0 to (iCols*iRows)-1 do
    begin

      btNew := TSpeedButton.Create( FGridPanelLayout );
      btNew.Parent       := FGridPanelLayout;
      btNew.Align        := TAlignLayout.Client;
      btNew.Margins.Left := 15;
      btNew.Margins.Right := 15;
      btNew.Margins.Top  := 15;
      btNew.OnApplyStyleLookup := EvOnApplyStyleLookup;
      btNew.OnClick           := EvOnClick;
      btNew.Visible           := False; // Initially all OFF, only enabled when Setup'd

      btNew.Text              := ''; //Format('Butti %d', [I+1]);

    end;


end;
Rollo

greenmile 16. Mär 2016 18:33

AW: Probleme beim Wechsel auf Seattle
 
Zitat:

Zitat von Rollo62 (Beitrag 1333035)
Woher hast du den das GridPanelLayout nicht auf einen Panel liegen darf?

Ich habe es so lange geändert, bis es wieder sichtbar war.

Zitat:

Zitat von Rollo62 (Beitrag 1333035)
Ich mache es so das ich die Row/Col Grössen im Code manuell neu anlege, auf den Designer verlasse ich nicht mehr.
Das ist zwar mehr Arbeit, aber da weiss ich wenigstens was passiert und kann einigermassen debuggen.

Ja, die Erfahrung habe ich leider auch gemacht. Controls, die sich in den Zellen befinden, speichern die Größe nicht, die muss ich beim FormCreate immer setzen. Nervig, war unter XE8 nicht so.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz