![]() |
mehrfaches Nachrichten-Event verhindern...
Hallo Gemeinte!
Ich habe ein kleines Programm geschrieben, welches mir erlaubt die Anzahl der gedruckten Seiten auszugeben. Jetzt steh ich aber vor dem Problem, das offenbar die Nachricht, das der Job erledigt ist, mehrfach in meinem Programm ausgelöst wird. Ich brauche nun aber die letzte Nachricht um zum korrekten Ergebniss zu kommen. Wie bewerkstellige ich das am besten? Die folgende Procedure stellt dar, wie ich die ankommende Nachricht - das der Job erledigt ist - behandle bzw. mit den Daten umgehe. Diese Procedure wird allerdings mehrfach aufgerufen. Ich glaube nicht das ich das verhindern kann, aber es muss doch einen Weg geben das Ergebnis (in meinem Fall die Anzahl der gedruckten Seiten) des letzten Events zu verarbeiten. Doch wie bekomme ich raus wann die letzte Nachricht ankommt??? Da ich dazu neige, wichtige Details in meinen Posts zu vergessen, möchte ich mich dafür schonmal entschuldigen... Hier der Code welcher mehrfach aufgerufen wird - wenn der Druck-Job beendet ist:
Delphi-Quellcode:
procedure TMain.JobNotification(const jobinfo: TPBJobInformation);
const orientations: Array [TPrinterOrientation] Of String = ('Hochformat', 'Querformat'); var item: TListitem; begin listview1.Items.BeginUpdate; Try item := listview1.Items.Add; item.Caption := FormatDateTime('dd-mm-yyyy', Date ); item.SubItems.Add( FormatDateTime( 'hh:nn:ss:zzz', Time )); item.SubItems.Add( GetEnumName( Typeinfo( TPBJobStatus), Ord( jobinfo.Status))); item.SubItems.Add( IntToStr( jobinfo.JobID )); item.SubItems.Add( jobinfo.Computer ); item.SubItems.Add( jobinfo.User ); item.SubItems.Add( jobinfo.PrinterName ); item.SubItems.Add( jobinfo.Document ); item.SubItems.Add( IntToStr( jobinfo.Pages )); item.SubItems.Add( IntToStr( jobinfo.BytesPrinted )); item.SubItems.Add( IntToStr( jobinfo.TotalPages )); If jobinfo.Status = jsCompleted Then begin Label8.Caption := IntToStr(StrToInt(Label8.Caption) + jobinfo.TotalPages); Label12.Caption := IntToStr(StrToInt(Label12.Caption)+5); RegWriteInt(HKCU, TSPath, 'Pages', StrToInt(Label8.Caption)); RegWriteInt(HKCU, TSPath, 'Costs', StrToInt(Label12.Caption)); JvLog.Add('Pages', Label8.Caption); JvLog.Add('Costs', Label12.Caption); end; item.SubItems.Add( IntToStr( jobinfo.TotalBytes )); item.Subitems.Add( IntToStr( jobinfo.Copies )); item.Subitems.Add( orientations[ jobinfo.Orientation ] ); Finally listview1.Items.EndUpdate; End; { Finally } end; |
Re: mehrfaches Nachrichten-Event verhindern...
Hat sich erledigt! Hab's anders gemacht. Man braucht ja nur die aktuelle gedruckten Seite mit Totalpages vergleichen, wenn beides stimmt - und das geschieht nur einmal, hat man auch nur einmal das gesuchte Ergebnis.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:24 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