Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi MDI und eigene Taskleiste (https://www.delphipraxis.net/71892-mdi-und-eigene-taskleiste.html)

Karstadt 22. Jun 2006 08:03


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.

Jasocul 22. Jun 2006 09:04

Re: MDI und Taskleiste
 
Ich habe mal was ähnliches für Menü-Punkte gemacht:
Delphi-Quellcode:
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;
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.

Karstadt 22. Jun 2006 09:12

Re: MDI und Taskleiste
 
Liste der Anhänge anzeigen (Anzahl: 1)
was hällst du von meine Lösung?

Karstadt 22. Jun 2006 09:14

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.

Jasocul 22. Jun 2006 10:19

Re: MDI und eigene Taskleiste
 
Du musst im FormCreate diese Zeile rausnehmen:
Delphi-Quellcode:
WindowState := wsMaximized;
Und hier solltest du die Liste rückwärts durchlaufen. Statt:
Delphi-Quellcode:
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;
besser:
Delphi-Quellcode:
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;
Sonst greifst du unter Umständen auf Objekte zu, die nicht mehr existieren.

Karstadt 22. Jun 2006 10:30

Re: MDI und eigene Taskleiste
 
Zitat:

Zitat von Jasocul
Du musst im FormCreate diese Zeile rausnehmen:
Delphi-Quellcode:
WindowState := wsMaximized;

Das soll schon maximiert werden aber ohne diesen "efekt", dass das fenster ihre größe verändert. (ohne es zu sehen).

kalmi01 22. Jun 2006 10:32

Re: MDI und eigene Taskleiste
 
Zitat:

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).
Wenn Du damit das (von Windows) animierte Vergrößern meinst,
schau mal hier

Karstadt 22. Jun 2006 15:01

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.

TBx 22. Jun 2006 15:07

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

Jasocul 22. Jun 2006 15:10

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 15:04 Uhr.
Seite 1 von 2  1 2      

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