AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Frame Align := alClient funktioniert nicht

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

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

AW: Frame Align := alClient funktioniert nicht

  Alt 31. Jan 2011, 19: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
 
#2

AW: Frame Align := alClient funktioniert nicht

  Alt 31. Jan 2011, 21: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
Benutzerbild von uligerhardt
uligerhardt

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

AW: Frame Align := alClient funktioniert nicht

  Alt 31. Jan 2011, 21:42
Ich habe es hinbekommen,
Cool.

Noch etwas Genörgel am Rande. Statt sowas:
Delphi-Quellcode:
  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;
nimm doch lieber eine Variable:
Delphi-Quellcode:
var
  pnl: TPanel;

  for i := 1 to 8 do
  begin
    pnl := (FindComponent('pnl'+IntToStr(i)) as TPanel);
    pnl.Height := pnlGroup1.Height div 8;
    pnl.Left := 1;
    pnl.Top := 1 + (i * pnlGroup1.Height div 8) - pnlGroup1.Height div 8
  end;
So ist es lesbarer und schneller.
Und im konkreten Fall, wo du mehrere Positionsproperties auf einmal setzt, würde ich mir mal SetBounds anschauen.
Uli Gerhardt
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Frame Align := alClient funktioniert nicht

  Alt 1. Feb 2011, 07:56
Hallo,

hier ist noch ein Tipp: TGridPanel

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

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

AW: Frame Align := alClient funktioniert nicht

  Alt 3. Feb 2011, 19:58
Hallo und schönen guten Abend zusammen,

erstmal besten Danke für die guten Ideen. Ich habe allerdings ein echt seltsames Verhalten beim Gridpanel.

Die Kompo ist soweit ich das sehen kann, genau die Lösung die ich Suche. Allerdings nachdem ich Sie eingerichtet habe und als Frame implementiert habe, kommt beim kompilieren immer unten angehangener Fehler.

Das seltsame ist, das das erst nach schließen des Projektes auftritt. Ich erstelle ein Grid Panel mit 8 Gleichen Feldern. Die Prozentualle Einteilung mach ich im Constructor des Frames...
Delphi-Quellcode:
constructor TFrame2.Create(AOwner: TComponent) ;
var
  i : Integer;
begin
  inherited Create(AOwner);
  grindpnlGround.ColumnCollection.BeginUpdate;
  for i := 0 to 3 do
    begin
      grindpnlGround.ColumnCollection[i].SizeStyle := ssPercent;
      grindpnlGround.ColumnCollection[i].Value := 25;
    end;
  for i := 0 to 1 do
    begin
      grindpnlGround.RowCollection[i].SizeStyle := ssPercent;
      grindpnlGround.RowCollection[i].Value := 50;
    end;
  grindpnlGround.ColumnCollection.EndUpdate;
end;
Wie gesagt, das ganze funktioniert bis nach dem schließen des Projektes. Öffne ich das Projekt erneut, ist der Fehler da. Löschen ich dann alle GridPanels, und lege Sie neu ins Frame, geht alles wieder, allerdings wieder nur bis zum nächsten schließen.

Irgend jemand eine Idee.

Gruß Jens
Angehängte Grafiken
Dateityp: png GridPanel.PNG (15,3 KB, 22x aufgerufen)
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  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 4. Feb 2011, 14:15
Eventuell doch jemand eine Idee. Ich habe das ganze jetzt noch mehrmals in allen möglichen Varianten durchgespielt, und immer mit dem selben Ergebnis.

Das Problem ist ja, das es bis zum schließen immer ohne Problem funktioniert.

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

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.355 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Frame Align := alClient funktioniert nicht

  Alt 4. Feb 2011, 14:37
Tritt der Fehler auch auf, wenn Du alles nach inherited ausklammerst?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Antwort Antwort

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 08:34 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