![]() |
Systray + Gauge1.Progress = FEHLOOOOR
Huhu!!
Habe folgenden (teil)Code beim Minimieren meines Projektes und mein Problem ist , dass er ne Fehlermeldung bei dem Tooltip sagt:
Delphi-Quellcode:
Beim Markierten (" <--- DA T.T") wird eine Fehlermeldung gezeigt: Inkompatible Typen : Array und Integer;
procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin if CheckBox1.Checked = true then begin //Vorgang: Minimieren der Anwendung, Entfernung des Taskleisteneintrags //und Hinzufügen des Programmicons neben der Uhr Form1.FormStyle:=fsStayOnTop; Hide; with NIM do begin cbSize := SizeOf (nIM); Wnd := Handle; uID := 0; uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; uCallbackMessage := IC_CLICK; hIcon := Application.Icon.Handle; szTip := Gauge1.Progress; //<--- DA T.T end; Shell_NotifyIcon(NIM_ADD, @NIM); end else begin end; end; mit IntToStr gehts auch ned :/ |
Re: Systray + Gauge1.Progress = FEHLOOOOR
Da stellen sich die Fragen : Was ist NIM ? Was ist szTip ? Ist szTip ein Array of Integer ? dann musst du ein Index angeben...
|
Re: Systray + Gauge1.Progress = FEHLOOOOR
so sieht der beispielcode einer homepage aus:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ShellApi, AppEvnts; const IC_CLICK = WM_APP + 201; type TForm1 = class(TForm) ApplicationEvents1: TApplicationEvents; procedure ApplicationEvents1Minimize(Sender: TObject); private { Private-Deklarationen } procedure Systray(var sMsg: TMessage); message IC_CLICK; public { Public-Deklarationen } end; var Form1: TForm1; NIM : TNotifyIconData; implementation {$R *.DFM} procedure TForm1.Systray(var sMsg: TMessage); begin // Vorgang: Klick auf das Icon neben der Uhr und Anzeige der Anwendung inherited; if (sMsg.LParam = WM_LBUTTONDOWN) then begin Show; Shell_NotifyIcon(NIM_DELETE, @NIM); Application.Restore; //zeigt die Anwendung wieder an end; end; procedure TForm1.ApplicationEvents1Minimize(Sender: TObject); begin //Vorgang: Minimieren der Anwendung, Entfernung des Taskleisteneintrags //und Hinzufügen des Programmicons neben der Uhr Form1.FormStyle:=fsStayOnTop; Hide; with NIM do begin cbSize := SizeOf (nIM); Wnd := Handle; uID := 0; uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; uCallbackMessage := IC_CLICK; hIcon := Application.Icon.Handle; szTip := 'Test-Programm'; end; Shell_NotifyIcon(NIM_ADD, @NIM); end; end. |
Re: Systray + Gauge1.Progress = FEHLOOOOR
vielleicht:
szTip := @IntToStr(Gauge1.Progress)[1]; |
Re: Systray + Gauge1.Progress = FEHLOOOOR
Zitat:
T.T |
Re: Systray + Gauge1.Progress = FEHLOOOOR
mhh.
Delphi-Quellcode:
kann das leider gerade nicht ausprobieren, könnte aber funktionieren.
var
HintText: String; begin HintText := IntToStr(Gauge1.Progress); with NIM do begin Move(HintText[1], szTip, Length(szTip)); Shell_NotifyIcon(NIM_MODIFY, @TrayIcon); end; end; |
Re: Systray + Gauge1.Progress = FEHLOOOOR
öhm entweder habs ned geblickt oder es geht ned >.<
|
Re: Systray + Gauge1.Progress = FEHLOOOOR
ich hab es wie folgt geschafft:
Delphi-Quellcode:
var
tmpStr: String; begin Form1.FormStyle:=fsStayOnTop; Hide; with NIM do begin cbSize := SizeOf (nIM); Wnd := Handle; uID := 0; uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; uCallbackMessage := IC_CLICK; hIcon := Application.Icon.Handle; tmpStr := IntToStr(Gauge1.Position); Move(tmpStr[1], szTip, Length(szTip)); end; Shell_NotifyIcon(NIM_ADD, @NIM); |
Re: Systray + Gauge1.Progress = FEHLOOOOR
cool das geht!! vielen dank!!
noch ne kleine frage: wenn die gauge nun hochgeht und ich drüberfahr mit der maus , wie geht es , dass es dauernd aktuallisiert? also ned nur den wert der gauge nimmt , der beim minimieren auftritt |
Re: Systray + Gauge1.Progress = FEHLOOOOR
meinst du den hint/tooltip?
wenn ja, dann musst du den hint halt ständig aktualisieren (Gauge1.Hint := xx). um die aktualisierung (für die gesamte application) zu ändern könntest du folg. befehle verwenden: Application.HintHidePause := xx; Application.HintPause := xx; |
Re: Systray + Gauge1.Progress = FEHLOOOOR
was kommt dann ins xx rein und wo setz ich diesen befehl ein? in nen timer?
|
Re: Systray + Gauge1.Progress = FEHLOOOOR
also die generellen Hint-Eigenschaften (HintPause, HintHidePause, usw.) setzt du am besten im OnCreate deiner Form. Den Hint der Gauge kannst du durch einen Timer aktualisieren, ich würde den Wert allerdings dort aktualisieren, wo du die Position der Gauge erhöhst. Somit brauchst du keinen Timer extra dafür und das Ereignis wird nicht sinnlos wiederholt.
Informationen zu den xx gibt es in der Hilfe. Die Angabe ist die Zeit in Millisekunden. |
Re: Systray + Gauge1.Progress = FEHLOOOOR
hm geht irgendwie ned o.o bei Gauge1.Hint := 1000 sagt er Inkompatible Typen "Integer und String"
|
Re: Systray + Gauge1.Progress = FEHLOOOOR
das ist ja klar. der hint ist vom typ string. 1000 ist eine zahl die du erst umwandeln musst.
zb. mit Hint := IntToStr(Gauge1.Position); oder Hint := IntToStr(666); |
Re: Systray + Gauge1.Progress = FEHLOOOOR
aber wenn ich Gauge1.Hint := IntToStr(1000) mache dann ändert sich das , klar , aber die zahl ändert sich doch? o.o
ich blick echt ned wie das gehen soll , kannste mir ma n paar codes aufschreiben plz? T.T |
Re: Systray + Gauge1.Progress = FEHLOOOOR
was willst du denn im hint anzeigen? doch die position der Gauge, oder?
wenn ja, dann schreib folgendes: Gauge1.Hint := 'Position ' + IntToStr(Gauge1.Position); oder Gauge1.Hint := Format('Position %d', [Gauge1.Position]); |
Re: Systray + Gauge1.Progress = FEHLOOOOR
wo rein schreiben? ^^"
also ich möcht beim Mouseover beim Systrayicon dass da dann in diesem Hint steht , bei wievielen % er is ^^ also dass sich das bei ner änderung aktuallisiert |
Re: Systray + Gauge1.Progress = FEHLOOOOR
achso.
als wie das bei onmouseover über dem TrayIcon geht, kann ich dir nicht sagen. Ich würde dir die TCoolTrayIcon Komponente von Torry empfehlen. Ist wesentlich schlanker als die bei den Jedis, und die dürfte dieses ereignis bereits implementiert haben. ansonsten musst du das per Hand machen (weiß ich aber nicht wie). Zum ändern des Tooltips deines TrayIcon NIM: (das hier bspw. in einen Timer packen oder in eine prozedur, sobald sich die Gauge Progress erhöht).
Delphi-Quellcode:
with NIM do
begin ... HintText := IntToStr(Gauge1.Position); ... Move(HintText[1], szTip, Length(szTip)); //wie gehabt, HintText anpassen. Shell_NotifyIcon(NIM_MODIFY, @NIM); // <-- Hier wichtig: NIM_Modify teilt dem TrayIcon mit, dass es sich um eine Änderung handelt. end; |
Re: Systray + Gauge1.Progress = FEHLOOOOR
Super!! Das klappt wie geschmiert!
echt großes danke an dich! :thumb: :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:02 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-2025 by Thomas Breitkreuz