![]() |
MDI und eigene Taskleiste
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo. Habe eine Frage. Wie kann ich beim ertellen eines CHILD Fenster eine Knopf in meine interne taskleiste erzeugen und später beim klick auf diesen Knopf das fenster in Vordergrund hollen?
...wie man das in Vordergrund hollt, weis ich. Ich weis aber nicht wie ich bei 10 Knoöfen das richtige Fenster ansprechen kann. Habe den Code im Anhang. Ich muss erlich gestehen, ich weis nicht welche Komponente ich für die Taskleite benutzen soll, ich habe mir die TToolbar genommen. |
Re: MDI und Taskleiste
Ich habe mal was ähnliches für Menü-Punkte gemacht:
Delphi-Quellcode:
Etwas ähnliches müsstest du mit deinen Button machen. Allerdings müsstest du den Eintrag für die Button beim Erstellen, bzw. beim Zerstören des MDI-Childs machen. Bei meiner Variante über das Menü ist das einfacher. Ich schaue beim Klick auf das Fenster-Menü einfach nach, welche Menü-Einträge ich erstellen muss.
procedure TfrmMain.mnuFensterClick(Sender: TObject);
var cnt : Integer; mnuItem : TMenuItem; begin while mnuFenster.count > 1 do begin mnuFenster.Delete(mnuFenster.Count-1); end; for cnt := MDIChildCount downto 1 do begin mnuItem := TMenuItem.Create(mnuFenster); mnuItem.Caption := MDIChildren[cnt-1].Caption; mnuItem.OnClick := FensterMenuItemClick; mnuFenster.Add(mnuItem); end; end; |
Re: MDI und Taskleiste
Liste der Anhänge anzeigen (Anzahl: 1)
was hällst du von meine Lösung?
|
Re: MDI und Taskleiste
was ich immer noch nicht im Griff habe, ist diese MAXIMIEREN EFFEKT. Ich möchte das ohne diese ANIMATION machen. Geht das überhaupt? (schaut bitte mein Code an).
PS: Optimierungen in Code nehme ich gerne entgegen. |
Re: MDI und eigene Taskleiste
Du musst im FormCreate diese Zeile rausnehmen:
Delphi-Quellcode:
Und hier solltest du die Liste rückwärts durchlaufen. Statt:
WindowState := wsMaximized;
Delphi-Quellcode:
besser:
Procedure Tf_hauptfenster.Titelleisteknopf_entfernen(Knopfname:String);
var i: Integer; begin for i := 0 to tb_taskleiste.ComponentCount-1 do begin IF tb_taskleiste.Components[i].Name = Knopfname Then tb_taskleiste.Components[i].Free; end; end;
Delphi-Quellcode:
Sonst greifst du unter Umständen auf Objekte zu, die nicht mehr existieren.
Procedure Tf_hauptfenster.Titelleisteknopf_entfernen(Knopfname:String);
var i: Integer; begin for i := tb_taskleiste.ComponentCount-1 downto 0 do begin IF tb_taskleiste.Components[i].Name = Knopfname Then tb_taskleiste.Components[i].Free; end; end; |
Re: MDI und eigene Taskleiste
Zitat:
|
Re: MDI und eigene Taskleiste
Zitat:
schau mal ![]() |
Re: MDI und eigene Taskleiste
genau das! was ich noch nicht gefunden habe ist, wie ich z.B. das zweite Fenster von 30 maximieren kann.
ich kann das zwar in vordergrund hollen aber nicht maximieren. |
Re: MDI und eigene Taskleiste
Wenn Du das zweite Fenster in den Vordergrung holen kannst, dann hast Du ja schon zugriff auf dieses.
Dann setz den WindowState dieses Fensters auf wmMaximized und das wars. hope it helps onlinekater |
Re: MDI und eigene Taskleiste
Das Problem bei einer MDI-Anwendung ist dann aber, dass alle MDI-Childs maximiert sind. Echt ätzend.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:29 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 by Thomas Breitkreuz