![]() |
Fortschrittsanzeige während Browser Seite neu lädt
'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:
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.
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; Hier noch die SetAssignedTAGs Funktion:
Delphi-Quellcode:
Bin sehr empfänglich für ein bisschen Beihilfe.
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; Grüsse hirnstroem |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:38 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