![]() |
minimieren in den systemtray
jop da ich ein eifrieger bin möchte ich auch noch das wissen^^
naja ganz so ist es nicht es interessiert noch jemanden anders aber zu frage: winform für delphi.net ich möschte mit einem butten 'Minimieren' das projekt in den systemtray minimieren aber bei net habe ich garkeine ahnung wie man das macht und in delphi32 braucht man ja die api soweit ich weiß |
Re: minimieren in den systemtray
erstmal nach oben schieb hoffe das ist ok
weil mir das wichtig ist hoffe mir kann jemand helfen |
Re: minimieren in den systemtray
Zitat:
|
Re: minimieren in den systemtray
oh hab ich nicht gewusst sorry
|
Re: minimieren in den systemtray
Wenn du die Property "ShowInTaskbar" veränderst, wird deine Form schonmal nicht in deer Taskbar angezeigt...
Zumindest ein Anfang |
Re: minimieren in den systemtray
so nun ists erlaubt
hoffe jetzt kann einer helfen |
Re: minimieren in den systemtray
Das macht die Komponente NotifyIcon
|
Re: minimieren in den systemtray
Zitat:
Das ist, soweit ich weiß, eine Win32-Komponente ... |
Re: minimieren in den systemtray
Zitat:
Zitat:
|
Re: minimieren in den systemtray
wie die komponente könnte mir das jemand genauer erklären
|
Re: minimieren in den systemtray
Da ich aus deinem Satz nicht ganz erkennen kann, was du erklärt haben willst (Gott schütze die Satzzeichen! :stupid:), rate ich einfach mal --
Guck dich mal in der Komponentenpalette um. Da gibt´s eine WinForms- ... äh ... na ja, nennen wir sie: Komponente namens "NotifyIcon". Die kannst du in deinem Programm schon mal nutzen um das TNA-Icon zu erzeugen. Ein Direktzugriff auf die entsprechenden API-Funktionen ist damit nicht erforderlich. |
Re: minimieren in den systemtray
ähm den post habe ich ach nicht ganz verstanden weil api gibt es in net doch nicht?
und was sollte das mit meiner frage, im zusammenhang mit allen meinen post denke ich ist schon klar wobei ich hoffe ihr mir helfen könnt nämlich wie minimiere ich ein prog in den tray mit allem drum und dran (verschwinden aus der taskleiste/erscheinen im tray/ und per doppelklick wird das programm wieder geöffnet) |
Re: minimieren in den systemtray
Zitat:
|
Re: minimieren in den systemtray
Zitat:
Zitat:
|
Re: minimieren in den systemtray
ähm ja das denke ich weil wenn du das thema gelesen hast weißt du doch das ich nur das minimiren gern würde
und ich weiß immernoch nicht was ich genau machen muss |
Re: minimieren in den systemtray
OK, du musst nur die Komponente TNotifyIcon auf die Form ziehen, damit kannst du dann sowas regeln.
|
Re: minimieren in den systemtray
ja das weiß ich das teil ist drin doch ich kann nicht in den tray minimieren oO
@all bitte was muss ich einstellen oder was brauche ich für einen code oder Prozedur oder ähnliches um mein Prog in den Tray zu bekommen? |
Re: minimieren in den systemtray
push
---------- ja das weiß ich das teil ist drin doch ich kann nicht in den tray minimieren oO @all bitte was muss ich einstellen oder was brauche ich für einen code oder Prozedur oder ähnliches um mein Prog in den Tray zu bekommen? |
Re: minimieren in den systemtray
Schau mal bitte nach, ob die Form eine Art "OnMinimize"-Ereignis hat. Oder mach dich mal im Framework SDK über das Minimieren (bzw. evtl. Ereignisse dabei) schlau.
|
Re: minimieren in den systemtray
also sowas wie on Minimize habe ich noch nicht gefunden
|
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 09:23 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