AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi mehrfaches Nachrichten-Event verhindern...
Thema durchsuchen
Ansicht
Themen-Optionen

mehrfaches Nachrichten-Event verhindern...

Ein Thema von locutus2k5 · begonnen am 11. Jan 2009 · letzter Beitrag vom 11. Jan 2009
Antwort Antwort
locutus2k5

Registriert seit: 28. Jan 2007
Ort: Naumburg
13 Beiträge
 
Delphi 2006 Personal
 
#1

mehrfaches Nachrichten-Event verhindern...

  Alt 11. Jan 2009, 19:16
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;
  Mit Zitat antworten Zitat
locutus2k5

Registriert seit: 28. Jan 2007
Ort: Naumburg
13 Beiträge
 
Delphi 2006 Personal
 
#2

Re: mehrfaches Nachrichten-Event verhindern...

  Alt 11. Jan 2009, 23:13
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.
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:21 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