AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Änderungen im TFrame auf einem TForm verhindern.

Änderungen im TFrame auf einem TForm verhindern.

Ein Thema von bernau · begonnen am 28. Apr 2019 · letzter Beitrag vom 30. Apr 2019
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.004 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Änderungen im TFrame auf einem TForm verhindern.

  Alt 28. Apr 2019, 09:48
Ich habe ein TFrame auf dem verschiedene Komponenten positioniert sind. Je nach Einstellung werden die Komponenten anders angeordnet. Das mache ich im Create des Frames.

Wenn das Frame auf ein Form platziert wird funktioniert auch alles soweit. Wenn aber im Form eine Komponente des Frame "aus versehen" leicht verschoben wird, dann bleibt diese Komponente dort platziert. Eine Änderung im Create ist nicht mehr möglich. Erst wenn ich "Geerbte Einstellungen wiederherstellen" (Rechter Mausklick auf die Komponente im TForm) verwende, oder den entsprechenden Eintrag in der DFM des Forms lösche, dann funktioniert auch die Änderung im Create wieder.

Ist aber lästig. Vor allem, wenn man die zufällige Änderung nicht bemerkt.

Gibt es die Möglichkeit die Änderungen der Framekomponenten auf der Form grundsätzlich zu verhindern. Oder gibt es eine "vererbte" Funktion im Frame, die aufgerufen wird, nachdem die Form komplett erzeugt wurde?
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
6.896 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Änderungen im TFrame auf einem TForm verhindern.

  Alt 28. Apr 2019, 10:54
Es gibt eine Option generell die Elemente im Form-Designer vor Verschieben zu schützen: Bearbeiten - Elemente fixieren

Speziell nur für Frame-Instanzen ist mir nichts dergleichen bekannt. Aber das klingt nach einer interessanten Aufgabe für ein Plugin
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.004 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Änderungen im TFrame auf einem TForm verhindern.

  Alt 28. Apr 2019, 11:18
Es gibt eine Option generell die Elemente im Form-Designer vor Verschieben zu schützen: Bearbeiten - Elemente fixieren
Ja. aber diese Option fixiert alle Formulare.


Aber das klingt nach einer interessanten Aufgabe für ein Plugin
Juhu. Lass mich wissen, wenn du einen Ansatz hast.


Im Augenblick helfe ich mit mit Resize des Frames. Das wird irgendwie immer aufgerufen. Beim ersten Durchlauf verschiebe ich dort die Komponenten und merke mir das mit einem Flag, damit diese nur einmal ausgerichtet werden. Ist aber eine Krücke und ein Property "FixateComponents" im Frame wäre schon eine feine Sache.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
457 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Änderungen im TFrame auf einem TForm verhindern.

  Alt 28. Apr 2019, 14:11
Ich mache das immer über die Sourcecode-Verwaltung: Beim Einchecken die DFM-Dateien anschauen und alle Änderungen innerhalb des/der Frames rückgängig machen.

Ist zwar nicht ideal, aber hilft. Das kann man natürlich jederzeit machen, nicht nur beim Einchecken.

Alternativ hilft nur ein Plugin (ich kenne keines, weiss auch nicht, ob es überhaupt möglich ist) oder Frames nie im Designer zu einem Formular hinzufügen sondern immer erst zur Laufzeit. Beim Design dann Panels als Platzhalter verwenden. (Es soll sogar Leute geben, die statt Panels ein Image mit einem Screenshot des Frames verwenden.)
Thomas Mueller
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Änderungen im TFrame auf einem TForm verhindern.

  Alt 28. Apr 2019, 20:53
Ich mache das immer über die Sourcecode-Verwaltung: Beim Einchecken die DFM-Dateien anschauen und alle Änderungen innerhalb des/der Frames rückgängig machen.
Ich ebenso. Zwar ziemlich schade da man die gleiche Zeit auch für etwas Sinnvolles verwenden könnte, aber immer noch zeiteffektiver als sich mit den Folgen herumzuplagen 😎

oder Frames nie im Designer zu einem Formular hinzufügen sondern immer erst zur Laufzeit. Beim Design dann Panels als Platzhalter verwenden. (Es soll sogar Leute geben, die statt Panels ein Image mit einem Screenshot des Frames verwenden.)
"nie" finde ich jetzt etwas extrem. Mann kann doch sowohl, als auch.

Trotzdem ein sinnvoller Ansatz, besonders bei großen/verschachtelten Frames. Weiterer Bonus: Der Formular-Designer baut sich schneller auf.
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.664 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Änderungen im TFrame auf einem TForm verhindern.

  Alt 28. Apr 2019, 23:44
Ich glaube mich zu erinneren, dass Frames sich so verhalten, wenn man eine Komponente draus macht.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.004 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: Änderungen im TFrame auf einem TForm verhindern.

  Alt 29. Apr 2019, 09:01
Ich mache das immer über die Sourcecode-Verwaltung: Beim Einchecken die DFM-Dateien anschauen und alle Änderungen innerhalb des/der Frames rückgängig machen.
Ich ebenso. Zwar ziemlich schade da man die gleiche Zeit auch für etwas Sinnvolles verwenden könnte, aber immer noch zeiteffektiver als sich mit den Folgen herumzuplagen 😎

oder Frames nie im Designer zu einem Formular hinzufügen sondern immer erst zur Laufzeit. Beim Design dann Panels als Platzhalter verwenden. (Es soll sogar Leute geben, die statt Panels ein Image mit einem Screenshot des Frames verwenden.)
"nie" finde ich jetzt etwas extrem. Mann kann doch sowohl, als auch.

Trotzdem ein sinnvoller Ansatz, besonders bei großen/verschachtelten Frames. Weiterer Bonus: Der Formular-Designer baut sich schneller auf.
Ich bin tatsächlich ein Freund vom Erzeugen von Frames während der Laufzeit. Vor allem wenn Frames auf einem Pagecontrol platziert sind und die ganze Clientfläche benutzen. In ein paar Fällen sind aber Frames zwischen anderen Frames oder sonstigen Komponenten platziert. Dann ist es schon besser, diese zur Designtime zu platzieren.

Beim Einchecken in die Sourcecodeverwaltung kann man zwar die Änderungen kontrollieren. Aber mal ganz ehrlich...... an der Stelle will ich nichts mehr kontrollieren.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Änderungen im TFrame auf einem TForm verhindern.

  Alt 29. Apr 2019, 09:18
Von wollen hat auch niemand gesprochen 😓

Es geht weniger darum den Quelltext schön zu machen, sondern die Vielzahl an Problemen die auftreten kann wenn man es nicht tut.

Beispiel:
  1. Packe ein GridPanel auf Frame A
  2. Stecke eine Komponente X in das Gridpanel, und gebe ihm z.B. RowSpan = 2
  3. Platziere Frame A auf Formular B

Spätestens nach 5 Minuten ist die RowSpan = 2 -Angabe rausgefallen. Das ist schon sichtbar wenn man das nächste mal das Projekt aufmacht und Formular B öffnet. Der Bug steckt schon seit Jahren in der VCL und sogar FMX.

Anderes Beispiel:
ImageLists. Die werden auch gerne redundant nochmal auf die Formulare kopiert. Wenn man nicht aufpasst hat man Grafiken dann doppelt und dreifach in die Anwendung eingelinkt.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.554 Beiträge
 
Delphi 6 Enterprise
 
#9

AW: Änderungen im TFrame auf einem TForm verhindern.

  Alt 29. Apr 2019, 09:39
Ich frag mal halb ketzerisch: Wenn man ein TFrame zur Designtime platziert. Hätte man nicht ein TPanel nehmen können?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.004 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#10

AW: Änderungen im TFrame auf einem TForm verhindern.

  Alt 29. Apr 2019, 11:33
Ich frag mal halb ketzerisch: Wenn man ein TFrame zur Designtime platziert. Hätte man nicht ein TPanel nehmen können?
???
meinst du das Frame zur Designzeit auf das Panel platzieren, oder das Frame zur Laufzeit erzeugen und dann auf das Panel platzieren?
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 23:04 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