![]() |
Evtl Bug in Delphi bzgl. Reihenfolge auf dem Formular
Moin Delphianer,
kann es evtl. sein, dass es einen Bug in Delphi bzgl. der Reihenfolge der Komponenten auf dem Formular gibt? Unter irgendwelchen, für mich nicht nachzuvollziehenden Umständen, kommt es manchmal vor, dass eine Komponente, welche eigentlich ganz hinten auf dem Formular liegt nach vorne rutscht und dort bis Programmende auch bleibt. Mit nach vorne rutschen meine ich, dass es dann andere Komponenten verdeckt. Ich schließe einen Fehler meinerseits erstmal vorsichtig aus, denn: ich wüsste gar nicht, wie ich zur Laufzeit die Reihenfolge ändern könnte. Deshalb behaupte ich mal, ich war´s nicht :stupid: (Dieses Problem trat übrigens unter Delphi 7 auf....) |
Re: Evtl Bug in Delphi bzgl. Reihenfolge auf dem Formular
Hallo padavan,
mir ist ein solcher "Fehler" bisher nicht aufgefallen. Hast du Code, mit dem ich den Fehler reproduzieren könnte? Grüße vom marabu |
Re: Evtl Bug in Delphi bzgl. Reihenfolge auf dem Formular
mir ist auch nicht immer klar, welche komponente in welcher ebene ist.
leg ich einen TEdit auf einen TPanel, so ist manchmal der Panel vor dem TEdit, sodass man den TEdit nicht sieht. deshalb arbeite ich mit Komponente.Hide und Komponente.Show wenn ich eine Komponente zeigen / nicht zeigen will. viel interessanter finde ich aber die Tab-Reihenfolge. alle Elemente schön der Reihe nach auf dem Form plaziert, in der Mitte ein Element gelöscht und ein anderes eingefügt. Schon stimmt die Tab-Reihenfolge nicht mehr und das neue Element wird als letztes angesprungen. gruessle |
Re: Evtl Bug in Delphi bzgl. Reihenfolge auf dem Formular
Zitat:
Zitat:
|
Re: Evtl Bug in Delphi bzgl. Reihenfolge auf dem Formular
Liste der Anhänge anzeigen (Anzahl: 1)
ne, mit Tab gibt´s keine Probleme,
ich meine tatsächlich die sichtbare Reihenfolge von Komponenten. Hallo marabu, puh, welchen Quelltext meinst du denn? Die .pas Datei (wohl kaum) oder eher das, wo man auf dem Formular mit rechter Maustaste sagt "view as text". Dort habe ich teilweise die Reihenfolge festgelegt, aber wiegesagt nicht zur Laufzeit. Ist aber sehr umfangreich. Es handelt sich um die Listbox1. (da sie hinten auf dem Formular sein soll, ist sie recht oben im Quelltext) |
Re: Evtl Bug in Delphi bzgl. Reihenfolge auf dem Formular
Hallo Padavan,
ich habe mir dein Formular angesehen. Richtig nachvollziehen kann ich den Fehler ja nicht, aber soweit ich erkennen kann sollen sich mehrere Komponenten den knappen Platz teilen. Anstelle die Z-Reihenfolge dieser Komponenten zu manipulieren, würde ich an deiner Stelle versuchen die Komponenten erst zur Laufzeit zu erzeugen und dann an der richtigen Stelle einzublenden. Wenn dir das zu schwierig oder aufwendig erscheint, bliebe immer noch die Komponente NoteBook aus der Palette "Win 3.1". Aber vielleicht habe ich dich ja ganz falsch verstanden. Grüße vom marabu |
Re: Evtl Bug in Delphi bzgl. Reihenfolge auf dem Formular
Hallo marabu,
nein, ich glaube du hast mich richtig verstanden, auch das mit dem knappen Platz ist schon richtig. Nur da ich gerade zur Laufzeit keine Komponenten erstelle, frag ich mich halt, warum aus irgendeinem Grund manchmal die Reihenfolge nicht mehr stimmt. Ich wüsste ja nicht mal einen Befehl, der die Komponenten untereinander zur Laufzeit austauscht. Trotzdem vielen Dank, das du dir die Zeit genommen hast..... Viele Grüße Padavan |
Re: Evtl Bug in Delphi bzgl. Reihenfolge auf dem Formular
Hallo padavan,
Zitat:
Freundliche Grüße vom marabu |
Re: Evtl Bug in Delphi bzgl. Reihenfolge auf dem Formular
Moin marabu
- Frühaufsteher? Ja ist so, das ganze ist eigentlich ein Player, bei dem ich versucht habe die Optik immer im gleichen Stil zu halten. Also hab ich fasst alles was man so braucht, wie "Optionen", "Extras" usw meist auf Panels gelegt, welche dann im Vordergund vor der Listbox erscheinen, wenn man sie aufruft. Die Listbox ist sichtbar, sie ist die Playlist. Wenn nichts anderes aufgerufen wurde (z.B. auch ein Film, oder das Cover des Liedes), dann ist sie vollständig zu sehen. Wie du schon richtig erkannt hast, ist das Formular knallvoll und wenn ich nachträglich was einfügen wollte, hab ich meist so gemacht, dass ich dann die Komponente eingefügt hab und dann die Ansicht als "view-as-text" in der umgeschaltet hab. Danach hab ich dann die Kompontente (in der .dfm) an der Ebene "plaziert" wo ich sie hinhaben wollte. Welche Info würdest du denn benötigen um mir helfen zu können. Ich denke mal der Quellcode des Programms hilft nicht viel weiter, oder? Viele Grüße Padavan |
Re: Evtl Bug in Delphi bzgl. Reihenfolge auf dem Formular
Hallo padavan,
ich erinnere mich jetzt an deinen DreamPlayer. Wenn normalerweise die PlayList (ListBox) sichtbar ist und andere Ein- bzw. Ausgabeelemente am gleichen Ort angezeigt werden sollen, dann bleibe ich bei meinem Vorschlag: Du musst deine Komponenten nicht zur Entwurfszeit stapeln, du kannst ein Panel auch erst zur Laufzeit erzeugen und an der gewünschten Stelle einblenden:
Delphi-Quellcode:
Der Vorteil bei dieser Vorgehensweise ist, dass du ein Infopanel vor der PlayList schwebend anzeigen kannst - der Nachteil ist der erhöhte Programmieraufwand.
unit DemoFrm;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TDemoForm = class(TForm) ListBox: TListBox; InfoButton: TButton; procedure InfoButtonClick(Sender: TObject); procedure PanelClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private FreeList: TList; procedure AppIdle(Sender: TObject; var done: boolean); end; var DemoForm: TDemoForm; implementation {$R *.dfm} procedure TDemoForm.AppIdle(Sender: TObject; var done: boolean); begin // free objects one by one with FreeList do if Count > 0 then TObject(Extract(First)).Free; end; procedure TDemoForm.InfoButtonClick(Sender: TObject); begin with TPanel.Create(self) do begin Parent := self; // make visible Left := ListBox.Left + 10; Top := ListBox.Top + 10; // ... OnClick := PanelClick; end; end; procedure TDemoForm.PanelClick(Sender: TObject); begin with Sender as TPanel do if Caption = '' then Caption := DateTimeToStr(now) else FreeList.Add(Sender); end; procedure TDemoForm.FormCreate(Sender: TObject); begin FreeList := TList.Create; Application.OnIdle := AppIdle; end; procedure TDemoForm.FormDestroy(Sender: TObject); begin FreeList.Free; end; end. Hast du dir die Notebook-Komponente einmal angeschaut? Damit kannst du deine Komponenten alle schon zur Entwurfszeit gruppieren und anordnen und schaltest zur Laufzeit zwischen den Gruppen (Pages) um. Es wird allerdings immer das ganze Rechteck ausgewechselt, d.h. die Listbox auf Seite 1 des Notebooks verschwindet ganz, wenn ein InfoPanel auf Seite 2 angewählt wird. Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22: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