Thema: Delphi TBX mit MDI-Anwendung

Einzelnen Beitrag anzeigen

Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: TBX mit MDI-Anwendung

  Alt 25. Jun 2005, 12:11
Here you go

Kann jeweils zwei TB2000-Toolbars (oder davon abgeleitete wie TBX, SpTBX) miteinander mergen und auch wieder entmergen.

Delphi-Quellcode:
unit TB2Merge;

...

interface

type
  TTBToolbarMerger = class(TComponent)
  public
    procedure Merge(Target, Source: TComponent; Options: TTBMergeOptions);
    procedure Unmerge(Target, Source: TComponent);
    procedure UnmergeAll(Comp: TComponent);
    procedure Delete(Index: Integer);
    function IsMerged(Target: TComponent): Integer;
    function IsMergedWith(Source: TComponent): Integer;
    procedure Clear;

    property Count: Integer read GetCount stored false;
    property Items[Index: Integer]: TTBMergedItems read GetItem stored false;
  end;

function ToolbarMerger: TTBToolbarMerger;

...

end.
Dazu müsst ihr z.B. einen Haupt-Toolbar als Menü im MDI-Parent haben und im MDI-Child macht ihr ein verstecktes Dock und darauf euer Kind-Toolbar als Menü (ähnlich wie man TMainMenu für MDI-Parent und MDI-Child einrichtet).

Annahmen:
- Hauptformular ist frmMDIParent
- Hauptmenü ist tbMainMenuBar
- Unterformular ist frmMDIChild
- Untermenü ist tbChildMenuBar

Dann müsst ihr in euer MDI-Child die folgenden Events einbauen:
Delphi-Quellcode:
procedure TfrmMDIChild.FormActivate(Sender: TObject);
begin
  ToolbarMerger.Merge(frmMDIParent.tbMainMenuBar, tbChildMenuBar, []);
end;

procedure TfrmMDIChild.FormDeactivate(Sender: TObject);
begin
  ToolbarMerger.Unmerge(frmMDIParent.tbMainMenuBar, tbChildMenuBar);
end;

procedure TfrmMDIChild.FormDestroy(Sender: TObject);
begin
  ToolbarMerger.UnmergeAll(tbChildMenuBar);
end;
Bei dem Prozess werden KEINE Element neu erzeugt, lediglich der Vater und die Position werden umgehängt (also die ausgeblendeten aus dem ursprünglichen Menü wandern in das versteckte Menü des Kindfensters und umgekehrt).

Die behandelten Element müssen einfach nur von TTBItem abstammen, daher sollte es mit allen von TB2000 abgeleiteten Klassen funktionieren (wie TBX, SpTBX).

Mit der großen Bitte um Kommentare und Anregungen.
Angehängte Dateien
Dateityp: pas tb2merge_133.pas (23,5 KB, 10x aufgerufen)
Volker
  Mit Zitat antworten Zitat