AGB  ·  Datenschutz  ·  Impressum  







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

Frame an Hauptformular automatisch anpassen

Ein Thema von gsh · begonnen am 25. Okt 2007 · letzter Beitrag vom 30. Okt 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#1

Frame an Hauptformular automatisch anpassen

  Alt 25. Okt 2007, 16:18
Hi Leute

Ich stehe vor einem Design Problem.
Ich hab verschiedene Frames die ich in das Hauptformular einbinde je nachdem was der Benutzer halt gerade machen möchte.

So nun ist der Frame im Designer ca. 300x300 Pixel groß. (manche Frames haben andere Größen)
Und wenn ich jetzt den Frame ins Hauptformular lade das sagen wir mal 600x600 Pixel groß (kann sich ja jeder selber einstellen) dann sind die Komponenten alle links oben im Eck und der rest ist leer. Des schaut verdamt blöd aus. So nun hab ich mir gedacht wär es ganz fein wenn sich alle Kompos automatisch anpassen. So als würde ich rein zommen. in diesem fall müsste alles doppelt so groß werden aber auch die positionen müssten sich verändern das alles gleich angeordnet bleibt nur halt größer.

Habt ihr eine Idee für mich wie ich des flexibel lösen kann ... also ohne hardcodete Komponentennamen und so?


//edit: Fehler ausgebessert
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#2

Re: Frame an Hauptformular automatisch anpassen

  Alt 25. Okt 2007, 16:20
Es gibt Anchors und Constraints.
Mit den Anchors kannst Du eine Komponenten an den Seiten des Parents festmachen - will heissen: Der Abstand bleibt immer der gleiche.

Mit den Constraints kannst Du minimal- und Maximalgrößen festlegen. z.B. die 300x300 Pixel des Frames als Mindestgröße.

Spiel einfach mal damit rum - funktioniert auch alles im Designer.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Frame an Hauptformular automatisch anpassen

  Alt 25. Okt 2007, 16:29
Zusätzlich gibt es auch noch TSplitter (Palettenseite "Zusätzlich").
Damit kann der Benutzer selbst entscheiden (in vorgegebenen Grenzen) wieviel Platz er bestimmten Controls einräumt.
Damit TSplitter funktioniert, muss man verstanden haben, wie man das Property Align einsetzt.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#4

Re: Frame an Hauptformular automatisch anpassen

  Alt 29. Okt 2007, 17:28
Zitat von Phoenix:
Es gibt Anchors und Constraints.
Mit den Anchors kannst Du eine Komponenten an den Seiten des Parents festmachen - will heissen: Der Abstand bleibt immer der gleiche.

Mit den Constraints kannst Du minimal- und Maximalgrößen festlegen. z.B. die 300x300 Pixel des Frames als Mindestgröße.

Spiel einfach mal damit rum - funktioniert auch alles im Designer.
hab jetzt endlich ein problem gelöst wodurch ich mich jetzt wieder diesem zuwenden kann

also ich hab mit den Anchors rumgespielt aber dadurch bekomme ich keine gute ergebnisse:
wenn ich z.b. [akLeft,akTop,akRight,akBottom] einstelle
dann ziehen sich zwar alle buttons auf aber sie überlagern sich

oder bei [akRight,akBottom]
bleibt alles an der rechten unteren ecke hängen

außerdem funktioniert des nur im desginer aber nicht im prog.
(Das Frame ist auf einem PageControl des auf der Hauptform liegt)

Zitat von shmia:
Zusätzlich gibt es auch noch TSplitter (Palettenseite "Zusätzlich").
Damit kann der Benutzer selbst entscheiden (in vorgegebenen Grenzen) wieviel Platz er bestimmten Controls einräumt.
Damit TSplitter funktioniert, muss man verstanden haben, wie man das Property Align einsetzt.
ich glaub du hast meine frage falsch verstanden. Ich kenn TSplitter aber dafür ist er ungeeignet. Trotzdem danke
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Frame an Hauptformular automatisch anpassen

  Alt 29. Okt 2007, 17:36
Ich kenne Programmierer, die seit vielen Jahren auch kommerzielle Software mit Delphi entwickeln und bis heute nicht den Sinn und die Macht von Anchors und Align verstanden haben. Seit D2007 nutze ich dank der "Erscheinung" von Margins und Padding fast nur noch Align, dies ist besonders bei Frames "sicherer" als Anchors - hab damit schon leidige Erfahrungen gemacht.

Was ich sagen will: Sicher geht das, was du willst damit, aber du musst schon verstehen wie es alles abläuft und ggf. auch das ein oder andere Panel als Container nutzen.

Du kannst natürlich auch wirklich mit "ScaleBy" skalieren, aber ich würde sagen, dass das erst mal richtig schei** aussieht und nicht gerade dafür gedacht ist
Chris
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Frame an Hauptformular automatisch anpassen

  Alt 29. Okt 2007, 17:42
Zitat von gsh:
Zitat von shmia:
Zusätzlich gibt es auch noch TSplitter (Palettenseite "Zusätzlich").
Damit kann der Benutzer selbst entscheiden (in vorgegebenen Grenzen) wieviel Platz er bestimmten Controls einräumt.
Damit TSplitter funktioniert, muss man verstanden haben, wie man das Property Align einsetzt.
ich glaub du hast meine frage falsch verstanden. Ich kenn TSplitter aber dafür ist er ungeeignet. Trotzdem danke
Und du hast mich missverstanden.
Phoenix hat dir 2 Möglichkeiten genannt, wie du das Verhalten von Controls beeinflussen kannst.
Das Wichtigste Property ist aber Align, denn damit kann man grössenveränderliche Controls sinnvoll an den Container (Panel, Form, Frame, ...) anpassen.
Es gibt 2 Arten von Controls:
1.) grössenveränderliche (TPanel, TMemo, TListbox, TPaintBox, TCheckListBox, ...)
2.) nicht grössenveränderliche (TLabel, TEdit, TComboBox, TCheckbox, TButton, ...)
Das soll nicht heisen, dass ein TEdit nicht vergrössert werden kann, aber es macht keinen Sinn.
Wenn man ein TMemo auf Fenstergrösse bringt, dann macht das sehr wohl einen Sinn.
Also jetzt stellt sich die Frage: verwendest du hauptsächlich Controls der Kategorie 1.) oder 2.)?
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#7

Re: Frame an Hauptformular automatisch anpassen

  Alt 29. Okt 2007, 17:50
Typ2:
Das ist ja gerade das Problem da ich somit nicht gut mit Align arbeiten kann.
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Frame an Hauptformular automatisch anpassen

  Alt 29. Okt 2007, 18:00
Zitat von gsh:
Typ2:
Das ist ja gerade das Problem da ich somit nicht gut mit Align arbeiten kann.
Dann macht es aber auch wenig Sinn, hier irgendwelche Massnahmen vorzunehmen, um die Controls besser zu verteilen.
Angenommen links steht immer ein Label und jeweils rechts davon ein TEdit, TcomboBox oder TCheckBox. z.B. für irgendwelche Programmoptionen.
Wenn man den Zeilenabstand verdoppelt sieht das IMHO auch nicht (viel) besser aus.
Wenn in dem Frame die Information über die Anzahl der Zeilen und eine Zuordnung von Control zur Zeilennr vorhanden wäre, könnte man natürlich die Controls automatisch über die gesamte Fläche (vertikal) verteilen.
Wenn deine Controls aber wirklich diese Struktur haben, dann sähe doch eine Art Laufzeit Objektinspektor viel besser aus.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#9

Re: Frame an Hauptformular automatisch anpassen

  Alt 29. Okt 2007, 18:49
Zitat von shmia:
Dann macht es aber auch wenig Sinn, hier irgendwelche Massnahmen vorzunehmen, um die Controls besser zu verteilen.
Angenommen links steht immer ein Label und jeweils rechts davon ein TEdit, TcomboBox oder TCheckBox. z.B. für irgendwelche Programmoptionen.
Wenn man den Zeilenabstand verdoppelt sieht das IMHO auch nicht (viel) besser aus.
Wenn in dem Frame die Information über die Anzahl der Zeilen und eine Zuordnung von Control zur Zeilennr vorhanden wäre, könnte man natürlich die Controls automatisch über die gesamte Fläche (vertikal) verteilen.
Wenn deine Controls aber wirklich diese Struktur haben, dann sähe doch eine Art Laufzeit Objektinspektor viel besser aus.
naja des problem ist des es so alleine und verlassen aussieht wenn die ganzen optionen in der linken oberen ecke sind.
und da wäre es meiner ansicht besser wenn sie verteiltel und z.b. die buttons größer werden. vllt. auch die edit felder dann müsste man nur die schriftgröße anpassen
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#10

Re: Frame an Hauptformular automatisch anpassen

  Alt 30. Okt 2007, 08:25
Zitat von gsh:
[...] und da wäre es meiner ansicht besser wenn sie verteiltel und z.b. die buttons größer werden. vllt. auch die edit felder dann müsste man nur die schriftgröße anpassen
Habe ich nicht schon mal gesagt, dass wenn du das wirklich machen willst, es die Funktion "ScaleBy" gibt?! ...
Chris
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz