AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TBX mit MDI-Anwendung

Ein Thema von Flocke · begonnen am 15. Jun 2005 · letzter Beitrag vom 9. Aug 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Flocke
Flocke

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

TBX mit MDI-Anwendung

  Alt 15. Jun 2005, 13:07
Hallo Leute, ich habe folgendes Problem:

Ich muss eine relativ große Anwendung (~150.000 Zeilen) "verschönern". Daher möchte ich das alte Standardmenü (Delphi 5) umstellen auf TBX, hauptsächlich weil das mit dem Office2003-Theme so richtig gut aussieht.

Es handelt sich um eine MDI-Anwendung mit ~30 unterschiedlichen Arten von MDI-Unterfenstern, die alle jeweils eigene Menüs besitzen. Bei TMainMenu nimmt Delphi (bzw. Windows) einem ja die Arbeit ab, und das Hauptmenü vom aktiven MDI-Kind wird "automatisch" mit dem des Hauptfenster zusammengeführt.

Gibt's so etwas in der Art auch für TBX? Oder für eine ähnliche Komponentensammlung?

Wenn nicht, dann müsste ich ja einen riesigen Menubar machen, der über 50 Einträge hat und schon alle möglichen benötigten Menüeinträge beinhaltet; und die müsste ich dann noch je nach aktivem Fenster ein- und ausblenden und die OnClick-Ereignisse bzw. die Aktionen zuweisen.

Daher dachte ich mir, ehe ich mich jetzt hinsetze und selbst was dafür schreibe, frage ich lieber zuerst nach, ob das einer von euch schon mal gemacht hat oder ob es dafür vielleicht sogar schon fertige Lösungen gibt.
Volker
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: TBX mit MDI-Anwendung

  Alt 15. Jun 2005, 13:34
Hallo Flocke,

ich hab noch nicht so viel mit TBX gemacht, aber eine AutoMerge-Property wie sie z.B. beim MainMenu vorhanden ist, habe ich noch nicht gefunden. Guck mal durch die Hilfe-Datei, wenn ich mich richtig erinnere, war da ein kleines Kapitel ueber das Merging drin. Vergiss dabei auch nicht die Hilfedatei der TB2000-Komponenten, die TBX leitet ja nur davon ab.
Wenn du eine hoehere Version von Delphi (also Pro, Ent, Arch) hast, kannst du dir ja auch mal die Merge-Methode des TMainMenu ansehn, und dann eine solche Funktion in die TBX-Komponenten implementieren (du darfst die Merge-Methode aber nicht kopieren, das waere gegen die Lizenz!). Falls du es schaffst, ich bin auch dran interessiert

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#3

Re: TBX mit MDI-Anwendung

  Alt 15. Jun 2005, 13:52
Zitat:
Falls du es schaffst, ich bin auch dran interessiert
dto.

ich hatte damals die hilfen alle mal durchgesehen. war aber nicht sehr ergibig.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
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
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: TBX mit MDI-Anwendung

  Alt 25. Jun 2005, 12:14
Hallo Flocke,

sieht schon mal gut aus. Ich werd das Ding heute nachmittag mal durchtesten und eventuell verbessern, falls dies noetig ist.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

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

Re: TBX mit MDI-Anwendung

  Alt 26. Jun 2005, 13:29
Probier's mal aus.

Ich habe mit einer Beispielanwendung angefangen, hab' aber im Moment keine Zeit mehr. Außerdem sind mir gestern noch einige Verbesserung eingefallen, die das Ganze noch etwas komfortabler und sicherer machen.

Ein Problem ist z.B., dass ich mich zwar per Notification(..., opRemove) darüber informiert lassen kann, dass ein TToolBar gelöscht wird, aber zum unmergen ist es dann schon zu spät, weil sich ja die herausgenommenen Items aus dem Haupt-Toolbar jetzt in der Komponente befinden, die gelöscht wird (und auch bereits zum Löschen markiert sind). Ich werde also wohl noch mit einer dritten Komponente arbeiten, nämlich einfach einem TTBItemContainer zur Aufnahme der ausgeblendeten Elemente.

Außerdem werde ich wohl, nach dem Vorbild von TB2MDI, noch eine automatisches Mergen/Unmergen bei Aktivierung/Deaktivierung von Fenstern einbauen.

Danach wäre das Ganze dann eine "Fire and Forget"-Lösung, so dass man dem Merger nur noch in FormCreate des MDI-Kindfensters einmal mitteilen muss, welche Toolbars wie gemerged werden sollen und der Rest läuft dann automatisch.

Mal schau'n ob ich das in der nächsten Woche alles schaffe...
Volker
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

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

Re: TBX mit MDI-Anwendung

  Alt 27. Jun 2005, 10:12
So, hab' jetzt mal ein Beispiel gemacht (siehe Anhang).
Ist auch eine etwas verbesserte Version von TB2Merge.pas mit drin.
Angehängte Dateien
Dateityp: zip tb2merge_example_214.zip (40,1 KB, 9x aufgerufen)
Volker
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

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

Re: TBX mit MDI-Anwendung

  Alt 15. Jul 2005, 12:17
Scheint ja nicht wirklich jemanden zu interessieren

... aber trotzdem: hier eine aktuelle Version, in der ich noch einige Dinge korrigiert habe.

Für eigene Anwendungen braucht man nur die Datei "TB2Merge.pas", der Rest ist eine Demo-Anwendung.

Die Demo zeigt recht schön, was man mit dem Flag moRecursive so alles anstellen kann.

Wenn man die Demo startet hat man zunächst nur das MDI Hauptfenster. Der Menüpunkt "Datei / Neu" erzeugt abwechselnd rote und blaue MDI Kindfenster, die (im Quelltext) jeweils unterschiedliche Methoden zum Mergen demonstrieren. An der Farbe der Menüpunkte erkennt man, welcher Eintrag zu welchem Fenster gehört.

Natürlich kann man beliebig viele Toolbars mergen, also z.B. das Menü und "wirkliche" Toolbars, allerdings nur jeweils paarweise.

Wenn's einer von euch ausprobiert, wär ein Kommentar echt mal nicht schlecht
Angehängte Dateien
Dateityp: zip tb2merge_example_213.zip (40,6 KB, 18x aufgerufen)
Volker
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#9

Re: TBX mit MDI-Anwendung

  Alt 15. Jul 2005, 12:26
Da sieht man mal wie vergesslich ich bin
Wenn mein Programm heute noch so funktioniert wie ichs gern haette (), dann guck ich mir die Sachen heute Nachmittag mal an (und diesmal sicher).

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von fylo
fylo

Registriert seit: 18. Feb 2004
Ort: Rostock
155 Beiträge
 
Delphi 7 Personal
 
#10

Re: TBX mit MDI-Anwendung

  Alt 15. Jul 2005, 15:33
Hi Flocke,

hab es gerade mal ausprobiert und bei mir funktioniert es super. Werd die Unit vielleicht mal bei meinen nächsten Projekten einsetzen. Vielen Dank für deine Arbeit.
have fun
fylo
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:44 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