AGB  ·  Datenschutz  ·  Impressum  







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

Anchor macht kompletten Nonsense!

Ein Thema von ralfiii · begonnen am 17. Aug 2011 · letzter Beitrag vom 18. Aug 2011
Antwort Antwort
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#1

Anchor macht kompletten Nonsense!

  Alt 17. Aug 2011, 15:33
Ich bin über ein wirklich seltsames Problem gestossen.
Wird in der Delphi-IDE die Visisbility-Eigenschaft von einem Panel, dass den Anchor einer anderen beeinflusst auf False gesetzt, dann schlägt die Anchor-Gschichte fehl.

hmmm... das klingt sehr konfus.

Hier ein komplett primitives Beispiel. Auf ein Form copy-pasten, starten und wundern.

Delphi-Quellcode:
  object Panel1: TPanel
    Left = 0
    Top = 0
    Width = 643
    Height = 113
    Align = alTop
    Caption = 'Panel1'
    TabOrder = 0
    Visible = False
  end
  object Panel2: TPanel
    Left = 0
    Top = 113
    Width = 643
    Height = 228
    Align = alClient
    Caption = 'Panel2'
    TabOrder = 1
    object Memo1: TMemo
      Left = 8
      Top = 6
      Width = 625
      Height = 211
      Anchors = [akLeft, akTop, akRight, akBottom]
      Lines.Strings = (
        'Memo1')
      TabOrder = 0
    end
  end
Ich häng auch noch einen Screenshot an. Oben das Formular in der IDE, unten nach dem starten. Normalerweise sollte das obere Panel weg sein (das passt ja) und das Memo durch seine Anchor-Settings auf allen Seiten nur einen schmalen Rand zum Formular halten. Fail!!!
Miniaturansicht angehängter Grafiken
anchor-bug.png  
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Anchor macht kompletten Nonsense!

  Alt 17. Aug 2011, 15:45
Du könntest beim Memo alClient und AlignWithMargins benutzt. Ändert nix am Verhalten, aber immerhin sieht dann dein Form aus wie du es möchtest
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Anchor macht kompletten Nonsense!

  Alt 17. Aug 2011, 15:48
Das geht leider nicht, auf dem Formular ist noch VIEL mehr drauf, das hier ist nur ein möglichst einfaches Form, dass den Fehler schön demonstriert.

Btw: Ein Workaround ist z.B. Panel1.Visible erst im OnCreate auf False zu setzen. Das ändert aber nichts daran, dass Delphi an einer simplen Grundfunktionalität scheitert

Du könntest beim Memo alClient und AlignWithMargins benutzt. Ändert nix am Verhalten, aber immerhin sieht dann dein Form aus wie du es möchtest
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: Anchor macht kompletten Nonsense!

  Alt 17. Aug 2011, 16:17
Anchors und Align vertragen sich schon seit Äonen nicht. Dafür gibts seit einigen Versionen die AlignWithMargins Property:

Delphi-Quellcode:
object Panel1: TPanel
  Left = 0
  Top = 0
  Width = 562
  Height = 113
  Align = alTop
  Caption = 'Panel1'
  TabOrder = 0
  Visible = False
end
object Panel2: TPanel
  Left = 0
  Top = 113
  Width = 562
  Height = 188
  Align = alClient
  Caption = 'Panel2'
  TabOrder = 1
  object Memo1: TMemo
    AlignWithMargins = True
    Left = 4
    Top = 4
    Width = 554
    Height = 180
    Align = alClient
    Lines.Strings = (
      'Memo1')
    TabOrder = 0
  end
end
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von Sybok Factor
Sybok Factor

Registriert seit: 15. Jan 2003
Ort: Billerbeck
39 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Anchor macht kompletten Nonsense!

  Alt 17. Aug 2011, 16:19
Hallo Ralfiii,
was erwartest du? Dein Panel2 steht auf alClient, also muss es den kompletten Raum des Formulars ausfüllen, wenn Panel1 nicht sichtbar ist, oder?
Wenn du in dem Zustand dann Panel1 sichtbar machst, liegt es hinter dem Panel2.

Abhilfe:
Delphi-Quellcode:
Panel2.Align := alNone;
Panel1.Visible := True;
Panel2.Align := alClient;
Ich würde es mir auch anders wünschen, aber ich sehe das von dir beschriebene Verhalten durchaus als ein MÖGLICHES Verhalten.

Viele Grüße

Sybok
Jetzte michse verstehen dein Problem!
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Anchor macht kompletten Nonsense!

  Alt 17. Aug 2011, 16:34
Hallo Ralfiii,
was erwartest du? Dein Panel2 steht auf alClient, also muss es den kompletten Raum des Formulars ausfüllen, wenn Panel1 nicht sichtbar ist, oder?
Wenn du in dem Zustand dann Panel1 sichtbar machst, liegt es hinter dem Panel2.

Abhilfe:
Delphi-Quellcode:
Panel2.Align := alNone;
Panel1.Visible := True;
Panel2.Align := alClient;
Ich würde es mir auch anders wünschen, aber ich sehe das von dir beschriebene Verhalten durchaus als ein MÖGLICHES Verhalten.

Viele Grüße

Sybok
Ich glaub, du hast das Problem nicht verstanden: Die Anchors des Memos ziehen nicht richtig.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: Anchor macht kompletten Nonsense!

  Alt 17. Aug 2011, 17:23
Ich mach sowas mittlerweile aus Gewohnheit immer in einem "Masterpanel" eingebettet. Ist leichter umzubauen, aligned besser (immer ok), auch mit altem Delphi.
Evtl auch gern noch mit Splitter dazwischen.

Andersrum:
Immer genau 2 Panel liegen in einem Masterpanel, beliebig verschachtelt.

Ja und natürlich gibt es Ausnahmen.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Sybok Factor
Sybok Factor

Registriert seit: 15. Jan 2003
Ort: Billerbeck
39 Beiträge
 
Delphi 2010 Professional
 
#8

AW: Anchor macht kompletten Nonsense!

  Alt 18. Aug 2011, 10:52
@Stevie: Du hast natürlich recht . Dafür habe ich aber keine Lösung finden können.

Viele Grüße

Sybok
Jetzte michse verstehen dein Problem!
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: Anchor macht kompletten Nonsense!

  Alt 18. Aug 2011, 12:14
Dafür habe ich aber keine Lösung finden können.
Die hab ich oben ja schon genannt
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  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 11:21 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