AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

iOS AniIndicator Problem

Ein Thema von Crocotronic · begonnen am 14. Mai 2013 · letzter Beitrag vom 26. Jun 2013
Antwort Antwort
Seite 1 von 2  1 2      
Crocotronic

Registriert seit: 9. Mai 2013
258 Beiträge
 
#1

iOS AniIndicator Problem

  Alt 14. Mai 2013, 17:00
Hallo,
mich beschäfftigt gerade das Objekt "TAniIndicator". Dieser Kreisel soll starten, wenn ein Thread gestartet, und stoppen, wenn ein Event vom Thread aufgerufen wird.
Delphi-Quellcode:
procedure TF_Main.OnThreadFinished(Sender: TObject),
begin
 SetState(false);
 {...}
end;

procedure TF_Main.OnThreadError(Sender: TObject; Error: Exception);
begin
 {Fehlerbehandlung}
end;

procedure TF_Main.SetState(State: Boolean);
begin
 o_status.Visible:= State;
 o_status.Enabled:= State;
end;

procedure TF_Main.Timer1Timer(Sender: TObject);
begin
 if FMyThread.Finished then
 begin
  SetState(true);
  FMyThread:= TMyThread.Create(OnThreadFinished, OnThreadError);
 end;
end;
Was ich nun überhaupt nicht verstehe: Der Kreisel hört nicht auf zu kreiseln! Erst wenn ich nach dem SetState(false) ein Event auslöse (z.B. ButtonClick), dann wird das Objekt angehalten und versteckt. Sowas wie Application.ProcessMessage oder o_status.Repaint bringt nichts. Per Button ein/ausschalten funktioniert.
Komischerweise funktioniert auch folgendes:
Delphi-Quellcode:
procedure TF_Main.Timer1Timer(Sender: TObject);
begin
 SetState(not o_status.Enabled);
end;
Wer kann mir helfen? Ich versteh die Logik einfach nicht...

Viele Grüße
Croco
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: iOS AniIndicator Problem

  Alt 14. Mai 2013, 17:21
Ich habe es aufgegeben das Ding sauber zum Laufen zu bekommen, nutze jetzt nurnoch
Delphi-Quellcode:
  try
    Platform.SetCursor(nil, crHourGlass);
    [...]
  finally
    Platform.SetCursor(nil, crDefault);
  end;
Wobei ein Application.ProcessMessages; im try-Part den Cursor wieder auf crDefault setzt.


Gruß
Philip
  Mit Zitat antworten Zitat
Crocotronic

Registriert seit: 9. Mai 2013
258 Beiträge
 
#3

AW: iOS AniIndicator Problem

  Alt 14. Mai 2013, 20:42
An allen Ecken gibt es Probleme... da ist noch viel Arbeit für die Embarcadero-Leute!

Zu deinem Lösungsvorschlag: Unter iOS gibt es ja keinen Cursor, also bringt mir das nicht sonderlich viel
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: iOS AniIndicator Problem

  Alt 15. Mai 2013, 07:52
Warum nimmst Du nicht den Beispielcode aus den Demos?

Mavarik
  Mit Zitat antworten Zitat
Crocotronic

Registriert seit: 9. Mai 2013
258 Beiträge
 
#5

AW: iOS AniIndicator Problem

  Alt 15. Mai 2013, 10:19
Per Button ein/ausschalten funktioniert.
Komischerweise funktioniert auch folgendes:
Delphi-Quellcode:
procedure TF_Main.Timer1Timer(Sender: TObject);
begin
 SetState(not o_status.Enabled);
end;
So bekomme ich ihn ja zum laufen
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: iOS AniIndicator Problem

  Alt 15. Mai 2013, 10:56
Hast du mal versucht nach dem Ausschalten mit form.invalidate; drauf zu kloppen?
Philip
  Mit Zitat antworten Zitat
Crocotronic

Registriert seit: 9. Mai 2013
258 Beiträge
 
#7

AW: iOS AniIndicator Problem

  Alt 15. Mai 2013, 19:32
funktioniert leider auch nicht
  Mit Zitat antworten Zitat
Crocotronic

Registriert seit: 9. Mai 2013
258 Beiträge
 
#8

AW: iOS AniIndicator Problem

  Alt 5. Jun 2013, 20:04
Ich bin immer noch dabei zu versuchen, den AniIndicator zum laufen zu bringen, da ich für meine Live-Ticker-App einfach ein Objekt brauche, an dem ich zeigen kann, dass gerade aktualisiert wird.

Zumindest funktioniert der NetworkIndicator auf der iOS-Eigenen Statusbar. Das Teil setzt ich vor dem Thread-Beginn auf True und im OnTerminate auf False.

Delphi-Quellcode:
procedure TXMLReader.SetNetworkProgress(Value: boolean);
begin
 {$IFDEF IOS}
 TUIApplication.Wrap(TUIApplication.OCClass.sharedApplication).setNetworkActivityIndicatorVisible(Value);
 {$ENDIF}
end;
Wenn ich jetzt einfach noch unter die Zeile den AniIndicator auf Value setze, dann geschieht das Übliche, aber mit beiden Indikatoren. Beide hören einfach nicht mehr auf zu drehen, bis irgendeine Display-Eingabe erfolgt. Es reicht aus, einfach mit dem Finger nach unten zu wischen, wobei ich auf diese Geste im Programm überhaupt icht reagiere.

Delphi-Quellcode:
procedure TXMLReader.SetNetworkProgress(Value: boolean);
begin
 {$IFDEF IOS}
 TUIApplication.Wrap(TUIApplication.OCClass.sharedApplication).setNetworkActivityIndicatorVisible(Value);
 {$ENDIF}
 AniIndicator1.Enabled:= Value;
end;
Was zur Hölle kann man dagegen unternehmen?
  Mit Zitat antworten Zitat
Crocotronic

Registriert seit: 9. Mai 2013
258 Beiträge
 
#9

AW: iOS AniIndicator Problem

  Alt 24. Jun 2013, 21:24
Ich habe dem Teil den Krieg erklärt
Und ich würde auch behaupten, dass ich nach 2 Stunden intensivem rumprobieren den Fehler am Kragen habe. Ich brauche lediglich nur noch jemand, der den Fehler interpretiert
Ich habe mein Programm (LiveTicker) einfach soweit reduziert, bis nur noch ein paar Zeilen Code übrig geblieben sind. Jetzt sollte es einfach sein, den Fehler zu finden. Daraus hab ich dann ein kleines Testprogramm gemacht. Das häng ich mal als ZIP hier an.
Die uses clause hab ich einfach mal so gelassen.
Wie ihr sehen könnt, macht die Klasse MyThreadClass in diesem Context eher keinen Sinn. Aber wie gesagt, ist eben alles reduziert.
Wäre euch sehr dankbar, wenn sich das mal jemand angucken könnte!

Noch mal das Problem zusammen gefasst: Alle 10 Sekunden wird ein Thread gestartet, der etwas runterläd. Vor dem Start wird ein AniIndicator aktiviert. Im OnFinished-Event wird er wieder deaktiviert. Die Zeit, wann er ihn deaktiviert ist total willkürlich. Um ihn "manuell" zu stoppen, einfach nach unten wischen (keine Ahnung warum).
Unter Windoof funktionierts....

Viele Grüße
Croco
Angehängte Dateien
Dateityp: zip AniIndicatorTest.zip (6,3 KB, 14x aufgerufen)

Geändert von Crocotronic (24. Jun 2013 um 21:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: iOS AniIndicator Problem

  Alt 26. Jun 2013, 14:52
Also...

Welchen Einfluss FreeOnTerminate:= true; auf Deine FMyThread variable hat... (bei ARC)... Keine Ahnung, nutze das NIE!

Kann man den isFinnished noch abfragen?

Delphi-Quellcode:
 if (FMyThread = nil)
   then FMyThread:= TMyThread.Create(OnThreadFinished)
   else begin
          FMyThread := NIL;
          FMyThread:= TMyThread.Create(OnThreadFinished);
        end;
So geht es... Ohne Berücksichtigung ob der Thread noch läuft...

Der Thread läuft bei mir aber nicht immer 2 Sekunden... Das dauert ggf. länger!

Mavarik

Geändert von Mavarik (26. Jun 2013 um 14:57 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:20 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