AGB  ·  Datenschutz  ·  Impressum  







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

minimieren in den systemtray

Ein Thema von Prym · begonnen am 19. Apr 2005 · letzter Beitrag vom 24. Apr 2005
Antwort Antwort
Seite 3 von 3     123   
MathiasSimmack
(Gast)

n/a Beiträge
 
#21

Re: minimieren in den systemtray

  Alt 23. Apr 2005, 19:55
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
  Mit Zitat antworten Zitat
Prym

Registriert seit: 20. Feb 2005
108 Beiträge
 
#22

Re: minimieren in den systemtray

  Alt 23. Apr 2005, 21:07
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^^
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#23

Re: minimieren in den systemtray

  Alt 23. Apr 2005, 21:44
Zitat von Prym:
sauber für net sollte es vieleicht schon sein
Na ja, irgendwas solltest du auch zu deinem Problem beitragen. Finde ich jedenfalls

Zitat:
aber binn weiter offen für alles^^
Ich bin mal nicht so:
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();
}
  Mit Zitat antworten Zitat
Prym

Registriert seit: 20. Feb 2005
108 Beiträge
 
#24

Re: minimieren in den systemtray

  Alt 24. Apr 2005, 13:51
öh ist das nicht c#?
ich brauch aber delphi.net.....
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#25

Re: minimieren in den systemtray

  Alt 24. Apr 2005, 14:05
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.
  Mit Zitat antworten Zitat
Prym

Registriert seit: 20. Feb 2005
108 Beiträge
 
#26

Re: minimieren in den systemtray

  Alt 24. Apr 2005, 14:20
du bist lusstig das habe ich schon etwas gemacht und sowas mit intiligenz und so ist nicht sehr nett
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#27

Re: minimieren in den systemtray

  Alt 24. Apr 2005, 14:24
Woran scheitert es denn?
  Mit Zitat antworten Zitat
Prym

Registriert seit: 20. Feb 2005
108 Beiträge
 
#28

Re: minimieren in den systemtray

  Alt 24. Apr 2005, 14:46
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();
}
----------
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#29

Re: minimieren in den systemtray

  Alt 24. Apr 2005, 15:50
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
self.Close; 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.

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:
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;
}
Dann brauche ich vorher keins zuweisen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 05:19 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