AGB  ·  Datenschutz  ·  Impressum  







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

Panelreheinfolge einhalten.

Ein Thema von Luckner · begonnen am 3. Aug 2016 · letzter Beitrag vom 9. Aug 2016
Antwort Antwort
Seite 1 von 2  1 2      
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#1

Panelreheinfolge einhalten.

  Alt 3. Aug 2016, 15:17
Hallo,

habe in einer Form mehrere Panels untereinander. In jedem dieser Panels sind verschiedene Datensätze. Je nach dem ob in diesen Panels Datensätze vorhanden sind oder nicht, sind diese sichtbar oder nicht. Wenn Datensätze in einem Panel vorhanden sind, dann wird entsprechendes Button markiert(Farbänderung) und Panel ist sichtbar. Das funktioniert auch gut, aber die Reiehnfolge wird nicht immer eingehalten. Hier das Besp:
Delphi-Quellcode:
procedure TFrameArtikel.Panellinksreihenfolge;
begin
 If (ButtonHaftEtikett.Color = clLime) then
     begin
       PanelArtikel.Align := alTop;
       PanelArtikel.Visible := True;
     end
 else
     begin
       PanelArtikel.Visible := false;
     end;

 If ButtonDienstleistung.Color = clLime Then
    begin
      PanelDienstleistung.Align := alTop;
      PanelDienstleistung.Visible := True;
    end
 else
    begin
      PanelDienstleistung.Visible := false;
    end;

 If ButtonNummerierung.Color = clLime Then
    begin
      PanelNummerierung.Align := alTop;
      PanelNummerierung.Visible := True;
    end
 else
    begin
      PanelNummerierung.Visible := false;
    end;

usw.
Wie kann ich die Panelreihenfolge besser platzieren. Es sind ca. 20 Stck.

Danke, Luckner
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#2

AW: Panelreheinfolge einhalten.

  Alt 3. Aug 2016, 15:26
Delphi: How to programmatically adjust visual ordering of components with align = alTop
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Panelreheinfolge einhalten.

  Alt 3. Aug 2016, 15:42
Habe vergessen noch zu erwähnen, das beim 1-ten Durchlauf die Reihenfolge immer eingehalten wird. Erst bei weiterem Aufruf dieser Routine werden die Panels durcheinander gewirbelt.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#4

AW: Panelreheinfolge einhalten.

  Alt 3. Aug 2016, 15:56
Natürlich werden sie durcheinandergewirbelt, wenn sie mal sichtbar, mal unsichtbar sind. Folge einfach Uwes Link.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
tcoman
(Gast)

n/a Beiträge
 
#5

AW: Panelreheinfolge einhalten.

  Alt 3. Aug 2016, 16:07
Ich verwende bei solchen Dingen immer die
Panel1.SetBounds(x1, y1, dx, dy); Einstellung.

Je nachdem, ob sichtbar oder nicht erhoehe ich
eine Integer Variable um den Wert der Panel1.Height,
dem ich den Wert y1 hinzufuege.

Will aber dem professionellen Tip von Herrn Raabe
nicht vorgreifen.

MfG,
Terence
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Panelreheinfolge einhalten.

  Alt 3. Aug 2016, 16:28
Habe mir den Tip von Uwe Raabe angesehen, aber keine wahre Lösung gefunden. Es sind mehrere Ansätze vorgeschlagen, die jedoch nicht zur einem soliden Weg führen müssen. Bevor ich meine Sortieroutine aufrufe, setze ich ich erstmal alle Panels aud visible := false. Was ich nicht verstehe, nach welchen Kriterium entscheiden Delphi in welcher Reihenfolge die Panels sortiert werden. In meiner Routine geht es doch immer in einer festen Reihenfolge. Wan springt ein Panel vor das Andere und wann bleibt es dahinter?

Luckner
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Panelreheinfolge einhalten.

  Alt 3. Aug 2016, 16:32
Hallo tcoman, wenn ich Das so machen würde, müßte ich erst herausfinden, welches von den Panels davor sichtbar sind oder nicht. Bei ca. 20 Panels ist das schon ein zeitl. Aufwand.
  Mit Zitat antworten Zitat
MichaelT

Registriert seit: 14. Sep 2005
Ort: 4020 Linz
555 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Panelreheinfolge einhalten.

  Alt 3. Aug 2016, 16:57
Setze die Höhe auf 0?
Tabstop nicht vergessen auszuschalten.

Ist ein Panel mal Invisible wird es am unteren Ende angereiht. Es hilft auch nichts wenn du die Panels von unten nach oben invisible setzt, sobald du einmal eines auslässt reiht es sich unten an.




Habe mir den Tip von Uwe Raabe angesehen, aber keine wahre Lösung gefunden. Es sind mehrere Ansätze vorgeschlagen, die jedoch nicht zur einem soliden Weg führen müssen. Bevor ich meine Sortieroutine aufrufe, setze ich ich erstmal alle Panels aud visible := false. Was ich nicht verstehe, nach welchen Kriterium entscheiden Delphi in welcher Reihenfolge die Panels sortiert werden. In meiner Routine geht es doch immer in einer festen Reihenfolge. Wan springt ein Panel vor das Andere und wann bleibt es dahinter?

Luckner
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: Panelreheinfolge einhalten.

  Alt 3. Aug 2016, 17:08
Hallo MichaelT, werde mal Dein Tipp mit der Höhe ausprobieren. Wenn ich alle Panals erst invisible mache und da in der richtigen Reihenfolge onTop und visible mache, müsste die an die richtigen Stelle springen? aber ich probiere erst mal die Höhe auf 0 setzen.

Luckner
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: Panelreheinfolge einhalten.

  Alt 3. Aug 2016, 17:16
Hallo MichaelT, leider funktioniert es auch nicht. Es juckt Delphi nicht, ob die Panelhöhe mal auf 0 ist.
  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:16 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