![]() |
Re: minimieren in den systemtray
Ich schon. Ist aber keine saubere .NET-Lösung. Aber solange deine Programme nur auf Windows laufen sollen, mag´s gehen:
Code:
private const int WM_SIZE = 0x0005;
private const int SIZE_MINIMIZED = 1; protected override void WndProc(ref Message m) { if(m.Msg == WM_SIZE && (int)m.WParam == SIZE_MINIMIZED) { notifyIcon1.Visible = true; this.ShowInTaskbar = false; } base.WndProc(ref m); } void MainFormClosing(object sender, System.ComponentModel.CancelEventArgs e) { notifyIcon1.Visible = false; } #region NotifyIcon void MenuItem1Click(object sender, System.EventArgs e) { if(this.WindowState == FormWindowState.Minimized) this.WindowState = FormWindowState.Normal; this.Activate(); notifyIcon1.Visible = false; this.ShowInTaskbar = true; } void MenuItem2Click(object sender, System.EventArgs e) { this.Close(); } #endregion |
Re: minimieren in den systemtray
sauber für net sollte es vieleicht schon sein
aber ich teste das mal das sieht schon gut aus aber binn weiter offen für alles^^ |
Re: minimieren in den systemtray
Zitat:
Zitat:
Code:
:)
// Closing-Event der Form
void MainFormClosing(object sender, System.ComponentModel.CancelEventArgs e) { notifyIcon1.Visible = false; } // SizeChanged-Event der Form void MainFormSizeChanged(object sender, System.EventArgs e) { if(this.WindowState == FormWindowState.Minimized) { this.ShowInTaskbar = false; notifyIcon1.Visible = true; } } // ContextMenu für NotifyIcon void MenuItem1Click(object sender, System.EventArgs e) { if(this.WindowState == FormWindowState.Minimized) this.WindowState = FormWindowState.Normal; this.Activate(); notifyIcon1.Visible = false; this.ShowInTaskbar = true; } void MenuItem2Click(object sender, System.EventArgs e) { this.Close(); } |
Re: minimieren in den systemtray
öh ist das nicht c#?
ich brauch aber delphi.net..... |
Re: minimieren in den systemtray
Du hättest damit deine eigene Intelligenz unter Beweis stellen können, denn für deine WinForms-Anwendung spielt die Sprache keine Rolle. Und da die Eigenschaften in dem Fall aus dem .NET Framework kommen, heißen sie auch in Delphi "Closing" und "SizeChanged". Es ändert sich nur die Syntax.
Versuch´s einfach mal. ;) |
Re: minimieren in den systemtray
du bist lusstig das habe ich schon etwas gemacht und sowas mit intiligenz und so ist nicht sehr nett
|
Re: minimieren in den systemtray
:mrgreen: Woran scheitert es denn?
|
Re: minimieren in den systemtray
das habe ich bis jetzt
---------------------------------------------------------
Delphi-Quellcode:
-------------------------------------------------------------------------------------------
procedure TWinForm.NotifyIcon1_MouseDown(sender: System.Object; e: System.Windows.Forms.MouseEventArgs);
begin if(WindowState = FormWindowState.Minimized)then begin WindowState := FormWindowState.Normal; end; Activate(); notifyIcon1.Visible := false; ShowInTaskbar := true; end; procedure TWinForm.TWinForm_SizeChanged(sender: System.Object; e: System.EventArgs); begin if(WindowState = FormWindowState.Minimized)then begin ShowInTaskbar := false; notifyIcon1.Visible := true; end; end; procedure TWinForm.TWinForm_Closing(sender: System.Object; e: System.ComponentModel.CancelEventArgs); begin notifyIcon1.Visible := false; end; das habe ich jetzt so gemacht aber das geht nicht also es wird nicht im tray angezeigt und das --------
Delphi-Quellcode:
--------
procedure TWinForm.NotifyIcon1_MouseDown(sender: System.Object; e: System.Windows.Forms.MouseEventArgs);
begin if(WindowState = FormWindowState.Minimized)then begin WindowState := FormWindowState.Normal; end; Activate(); notifyIcon1.Visible := false; ShowInTaskbar := true; end; soll ja eigentlich da rein ------ ContextMenu ------- aber wie greif ich darauf zu bei mir steht da none und ich kann da nix machen und was soll das? ----------
Delphi-Quellcode:
----------
void MenuItem2Click(object sender, System.EventArgs e)
{ this.Close(); } |
Re: minimieren in den systemtray
Das NotifyIcon hat ein zugewiesenes ContextMenu mit zwei Einträgen. Der erste zeigt die Anwendung wieder an, der zweite beendet das Programm. In Delphi also
Delphi-Quellcode:
Für so ein Menü suchst du in der Komponentenpalette nach ContextMenu und ziehst es in dein Projekt. Wie der Menüeditor bei Delphi ist, weiß ich nicht. Bei #d erscheint das Menü quasi auf der Form, und man kann die Einträge direkt angeben. Sobald das Menü im Projekt ist, kannst du es in NotifyIcon auch auswählen.
self.Close;
Noch ein PS: Bei mir hat sich das Icon erst gezeigt, nachdem ich eins im Objektinspektor zugewiesen habe. Ich habe mich mit NotifyIcon bisher nicht weiter beschäftigt, daher weiß ich im Augenblick nicht, wie man das Programmsymbol selbst zuweist. Aber es wird sicher gehen. Fürs Erste probier´s mal mit einem separaten Symbol. Aha, in #d geht es so mit dem Programmsymbol
Code:
Dann brauche ich vorher keins zuweisen. ;)
public MainForm()
{ // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. // notifyIcon1.Icon = this.Icon; } |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:00 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