![]() |
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 |
Re: Evtl Bug in Delphi bzgl. Reihenfolge auf dem Formular
Hallo marabu,
ich werde mir beide Varianten deines Lösungsvorschlages mal ansehen. Die Notebook-Variante hab ich als Tabsheet an anderer Stelle schon im Einsatz. Bei der Listbox hatte ich es bis jetzt noch nicht, da diese als Grundlage des Programms immer sichtbar sein sollte. Aber vielleicht kann ich mich von diesem Gedanken auch lösen.... Mit der anderen Variante hab ich noch keine Erfahrung, aber du hast mich neugierig gemacht und ich werd´s heute Abend gleich mal testen. Viele Grüße Padavan :hi: |
Re: Evtl Bug in Delphi bzgl. Reihenfolge auf dem Formular
Moin marabu,
ist schon etwas länger her, und auch nicht unbedingt sooooo wichtig, aber ich konnte jetzt die Aktion rausfinden, bei welcher meine Komponenten durcheinander gewürfelt werden. Sobald ich das Scroll-Rad einer bestimmten Maus auf der Listview (ehemals Listbox- der Fehler ist aber identisch) benutze, legt sich die Listview in den Vordergrund. Aber nur mit einer bestimmten Maus. Keine Ahnung was das soll, liegt vielleicht am Treiber, aber das ist nur stochern im Dunkel....... Deinen gut vorbereiteten Denkanstoß bzgl. Laufzeiterstellung der Komponenten hab ich testmäßig hinbekommen, aber um ehrlich zu sein, dann wieder verworfen. Irgendwie hab ich noch nicht die Notwendigkeit erkannt, etwas mit Quelltext zu erledigen, was eigentlich auch von selbst gehen muss. Wahrscheinlich hab ich den Vorteil davon noch nicht im vollem Umfang verstanden.... Hinzu kommt noch folgendes, wenn ich die Komponeten nicht auf dem Entwurfsformular "gestalte", dann brauch ich nen "Matrixblick" ( kennst den Film sicher, wo der eine die Blondine schon im Matrixcode sieht... ), und den hab ich noch nicht :-D Wollte die Fehlerursache einfach noch mal kundtun. Viele Grüße Padavan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 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