AGB  ·  Datenschutz  ·  Impressum  







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

Frame Align := alClient funktioniert nicht

Ein Thema von Jens Hartmann · begonnen am 31. Jan 2011 · letzter Beitrag vom 4. Feb 2011
Antwort Antwort
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#1

Frame Align := alClient funktioniert nicht

  Alt 31. Jan 2011, 18:21
Hallo zusammen,

ich habe ein Frame, welches ich in ein Pagecontroll.TabSheet1 eingefügt habe. Das ganz funktioniert auch zur Entwicklungszeit ganz gut. Das Frame passt vollständig in das TabSheet. Zur Laufzeit wird jedoch der untere Teil des Frames abgeschnitten und ist nicht mehr sichtbar.

Allerdings versteh ich das nicht ganz, wenn ich doch ein Frame oder z.B. ein Panel auf einen TabSheet lege und dem Frame Align := clClient zuweise, müsste er sich doch automatisch an die Größe des TabSheets anpassen. Oder habe ich da was falsch verstanden.

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

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

AW: Frame Align := alClient funktioniert nicht

  Alt 31. Jan 2011, 18:25
Schuss ins Blaue: Der Frame wird schon die Größe des TabSheets annehmen, aber die darauf liegenden Controls werden sich vermutlich nicht an die Größe des Frames anpassen.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Frame Align := alClient funktioniert nicht

  Alt 31. Jan 2011, 19:42
Eigendlich müssten die Komponenten das aber, ich habe folgenden Aufbau...

1. Frame, darauf 1 Panel = AlClient -> Somit Größe des Frames.
2. 2Panel 1 = AlTop, 1 = AlButtom
3. Jeweils 8 Panels auf den o.g. Panels alle mit AlTop;

Die Höhe lege ich im Code Fest...
Delphi-Quellcode:
procedure TFrame1.SetPanelHeight;
var
  i : Integer;
begin
  pnlGroup1.Height := pnlGround1.Height div 2;
  pnlGroup2.Height := pnlGround1.Height div 2;
  for i := 1 to 8 do
    begin
      (FindComponent('pnl'+IntToStr(i)) as TPanel).Height := pnlGroup1.Height div 8;
    end;
  for i := 9 to 16 do
    begin
      (FindComponent('pnl'+IntToStr(i)) as TPanel).Height := pnlGroup2.Height div 8;
    end;
end;
Das sollte doch eigendlich gehen, Oder?

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.

Geändert von Jens Hartmann (31. Jan 2011 um 19:45 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

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

AW: Frame Align := alClient funktioniert nicht

  Alt 31. Jan 2011, 20:32
Eigendlich müssten die Komponenten das aber, ich habe folgenden Aufbau...

1. Frame, darauf 1 Panel = AlClient -> Somit Größe des Frames.
2. 2Panel 1 = AlTop, 1 = AlButtom
Ich würde mal eines von den beiden auf alClient setzen...
3. Jeweils 8 Panels auf den o.g. Panels alle mit AlTop;
...und hier auch eines pro Achtergruppe. Die Größe der Panels mit alClient brauchst du dann in SetPanelHeight nicht mehr explizit setzen.
Uli Gerhardt
  Mit Zitat antworten Zitat
ak-ac

Registriert seit: 10. Apr 2009
26 Beiträge
 
#5

AW: Frame Align := alClient funktioniert nicht

  Alt 31. Jan 2011, 20:44
Das Problem mit den Frames (auf Tabsheets ?!) kenne ich, da hat bei mir nur ein manuelles Refresh geholfen, damit das nach dem Anzeigen klappt (FormShow war glaube ich zufrüh)...

Meine Vermutung ist, dass Tabsheets das irgendwie nicht weitergeben und dadurch die untergeordneten Elemente keine korrekte Größe darstellen könenn.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#6

AW: Frame Align := alClient funktioniert nicht

  Alt 31. Jan 2011, 22:12
Ich habe es hinbekommen,

hier die Lösung...
Delphi-Quellcode:
procedure TFrame1.SetPanelHeight;
var
  i : Integer;
begin
  { Ground 1 }
  pnlGroup1.Height := (pnlGround1.Height div 2);
  pnlGroup2.Height := (pnlGround1.Height div 2);
  pnlGroup1.Align := ClTop;
  pnlGroup1.Left := 1;
  pnlGroup1.Top := 1;
  pnlGroup2.Left := 1;
  pnlGroup2.Top := pnlGroup1.Top + pnlGroup1.Height;
  pnlGroup2.Align := ClClient;

  for i := 1 to 8 do
    begin
      (FindComponent('pnl'+IntToStr(i)) as TPanel).Height := pnlGroup1.Height div 8;
      (FindComponent('pnl'+IntToStr(i)) as TPanel).Left := 1;
      (FindComponent('pnl'+IntToStr(i)) as TPanel).Top := 1 +
        (i * pnlGroup1.Height div 8) - pnlGroup1.Height div 8
    end;
  for i := 9 to 16 do
    begin
      (FindComponent('pnl'+IntToStr(i)) as TPanel).Height := pnlGroup2.Height div 8;
      (FindComponent('pnl'+IntToStr(i)) as TPanel).Left := 1;
      (FindComponent('pnl'+IntToStr(i)) as TPanel).Top := 1 +
        ((i-8) * pnlGroup2.Height div 8) - pnlGroup2.Height div 8
    end;
Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  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 02:08 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 by Thomas Breitkreuz