AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls DockTabSet auf Formular aus DLL, merkwürdiges Verhalten
Thema durchsuchen
Ansicht
Themen-Optionen

DockTabSet auf Formular aus DLL, merkwürdiges Verhalten

Ein Thema von snook · begonnen am 31. Mai 2012
Antwort Antwort
snook

Registriert seit: 25. Jun 2010
94 Beiträge
 
Delphi 2005 Professional
 
#1

DockTabSet auf Formular aus DLL, merkwürdiges Verhalten

  Alt 31. Mai 2012, 10:56
Hey,

zugegeben es ist ein recht spezielles problem, aber es nervt mich dass ich keine vernünftige Lösung dafür bekomme. Ich habe mich an diesem Artikel http://edn.embarcadero.com/article/33446 orientiert und ein formular mit DockTabSet Komponenten erstellt. soweit so gut, es funktioniert auch ganz gut, solange ich dieses Formular als Fenster in einer gewöhnlichen Anwendung anzeige. Problematisch wird es allerdings, wenn ich dieses Formular in eine DLL packe. Dann "verschwinden" beim erzeugen des Formulars die Leiste der Tabs der DockTabSet Komponenten und die Leiste des angedockten Formulars, die den "Pin", die Caption des gedockten Formulars und den "Close"-Button enthält ist ebenso verschwunden. Erst wenn ich ein Resize der DockTabSet-Komponente über einen Splitter durchführe erscheinen die fehlenden Anzeigen wieder. Ich hab mal nen Screenshot in den Anhang gepackt. Eine Lösung die ich im Moment habe, ist einfach die gedockten Formulare beim erzeugen nicht anzupinnen. Das bringt aber auch nciht wirklich einen schönen Effekt, da beim ersten DockTabSet zwar das gedockte Formular angezeigt wird, wenn ich dann aber das nächste Formular im zweiten DockTabSet andocke, wird das erste ausgeblendet und verschwindet in einem Tab des ersten DockTabSets.

Falls also irgendwer weiß, warum das DockTabSet in DLL's ein merkwürdiges Verhalten zeigt, würde ich mich über Lösungen freuen.

Hier noch die Methode zum erzeugen der gedockten Formulare nach dem erzeugen des Formulars

Delphi-Quellcode:
procedure TFormMacroController.AddDockElement(AForm: TForm;
  ADockSite, ADropControl: TWinControl; AAlign: TAlign);
begin
  with AForm do
  begin
    BorderStyle := bsSizeToolWin;
    DragKind := dkDock;
    DragMode := dmAutomatic;
    UseDockManager := true;
    ManualDock(ADockSite, ADropControl, AAlign);
// Align := alClient;
  end;
end;

procedure TFormMacroController.LoadDefaultDockLayout;
begin
  // Global Variables
  if Assigned(FVarInspector) then
    FVarInspector.Free;
  FVarInspector := TDataModuleInspector.Create(self);
  FDockClients[VAR_INSPECTOR_CLIENT] := FVarInspector;
  with FDockClients[VAR_INSPECTOR_CLIENT] do
    FDefaultDockSetup[VAR_INSPECTOR_CLIENT] := Point(LRDockWidth, TBDockHeight);

  with FVarInspector do
  begin
    Caption := 'Global Variables';
    ShowBtnPanel := false;
    ShowToolBar := false;
    ShowMemory := false;
    OnClose := DataModuleInspectorPreventClose;
    OnHide := DataModuleInspectorTreatHide;
    OnDestroy := OnInspectorDestroy;
    OnEndDock := OnInspectorDocked;
    OnVisibleChanging := DataModuleInspectorTreatVisibleChanging;
    DMTree.Header.Columns[0].Width := Width div 2 - 5;
    DMTree.Header.Columns[1].Width := Width div 2 - 5;
  end;
  AddDockElement(FVarInspector, FDockPanels[DOCK_PANEL_RIGHT], DockTabSetRight, alClient);
// FVarInspector.ManualDock(FDockPanels[DOCK_PANEL_RIGHT]);
  SetVarInspectorVariables(CurrentMacro);

  // Executable Info Inspector
  if Assigned(FExecutableInspector) then
    FExecutableInspector.Free;
  FExecutableInspector := TDataModuleInspector.Create(self);
  FDockClients[EXEC_INSPECTOR_CLIENT] := FExecutableInspector;
  with FDockClients[EXEC_INSPECTOR_CLIENT] do
    FDefaultDockSetup[EXEC_INSPECTOR_CLIENT] := Point(LRDockWidth, TBDockHeight);

  with FExecutableInspector do
  begin
    Caption := 'Executable Inspector';
    ShowBtnPanel := false;
    ShowToolBar := false;
    ShowMemory := false;
    OnClose := DataModuleInspectorPreventClose;
    OnHide := DataModuleInspectorTreatHide;
    OnDestroy := OnInspectorDestroy;
    OnEndDock := OnInspectorDocked;
    OnVisibleChanging := DataModuleInspectorTreatVisibleChanging;
    DMTree.Header.Columns[0].Width := Width div 2 - 5;
    DMTree.Header.Columns[1].Width := Width div 2 - 5;
  end;
  AddDockElement(FExecutableInspector, FDockPanels[DOCK_PANEL_LEFT], DockTabSetLeft, alClient);
// FExecutableInspector.ManualDock(FDockPanels[DOCK_PANEL_LEFT]);

  // Message Client
  if Assigned(FMessageClient) then
    FMessageClient.Free;
  FMessageClient := TMessageForm.Create(self);
  FDockClients[MESSAGE_CLIENT] := FMessageClient;
  with FDockClients[MESSAGE_CLIENT] do
    FDefaultDockSetup[MESSAGE_CLIENT] := Point(LRDockWidth, TBDockHeight);
  with FMessageClient do
  begin
    Caption := 'Messages';
    OnClose := DataModuleInspectorPreventClose;
    OnHide := DataModuleInspectorTreatHide;
    OnDestroy := OnInspectorDestroy;
    OnEndDock := OnInspectorDocked;
    OnVisibleChanging := DataModuleInspectorTreatVisibleChanging;
  end;
  AddDockElement(FMessageClient, FDockPanels[DOCK_PANEL_BOTTOM], DockTabSetBottom, alClient);
// FMessageClient.ManualDock(FDockPanels[DOCK_PANEL_BOTTOM]);
  SetStatusMessages(CurrentMacro);

  FVarInspector.Show;
  FExecutableInspector.Show;
  FMessageClient.Show;
end;
Danke im Voraus und viele Grüße

Sebastian
Miniaturansicht angehängter Grafiken
docktabset-vor-resize.jpg   docktabset-nach-resize.jpg  

Geändert von snook (31. Mai 2012 um 11:00 Uhr) Grund: Anhang vergessen
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:15 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