Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TBX: Floatingwechsel macht Dockprobleme (https://www.delphipraxis.net/83964-tbx-floatingwechsel-macht-dockprobleme.html)

Nils_13 9. Jan 2007 12:34


TBX: Floatingwechsel macht Dockprobleme
 
Hi,

es ist mit dem Code (unten) nur möglich, 1x fehlerfrei, mit einem TBXDockablePanel, zwischen Docked und Undocked zu wechseln: Beim 1. Mal wird es aus dem Dock genommen und auch wieder in den vorherigen (es werden am Ende mehrere TBXDockablePanels sein) Dock zurückgesetzt [gewünscht]. Beim 2. Mal wird es, wie gewünscht, herausgenommen, aber an die Position 0 (X) und 0 (Y) der Form gesetzt, obwohl es wieder in den Dock zurück soll, in dem es zuvor war [ungewünscht]. Ich sehe meinen Fehler nicht, sieht ihn jemand von euch ?
Delphi-Quellcode:
  private
    olddock : TTBDock;

[...]

procedure TfrmMain.Button3Click(Sender: TObject);
begin
  // tbxdp_std = TBXDockablePanel
  olddock := tbxdp_std.CurrentDock;
  tbxdp_std.Floating := True;
end;

procedure TfrmMain.Button4Click(Sender: TObject);
begin
  // tbxdp_std = TBXDockablePanel
  tbxdp_std.Dock(olddock, olddock.ClientRect);
  tbxdp_std.Floating := False;
end;

Nils_13 10. Jan 2007 17:50

Re: TBX: Floatingwechsel macht Dockprobleme
 
Keiner eine Idee ? :( Wenn bei der Frage eine Unklarheit besetehen sollte, dann sagt diese bitte.


*** edit 10.01.07/21:57 ***
Habe es so hinbekommen:
Delphi-Quellcode:
procedure TfrmMain.cbFloatingChange(Sender: TObject);
var i      : Integer;
begin
  if cbFloating.ItemIndex = 0 then
  begin
    for i := 0 to ComponentCount - 1 do
    begin
      if Components[i] is TTBXDockablePanel then
      begin
        (Components[i] as TTBXDockablePanel).Floating := False;
        (Components[i] as TTBXDockablePanel).CurrentDock:=(Components[i] as TTBXDockablePanel).DefaultDock;
      end;
    end;
  end else
  begin
    for i := 0 to ComponentCount - 1 do
    begin
      if not (Components[i] = tbxdp_std) then // eine kleine Einschränkung, welche man natürlich weglassen könnte
      begin
        if Components[i] is TTBXDockablePanel then
        begin
          (Components[i] as TTBXDockablePanel).Floating := True;
        end;
      end;
    end;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 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