AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Wait Animation

Wait Animation

Ein Thema von EWeiss · begonnen am 14. Mär 2017 · letzter Beitrag vom 14. Apr 2017
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: Wait Animation

  Alt 17. Mär 2017, 12:58
Danke für deine Mithilfe denke sollte jetzt komplett sein

gruss
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
992 Beiträge
 
Delphi 6 Professional
 
#2

AW: Wait Animation

  Alt 17. Mär 2017, 14:07
Hmm..

Habe mir das Demo angesehen..
(ohne Src anzuschauen)

Was mir nur aufgefallen ist, dass der Spinner immer an der Stelle auf dem Bildschirm verbleibt, an welcher er gestartet wurde.

Verschiebt man nun das Fenster der Applikation oder minimized es, bleibt der Spinner stehen.

Vielleicht gibt es ja eine Möglichkeit das der Spinner mitgeht.

Und eventuell Transparenz?

(alles nur Ideen.. )
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Wait Animation

  Alt 17. Mär 2017, 14:14
Zitat:
Was mir nur aufgefallen ist, dass der Spinner immer an der Stelle auf dem Bildschirm verbleibt, an welcher er gestartet wurde.
Ja es ist eine Wait Animation.
Und diese wird zentriert über das Parent Fenster gesetzt.

Es ist nicht vorgesehen das die Animation mitgeht.
Ich glaube nicht das wenn eine Anwendung bei verschiedenen Prozessen ausgelastet ist der User sein Window Verschieben will.
Das Sample ist ja nicht maßgeblich da hier die Animation nur gestartet und beendet wird.

Bsp.
Ich starte eine Anwendung die beim initialisieren ein liste mit mehr als 5000 Einträge lädt.
Delphi-Quellcode:
function TPlayList.LoadM3UFile(Filename: String): Boolean;
var
  F: TextFile;
  Buffer, iTime, sFilename, sParse: string;
  k, iPos1, iPos2: Integer;
begin
  Spinner := CTRL_SpinnerCreate;
  SpinnerHandle := Spinner.CreateWindow(MainHandle);
  SpinnerFile := SKAERO_FOLDER + 'Spinner.png';
  Spinner.Start(MainHandle, SpinnerHandle, SpinnerFile, 30);

  AssignFile(F, Filename);
  Reset(F);
  PlayListCount := 0;
  while not Eof(F) do
  begin
    ReadLn(F, Buffer);
    if Buffer = '#EXTM3Uthen
      Continue;

    ReadLn(F, sFilename);
    LVPlayList.SetSysItemIcon(PlayListCount, 2, sFilename);

    if Pos('#EXTINF', Buffer) > 0 then
    begin
      LVPlayList.InsertItem(LVPlayList.Handle, PlayListCount, IntToStr(PlayListCount + 1));
      iPos1 := Pos(':', Buffer);
      iPos2 := Pos('|', Buffer);

      iTime := Copy(Buffer, iPos1 + 1, iPos2 - iPos1 - 1);
      LVPlayList.SetItemText(LVPlayList.Handle, PlayListCount, 1, iTime);

      for k := 0 to 2 do
      begin
       sParse := ParseThis(Buffer, '|', K + 1);
       case K of
         0:
           LVPlayList.SetItemText(LVPlayList.Handle, PlayListCount, 2, sParse);
         1:
           LVPlayList.SetItemText(LVPlayList.Handle, PlayListCount, 3, sParse);
         2:
           LVPlayList.SetItemText(LVPlayList.Handle, PlayListCount, 4, sParse);
       end;
      end;
      LVPlayList.SetItemText(LVPlayList.Handle, PlayListCount, 5, sFilename);

      Inc(PlayListCount);
    end
    else
    begin
      if ExtractFilePath(Buffer) = 'then
        FFile.Add(ExtractFilePath(Filename) + Buffer)
      else
        FFile.Add(Buffer);

      FTitle.Add(Buffer);
      FTime.Add('');
    end;
  end;
  CloseFile(F);

  LVPlayList.SetColAutoSize(LVPlayList.Handle, 2);
  LVPlayList.SetColAutoSize(LVPlayList.Handle, 3);
  LVPlayList.SetColAutoSizeUseHeader(LVPlayList.Handle, 4);

  if (PlayListCount > 0) then
    MainApp.PlayListPlay(LVPlayList.Handle, PlayListCount);

  Result := True;
end;
Dann starte ich den Spinner.
Nach dem laden wenn das Fenster angezeigt wird beendet sich dieser.
Also ein Fenster ist in dem Fall gar nicht sichtbar wenn die Animation startet.

Delphi-Quellcode:
      MainInit := TRUE;

      if SpinnerHandle <> 0 then
        SpinnerHandle := Spinner.Stop;

      while GetMessage(Msg, 0, 0, 0) do
      begin
        if IsDialogMessage(MainApp.Handle, Msg) = False then
        begin
          TranslateMessage(Msg);
          DispatchMessage(Msg);
        end;
      end;
Zitat:
Und eventuell Transparenz?
Welche Transparenz?

Die Animationen sind Transparent dazu verwende ich die DWM.

gruss

Geändert von EWeiss (17. Mär 2017 um 14:22 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
992 Beiträge
 
Delphi 6 Professional
 
#4

AW: Wait Animation

  Alt 17. Mär 2017, 14:27
Hmm..

Schade (das mit dem Verschieben)..

Gerade wenn eine App (länger) beschäftigt ist, dann verschiebe ich sie oder minimiere sie um was anderes zu machen und da bleibt der Spinner im Vordergrund auf dem Bildschirm stehen..

Das mit dem transparent funktioniert bei mir nicht!
Die Spinner sind immer auf schwarzem Grund.
(Windows 7, muss da was aktiviert sein?)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Wait Animation

  Alt 17. Mär 2017, 14:32
Hmm..

Schade (das mit dem Verschieben)..

Gerade wenn eine App (länger) beschäftigt ist, dann verschiebe ich sie oder minimiere sie um was anderes zu machen und da bleibt der Spinner im Vordergrund auf dem Bildschirm stehen..

Das mit dem transparent funktioniert bei mir nicht!
Die Spinner sind immer auf schwarzem Grund.
(Windows 7, muss da was aktiviert sein?)
Hmm.. wie gesagt es funktioniert zumindest bei mir.
Siehe hier die beiden Bilder

oder das Bild im Anhang!

Es kann sein wenn du die Transparenz von Windows ausschaltest das die Animation in dem Fall einen schwarzen Hintergrund hat.
Ich verwende auch W7 64Bit.

Zitat:
und da bleibt der Spinner im Vordergrund auf dem Bildschirm stehen..
Soll auch so sein da er dir dann signalisiert wenn der aktive Prozess wofür du die Animation verwendest fertig ist.

gruss

Geändert von EWeiss (11. Jul 2019 um 15:46 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
992 Beiträge
 
Delphi 6 Professional
 
#6

AW: Wait Animation

  Alt 17. Mär 2017, 14:37
Hmm..

Hier nen ScreenShot bei mir..

Zitat:
Soll auch so sein da er dir dann signalisiert wenn der aktive Prozess wofür du die Animation verwendest fertig ist.
Tja und da ist mein Problem..
Ich lasse mehrere Programme (Prozesse) laufen und wechsel zuwischen denen.
Leider ist dann immer der Spinner (von dem minimierten/im Hintergrund liegenden Prozess) im Wege..

Deshalb ist ja mein Anliegen, das der Spinner ja zu einem Prozess/Programm gehört und dann mit diesem wandert/in den Hintergrund geht..
Miniaturansicht angehängter Grafiken
spinner.jpg  
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Wait Animation

  Alt 17. Mär 2017, 14:42
Hmm..

Hier nen ScreenShot bei mir..

Zitat:
Soll auch so sein da er dir dann signalisiert wenn der aktive Prozess wofür du die Animation verwendest fertig ist.
Tja und da ist mein Problem..
Ich lasse mehrere Programme (Prozesse) laufen und wechsel zuwischen denen.
Leider ist dann immer der Spinner (von dem minimierten/im Hintergrund liegenden Prozess) im Wege..

Deshalb ist ja mein Anliegen, das der Spinner ja zu einem Prozess/Programm gehört und dann mit diesem wandert/in den Hintergrund geht..
Ich sagte doch das die Windows Theme DWM (Transparente Taskbar usw.. ) eingeschaltet sein muss.
Oder du hast das hier..
Und so wie ich in deinem Shot sehen kann, allein schon an den Button, du verwendest keine Theme.

EDIT:
Zitat:
in den Hintergrund geht..
Das sollte kein Problem sein.. du hast ein Window Handle.
Es steht dir frei damit zu tun was du möchtest..

Bsp.
ShowWindow(SpinnerHandle, SW_HIDE);

wenn du deine Anwendung minimierst.


gruss

Geändert von EWeiss (11. Jul 2019 um 15:46 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:07 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