Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#3

AW: Probleme beim Wechsel auf Seattle

  Alt 16. Mär 2016, 12:38
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
  Mit Zitat antworten Zitat