AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Fortschrittsanzeige während Browser Seite neu lädt
Thema durchsuchen
Ansicht
Themen-Optionen

Fortschrittsanzeige während Browser Seite neu lädt

Ein Thema von hirnstroem · begonnen am 27. Nov 2006
Antwort Antwort
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#1

Fortschrittsanzeige während Browser Seite neu lädt

  Alt 27. Nov 2006, 07:18
'loha Folks,

der nachfolgend abgebildete Teil einer Prozedur, ruft eine Funktion auf (DI.SetAssignedTAGs), welche je nach dem ein bis zwei Minuten etwas macht und mir eine Antwort zurückliefert, ob die Funktion denn auch das gmacht hat was sie sollte. Wenn ja ist gut, wenn nicht, gibt wird eine Fehlermeldung ausgegeben.

Delphi-Quellcode:
  if DataSet.FieldByName('Busy').Value = False then
  begin
    DataSet.Edit;
    DataSet.FieldByName('Busy').Value := True;
    DataSet.FieldByName('BusyStartTime').Value := Now;
    DataSet.Post;
    case DI.SetAssignedTAGs(IntToStr(DataSet.FieldByName('Address').Value), (Sender as TIWImageFile).Tag) of // <- dauert eine Weile
      True: begin
               DataSet.RecNo := (Sender as TIWImageFile).Tag;
               WebApplication.Showmessage
                 (
                 'Meldung: Aktion abgeschlossen' +
                 #13#10 +
                 #13#10 +
                 'Aktion: Schlüssel programmieren' +
                 #13#10 +
                 'Gerätetyp: ' + DataSet.FieldByName('DeviceType').AsString +
                 #13#10 +
                 'Adresse: ' + DataSet.FieldByName('Address').AsString +
                 #13#10 +
                 #13#10 +
                 'Information: ' + IntToStr(UserSession.ADODataSet_Key.RecordCount) + ' Schlüssel programmiert'
                 );
             end;
      False: begin
               DataSet.RecNo := (Sender as TIWImageFile).Tag;
               WebApplication.Showmessage
                (
                'Meldung: Fehler' +
                 #13#10 +
                 #13#10 +
                 'Aktion: Schlüssel programmieren' +
                 #13#10 +
                 'Gerätetyp: ' + DataSet.FieldByName('DeviceType').AsString +
                 #13#10 +
                 'Adresse: ' + DataSet.FieldByName('Address').AsString +
                 #13#10 +
                 #13#10 +
                 'Information: -'
                );
            end;
    end;
    DataSet.Edit;
    DataSet.FieldByName('Busy').Value := False;
    DataSet.Post;
  end;
Da die Applikation über ein Webinterface bedient wird und die Funktion etwas länger dauert, wird während der Wartezeit im Browser die Seite "neu geladen". Eigentlich würde ich aber gerne eine Fortschrittsanzeige einblenden. Nun fehlt mir ehrlich gesagt das Wissen, wie so etwas zu realisieren wäre.

Hier noch die SetAssignedTAGs Funktion:

Delphi-Quellcode:
function TDI.SetAssignedTAGs(Address: String; RecNo: Integer): Boolean;
var
  Code, Code1, Code2, Code3, Code4: String;
  Keys: TADODataSet;
  i, iKeys: integer;
begin
  Keys := UserSession.ADODataSet_Key;
  Keys.Open;
  Keys.First;
  if InitAccessTable(Address) = False then
  begin
    Result := False;
    Exit;
  end;
  for iKeys := 0 to Keys.RecordCount - 1 do
  begin
    Code := Keys.FieldByName('Code').Value;
    // build First part of key
    Code1 := Copy(Code, ((0 * 2) + 1), 2);
    Code2 := Copy(Code, ((1 * 2) + 1), 2);
    Code3 := Copy(Code, ((2 * 2) + 1), 2);
    Code4 := Copy(Code, ((3 * 2) + 1), 2);
    for i := 0 to NumberOfResends do
    begin
      // send first part of key
      CANBus.SendMessage
        (Address, '8', '2', '0', Code1, Code2, Code3, Code4, '55');
      if CANCommunication.TryToGetAnswer('2') = True then
      begin
        Result := True;
        Break;
      end
      else
      begin
        Result := False;
        if i = NumberOfResends then Exit;
      end;
    end;
    // build Second part of key
    Code1 := Copy(Code, ((4 * 2) + 1), 2);
    Code2 := Copy(Code, ((5 * 2) + 1), 2);
    Code3 := Copy(Code, ((6 * 2) + 1), 2);
    Code4 := Copy(Code, ((7 * 2) + 1), 2);
    for i := 0 to NumberOfResends do
    begin
      // send second part of key
      CANBus.SendMessage
        (Address, '8', '2', '1', Code1, Code2, Code3, Code4, '55');
      if CANCommunication.TryToGetAnswer('2') = True then
      begin
        Result := True;
        Break;
      end
      else
      begin
        Result := False;
        if i = NumberOfResends then Exit;
      end;
    end;
    Keys.Next;
  end;
end;
Bin sehr empfänglich für ein bisschen Beihilfe.

Grüsse
hirnstroem
inde deus abest
  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 00:14 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