AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sollte man ColumnSpan/RowSpan noch verwenden?

Ein Thema von Der schöne Günther · begonnen am 12. Mär 2014 · letzter Beitrag vom 15. Mär 2014
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.196 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Sollte man ColumnSpan/RowSpan noch verwenden?

  Alt 12. Mär 2014, 09:48
Wird allgemein davon abzuraten, in einem Gridpanel einzelne Komponenten mehrere Zeilen und/oder Spalten füllen zu lassen? In Bild 1 ein einfaches Beispiel: Das Gridpanel ist 2x2 groß, ein Button ist zwei Spalten breit (2x1), die anderen beiden normal 1x1.

Mich treibt folgendes in den Wahnsinn: Baut man den auf Bild 1 abgebildeten Frame nun irgendwo ein, ist alles noch in Ordnung. Noch. Nach einem Programmstart geht Delphi gerne hin und entfernt die ColumSpan/RowSpan-Angaben. Sie sind einfach weg. Das Ergebnis sieht man auf Bild 2.

Ich habe keine Ahnung, nach welchem Muster das passiert. Aber es ist nachstellbar. Die Frame-Inhalt liegt immer redundant kopiert auf dem Formular und das zerpfuscht er sich gerne.

Stark verwandt ist meine Frage von vor ein paar Monaten.

Ich würde gerne wissen: Wie bastelt Ihr eure Layouts? Wenn Colspan/Rowspan so fehlerhaft ist kann damit ja kein Mensch arbeiten...
Angehängte Grafiken
Dateityp: png 1.png (7,5 KB, 53x aufgerufen)
Dateityp: png 2.png (25,7 KB, 39x aufgerufen)
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Sollte man ColumnSpan/RowSpan noch verwenden?

  Alt 12. Mär 2014, 10:54
Du hast das Glück, dass das GridPanel bei dir zumindest läuft.

Wenn ich damit auf die gleiche Weise ein Layout basteln will, setzt er die Column- und RowSpans schon beim Compilen zurück und beim Start der Anwendung erhalte ich dann die Meldung "Eine Spalte die ein Steuerelement enthält, kann nicht gelöscht werden". Bumm und fertig und das Programm terminiert mit 'ner Exception wieder zurück in die IDE.

GridPanel scheint 'ne schöne Idee zu sein, wenn sie nur funktionieren würde. Leider habe ich auch noch keine anderen Lösungen gefunden, TMS und Jedi bieten auch keine Alternativen an.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.196 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Sollte man ColumnSpan/RowSpan noch verwenden?

  Alt 12. Mär 2014, 11:56
Ja, meistens schon beim Kompilieren. Ein kleiner Trick ist, dass Formular danach zu Schließen. Er wird die DFM nicht kaputtspeichern da er ja auch der Meinung ist, dass sich nichts geändert hat.

Ich finde das Gridpanel essenziell. Ich wüsste ehrlich gesagt nicht, wie man ohne überhaupt eine Oberfläche zusammenbekäme. Aber die ColSpan/Rowspan-Eigenschaften sind irgendwie- Wenn auf eingebetteten Frames- kaputt...
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.930 Beiträge
 
Delphi 12 Athens
 
#4

AW: Sollte man ColumnSpan/RowSpan noch verwenden?

  Alt 12. Mär 2014, 13:21
Hast du schon einen QC Eintrag mit einem guten Beispiel usw. erstellt? Wenn nicht, wird das wohl kaum behoben werden.

Ich selbst hatte damit bisher nur manchmal ein wenig Probleme die Prozentwerte richtig zu definieren, aber sonst funktionierte bei mir alles. Besonders oft habe ich das aber auch nicht benutzt, in der Regel reichen mir Align, Anchors & Co vollkommen aus.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.196 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Sollte man ColumnSpan/RowSpan noch verwenden?

  Alt 12. Mär 2014, 13:41
Nein, als erstes muss ich ja wissen, ob ich etwas offensichtliches falsch mache und ob das jemand nachstellen kann.

In reinem Code kann man das nicht nachstellen. Was sollte ich schreiben? "Drücke ein paar mal F9 und F12, irgendwann wirds schon kaputt gehen."?

Bevor wir uns dem QC zuwenden: Könnte es an der Default -Direktive der entsprechenden Properties liegen?

Delphi-Quellcode:
TControlItem = class(TCollectionItem)
   [...]
   published
      property ColumnSpan: TCellSpan read FColumnSpan write SetColumnSpan default 1;
      property RowSpan: TCellSpan read FRowSpan write SetRowSpan default 1;
end;
Ich versuche derweil einmal herauszufinden, ob man eine 100%ig sichere Möglichkeit hat, dass Properties ungewollt auf 1 zurückspringen.


PS:

Hier zum Vergleich die DFMs:

Frame
Delphi-Quellcode:
object GridPanel1: TGridPanel
   [...]
    ColumnCollection = <
      item
        Value = 50.000000000000000000
      end
      item
        Value = 50.000000000000000000
      end>
    ControlCollection = <
      item
        Column = 0
        ColumnSpan = 2
        Control = Button1
        Row = 0
        RowSpan = 2
      end
   >
   object Button1: TButton
      [...]
   end
end
wird auf dem Formular mit der Zeit abgebildet durch
Delphi-Quellcode:
object Form25: TForm25
   inline Frame261: TFrame26
      [...]
      inherited GridPanel1: TGridPanel
         ControlCollection = <
            item
               Column = 0
               Control = Frame261.Button1
               Row = 0
            end
         >
        
         inherited Button1: TButton
            [...]
         end
      end
   end
end

Geändert von Der schöne Günther (12. Mär 2014 um 13:50 Uhr)
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Sollte man ColumnSpan/RowSpan noch verwenden?

  Alt 12. Mär 2014, 14:45
Nein, als erstes muss ich ja wissen, ob ich etwas offensichtliches falsch mache und ob das jemand nachstellen kann.
Wie schon gesagt: Ich kanns nachstellen. Allerdings mit 'nem komplexeren Layout, aber nach dem gleichen Prinzip.

Habs jetzt explizit nochmal nach deiner Anleitung gemacht und bei mir setzt er die ColumSpan für Button1 schon zurück, wenn ich nur Strg+F9 drücke.
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:29 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