![]() |
AW: Wait Animation
Zitat:
wenn das laden schon verhindert das die Anwendung erst später angezeigt wird, läuft die Animation dann noch? Zitat:
Initialize erstellt das Window und startet die Animation (jetzt in einem Thread) Deinitialize stoppt die Animation und zerstört das Window. Gut könnte man umbenennen was aber an der eigentlichen Funktion nichts ändert. Zitat:
Delphi-Quellcode:
Ich parse dann in der Funktion nach dem erstellen des Windows die CmdLine mit dem Delemiter "/"
procedure TForm1.StartAnimation;
var ExePath: PWideChar; Parameter: PWideChar; begin // Parameter 1 = Png File // Parameter 2 = Delay // Parameter 3 = ParentHandle ExePath := PWideChar(ExtractFilePath(ParamStr(0)) + 'Spinner.exe'); Parameter := PWideChar('/Eagle.png/30' + '/' + IntToStr(Handle)); ShellExecute(0, 'open', ExePath, Parameter, nil, SW_SHOW); end;
Delphi-Quellcode:
function IsFile(FileName: String): Boolean;
begin Result := FileExists(FileName) and not DirectoryExists(FileName); end;
Delphi-Quellcode:
sollte eigentlich für kein Programm ein Problem sein ShellExecute aufzurufen. (Abgesehen von den UAC User Rechten)
Style := WS_POPUP or WS_VISIBLE;
MainHandle := CreateWindowExW(WS_EX_TOOLWINDOW or WS_EX_TOPMOST, 'Spinner', '', Style, 0, 0, 0, 0, 0, 0, hInstance, nil); CmdLine := split(lpCmdLine, '/'); if High(CmdLine) > 0 then begin if IsFile(CmdLine[1]) then Initialize(StrToInt(CmdLine[3]), MainHandle, ExtractFilePath(ParamStr(0)) + CmdLine[1], StrToInt(CmdLine[2])); end else DestroyWindow(MainHandle); Zitat:
Zitat:
Sag bescheid lade dann den Quelltext der DLL hoch . Optimierung was die CPU Auslastung angeht kann man immer noch. Ist halt auch abhängig davon wie groß die Animationen sind und dem entsprechenden Delay dazu. Habe bisher von den erstellten Strips die ich habe eine Last zwischen 0 und 15% Die Nachteile der EXE sind dann doch schwerwiegender abgesehen davon ob die Animationen auch noch laufen wenn die Anwendung selbst wartet oder warten muss wenn ich die DLL Version letztendlich verwende. EDIT: Eventuell was noch fehlt. Eine Callback in der die Start und beenden Aufrufe gestartet werden abhängig von der aktuellen Auslastung der Anwendung. Vielleicht zu kompliziert? (Async Thread?) gruss |
AW: Wait Animation
Zitat:
zuerst ausgeführt :) Sollte also schonmal kein Problem sein. Natürlich kann es zu Ruckel-Effekten kommen, wenn das ganze den Rechner arg überlastet, aber das Problem hast du mit jeglichen Geschichten in der Hinsicht (selbst mit der simplen Progress-Bar). Zitat:
Zitat:
Zitat:
Ist halt auch abhängig davon wie groß die Animationen sind und dem entsprechenden Delay dazu. Habe bisher von den erstellten Strips die ich habe eine Last zwischen 0 und 15% Die Nachteile der EXE sind dann doch schwerwiegender abgesehen davon ob die Animationen auch noch laufen wenn die Anwendung selbst wartet oder warten muss wenn ich die DLL Version letztendlich verwende. [/QUOTE] Das mit der Komponente kann ich gerne machen. Btw..da fällt mir ein, wenn jemand unbedingt das als eigenständige EXE braucht, kann er sich ja auch ein kleines Programmschreiben, das dann extra ausgeführt wird :) Zitat:
|
AW: Wait Animation
Zitat:
Mache das noch mit dem Thread fertig addier noch ein paar Animationen zum testen und lade es dann hoch. Werde dann den Versuch mit der EXE löschen. gruss |
AW: Wait Animation
Neue Version oben incl. Thread\Source und neuer Animationen.
Hoffe du findest nicht zu viele Fehler ;) Hier auf die schnelle noch ne Anim Im Source Archiv enthalten. Einfach im Projekt zur Case addieren ..
Delphi-Quellcode:
Auf 8 erhöhen und das anfügen.
if SpinnerCount = 9 then
SpinnerCount := 0;
Delphi-Quellcode:
6:
begin Spinner := CTRL_SpinnerCreate; SpinnerHandle := Spinner.CreateWindow(Handle); SpinnerFile := ExtractFilePath(ParamStr(0)) + 'spinn.png'; Spinner.Start(Handle, SpinnerHandle, SpinnerFile, 100); end; 7: begin Spinner := CTRL_SpinnerCreate; SpinnerHandle := Spinner.CreateWindow(Handle); SpinnerFile := ExtractFilePath(ParamStr(0)) + 'butterfly.png'; Spinner.Start(Handle, SpinnerHandle, SpinnerFile, 75); end; 8: begin Spinner := CTRL_SpinnerCreate; SpinnerHandle := Spinner.CreateWindow(Handle); SpinnerFile := ExtractFilePath(ParamStr(0)) + 'cube01.png'; Spinner.Start(Handle, SpinnerHandle, SpinnerFile, 16); end; gruss |
AW: Wait Animation
Sieht gut aus. Das einzige das ich vermisse ist,
das ich keinen Stream statt eines Dateinamens (für die Animation) angeben kann.:zwinker: Komponente is auch so gut wie fertig :) |
AW: Wait Animation
Zitat:
Im Source Archiv enthalten. Ja das Problem ist mit Streams das ich GdipDrawImageRectRectI die einzelnen Frames zeichne. Ich muss mich mal schlau machen ob es möglich ist die Animationen als Stream zu zeichnen. (Habs noch nie gemacht) Das bringt allerdings nur etwas wenn das einen kräftigen Schub bringt was die Auslastung angeht. Solltest du was anderes meinen dann kannst du es gerne ändern wenn es möglich ist und es deiner Meinung etwas bringt. Hoffentlich schlägt Daniel mich nicht für die ganzen Uploads. Zitat:
gruss |
AW: Wait Animation
Neeeee....Streams wie TStream als Quelle der Animation. Damit könnte man z.B. das png mit in die Resource der Anwendung packen und dann statt filename einfach einen TResourceStream übergeben :)
|
AW: Wait Animation
Zitat:
JO würde gehen macht aber die EXE dementsprechend groß ;) So wie es im Moment ist, ist man unabhängig und kann Nacheinander die Anims laden so wie man sie gerade braucht. gruss |
AW: Wait Animation
Naja...die Varianten schließen sich ja nicht aus :) Entweder ein Dateiname oder ein Stream.
|
AW: Wait Animation
Zitat:
gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:45 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 by Thomas Breitkreuz