AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Evtl Bug in Delphi bzgl. Reihenfolge auf dem Formular
Thema durchsuchen
Ansicht
Themen-Optionen

Evtl Bug in Delphi bzgl. Reihenfolge auf dem Formular

Ein Thema von padavan · begonnen am 30. Sep 2005 · letzter Beitrag vom 8. Nov 2005
 
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Evtl Bug in Delphi bzgl. Reihenfolge auf dem Formular

  Alt 4. Okt 2005, 06:41
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:
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.
Der Vorteil bei dieser Vorgehensweise ist, dass du ein Infopanel vor der PlayList schwebend anzeigen kannst - der Nachteil ist der erhöhte Programmieraufwand.

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
  Mit Zitat antworten Zitat
 


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 21:53 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