![]() |
Re: Desktop Widget Engine (v0.31)
Ich bin früher auch immer nur über ein Proxy reingekommen und ich weiß wie blöd es ist, wenn man ein Programm hat, das ohne Internet extrem eingeschrängt ist. Von daher weiß ich wie blöd sowas ist und leider hab ich das Proxy-Problem bisher verdrängt. :zwinker:
|
Re: Desktop Widget Engine (v0.31)
meine prozedur:
Delphi-Quellcode:
das ganze hab ich mit OnMouseIn und OnSetFocus verbunden, funzt nich
procedure MouseEnter(Sender: TObject);
begin mainform.setFormAlpha(88); mainform.RenderForm; end; ich hab die prozedur einfach in den quelltext geschrieben ohne deklaration, die ja anscheinend nicht notwendig ist bei deinem widget-system ich will die alphawerte dynam. setzen, wenn ich rüberfahre soll sich der alphawert ändern. bezüglich objektinspektor, wär geil wenn ereignissprozeduren wie bei delphi bei doppelclick auf das ereignis einfach hinzugefügt werden und acha das mit dem minimieren bei deinem proggi funzt auch noch nicht richtig, nervt auch dass das immer im tna startet. wäre geil wenn du das programm in 2 proggis aufteilst, eines zum hinzufügen und bearbeiten von widgets und eines das die widgets anzeigt, damit spart man auch paar ressourcen |
Re: Desktop Widget Engine (v0.31)
Zitat:
Öffne das Widget im Editor und setze bei jedem UNTER-Element von wgImage1 die Eigenschaft "MouseTransparent" auf True. Dann wählst du wgImage1 aus (dort muss "MouseTransparent" auf False stehen) und weist dann die Events OnMouseIn und OnMouseOut zu. In die Events schreibst du dann ein SetFormAlpha und das RenderForm von oben - FERTIG! Zitat:
Zitat:
Zitat:
Dass mit einem seperaten Editor ist doch nicht resourcenschonender - da der Editor nur bei Bedarf geladen wird und somit normalerweise nicht im Speicher ist. |
Re: Desktop Widget Engine (v0.31)
Zitat:
und cool wäre auch ein rechtemaus menü für den quelltexteditor z.b. zum kopieren einfügen. ich hab nen gebrochenes schlüsselbein und nutze vorzugsweise die maus, das ständige umgreifen auf die tastatur zu strg+v dauert da ewig :wink: |
Re: Desktop Widget Engine (v0.31)
Zitat:
Zitat:
|
Re: Desktop Widget Engine (v0.31)
so hab grad was ausprobiert:
wenn ich mit dem minus zeichnen ( - ) rechnen will, müssen immer leerzeichen darum sein, ansonsten kommt nen fehler :shock: ich hab jetz ne fade funktion gemacht:
Delphi-Quellcode:
funktioniert wunderbar, nur wird das onmouseout event garnicht ausgeführt, wenn das onmousein event gerade noch ausgeführt wird:
procedure wgImage1MouseIn(Sender: TObject);
var i,k:integer; begin for i:=1 to 31 do begin mainform.setFormAlpha(100+(i*5)); mainform.RenderForm; sleep(10); end; end;
Delphi-Quellcode:
procedure wgImage1MouseOut(Sender: TObject);
begin sleep(700); mainform.setFormAlpha(100); mainform.RenderForm; end; edit: also zuerst onmouseout und dann onmousein funktioniert, aber erst onmousein und dann onmouseout funktioniert nicht |
Re: Desktop Widget Engine (v0.31)
Also wenn du Sleep() benutzt, wird das normale Windows.Sleep ausgeführt. Daher wird die komplette Anwendung (auch die anderen Widgets) für die Zeit stillgelegt. Somit wird bei dir auch kein Application.ProcessMessage aufgerufen, um auf neue Events zu regieren. Ich würd dir wirklich empfehlen, eher einen Timer zu verwenden. Das Objekt "Application" hab ich absichtlich nicht freigegeben, daher gibt es auch kein Application.ProcessMessages, von daher wird eine Delay-Funktion im Moment noch schwierig. Aber ich werd eine Delay-Funktion im nächsten Release mit einbauen, damit sowas nicht mehr so problemtisch wird.
Im Moment kann ich dir leider nur zu einem Timer raten. Zitat:
|
Re: Desktop Widget Engine (v0.31)
z.b.
Delphi-Quellcode:
var i,k:integer;
begin for k:=0 to 8769876 do begin i:=800-700; //kommt fehler i:=800 - 700; //funktioniert end; end; edit: wie kann ich nen timer hinzufügen ??? edit 2: das mit dem minuszeichen passiert innerhalb von schleifen |
Re: Desktop Widget Engine (v0.31)
Timer: in der Palette die Kategorie "Additional" auswählen, den TwgTimer auswählen und dann einfach auf die Form im Designer klicken. So wie in Delphi ;-)
Minuszeichen: Danke für den Hinsweis! Werd mir das anschauen, sobald ich wieder daheim bin, so in ca. 2-3 Tagen. |
Re: Desktop Widget Engine (v0.31)
sooo wollte gerade mal mit mainform.setLeft(100); die position verändern, dann wird aber der inhalt des mainform nicht mitverschoben, heißt: es ist nur noch ein teil des widgets zu sehen
edit: es wird die eigenschaft nicht vererbt, ich müsste für jedes objekt des programmes die position extra setzen Gruß Jokerface |
Re: Desktop Widget Engine (v0.31)
Das man die MainForm nicht verschieben kann, ist auch noch absichtlich. Das Script soll nur eingeschränkte Kontrolle über das Widget haben - dazu zählt für mich auch die Positionierung des Widgets. Somit funktioniert das mainform.SetLeft nicht.
Die Eigenschaft wird an sich schon vererbt, nur halt nicht von mainform.Left aus. Sonst sollte das Positionieren an die Unterelemente schon vererbt werden. Den Minus-Fehler hab ich gerade im Parser der Script-Engine gefunden und ich bin gerade dabei, das Problem zu beheben. An sonsten hab ich bereits eine Delay-Funktion eingebaut, so dass deine Methode auch funktionieren sollte (musst dann nur Delay() statt Sleep() schreiben). Auch die Events OnMouseIn, OnMouseOut OnSetFocus und OnLostFocus von TwgForm funktionieren jetzt ebenfalls. Somit hab ich die Probleme, die du mir gezeigt hast, schon zum großen Teil behoben. Ein Release wird aber noch etwas dauern, da ich noch mehr reinpacken will. Edit: Die Exception beim Minimieren/Maximieren der Events ist jetzt auch gelöst. Hab da einen Pointer nicht überprüft und somit wollte ich den Wert eines Kategorie-Headers abrufen - der natürlich NIL ist. War somit kein Problem des JvInspectors sondern ein von mir generiertes :oops: |
Re: Desktop Widget Engine (v0.31)
Zitat:
damit kann man z.b. widgets am rand verstecken (nur ein kleiner teil guckt raus) und wenn mann rüberfährt kommt es auf den desktop gefahren oder das widget könnte der maus folgen |
Re: Desktop Widget Engine (v0.31)
Zitat:
|
Re: Desktop Widget Engine (v0.32)
Ich habe gerade Version 0.32 hochgeladen.
Diesmal hab ich versucht, mir eure Vorschläge sehr zu Herzen zu nehmen. Dabei ist folgendes herausgekommen :) Im Programm kann man jetzt einen Proxy-Server für Internet-Verbindungen angeben. Diese Einstellung wird dann an alle Widgets weitergegeben und automatisch in die endsprechende Komponente gespeichert. Ich hoffe, dass die Proxy-Einstellungen funktionieren - bei mir hats jedenfalls geklappt. Jokerfacehro hat auch sehr gute Vorschläge gebraucht - natürlich hab ich versucht, so viele wie möglich umzusetzen. Folgende Liste ist daraus entstanden:
Außerdem hab ich jetzt ein paar nützliche Startparameter hinzugefügt, mit denen man das Programm beim Start besser steuern kann. Der Download sowie der komplette ChangeLog befindet sich (wie immer) ![]() |
Re: Desktop Widget Engine (v0.32)
ganz hungrig aufs testen :mrgreen:
edit: :o was isn da passiert statt 2,6mb is das proggi nur noch 800kb klein ! edit 2:haha hab nen neuen fehler das sind meine prozeduren im network traffic, die angelegt bzw verändert habe:
Delphi-Quellcode:
wenn das widget rausfährt und ich beim rausfahren mit der maus das widget verlasse, wird das onmouseout event nicht ausgelöst, genauso is es auch beim onmousein, wenn das widget wieder nach rechts fährt und ich mit der maus während des fahrens auf das widget zeige, fährt es trotzdem weiter.
procedure wgImage1MouseIn(Sender: TObject);
var i:integer; begin for i:=1 to 31 do begin mainform.setFormAlpha(100+i*5); mainform.RenderForm; mainform.setLeft(1024-25-(i-1)*4); delay(10); end; end; procedure wgImage1MouseOut(Sender: TObject); var i:integer; begin for i:=1 to 31 do begin mainform.setFormAlpha(255-i*5); mainform.RenderForm; mainform.setLeft(1024-147+(i-1)*4); delay(10); end; procedure InitializeWidget; begin Adapters := Adapters.Create; wgTimer1Timer(nil); mainform.setLeft(1024-27); mainform.setTop(768-97); end; delay, setLeft, setTop, inspector events klappen funzt :thumb: |
Re: Desktop Widget Engine (v0.32)
Ich hab die exe mit UPX verkleinert
|
Re: Desktop Widget Engine (v0.32)
was isn upx ? :shock:
|
Re: Desktop Widget Engine (v0.32)
![]() |
Re: Desktop Widget Engine (v0.32)
Zitat:
ansonsten coolet ding |
Re: Desktop Widget Engine (v0.32)
Zitat:
Um das Problem zu behen, musst du im Programm eine Krücke verwenden: einen Timer. Zitat:
|
Re: Desktop Widget Engine (v0.32)
alles klar, werds morgen mal nachtesten obs mit delphi klappt ;)
mit dem timer funzt es, aber sehr krückig. ich wollte grad die
Delphi-Quellcode:
von hand aufrufen, da meint er, existiert nicht :shock:
wgTimer2Timer(Sender);
|
Re: Desktop Widget Engine (v0.32)
Die Timer-Funktion kann natürlich nur aufgerufen werden, wenn sie vorher bereits deklariert wurde. Ich versuche gerade die ScriptEngine zu erweitern, so dass man Funktionen zuerst auch als "Forward" deklarieren kann. Wie lange das dauert, weiß ich noch nicht.
|
Re: Desktop Widget Engine (v0.32)
hast ja noch en bischen was zu basteln ;)
|
Re: Desktop Widget Engine (v0.32)
Zitat:
|
Re: Desktop Widget Engine (v0.4)
Sodala, Version 0.4 ist jetzt online. Seit dem letzen Release hat sich intern einiges getan.
Zum einen Besitzt jedes Widget einen Security-Layer. Über diesen Layer kann jedem Widget individuell bestimmte Aktionen verboten werden. Z.b. kann man jetzt einzelnen Widgets den Zugang zum Internet verbieten. Per Standard kann jedes Widget grundsätzlich eine Verbindung zum Internet/Netzwerk aufbauen, jedoch wird vor jeder Verbindung ein Dialog angezeigt, ob man das wirklich möchte. Die Sicherheitseinstellungen können über das Popup-Menü des jeweiligen Widgets eingesehen und bearbeitet werden. Es sind zwar noch nicht all zu viele Einstellungen, aber vielleicht kommen die ja noch ;-) Zusätzlich kann man jetzt global Einstellen, ob überhaupt Zugriff zum Netzwerk/Internet erlaubt sein soll. Zudem kann man jedem Widget individuell sagen, welche Rechte es auf dem Dateisystem hat. Der Zugriff auf das Dateisystem kann auch global deaktiviert werden. Bisher sind ja noch alle Widgets von mir und enthalten keinen Schad-Code. Jedoch ist das zukünftig bei externen Programmen nicht mehr so sicher - somit hab ich jetzt schon mal diesen Layer eingebaut. Der Download sowie den ChangeLog findet ihr, wie immer :zwinker:, ![]() Grüße Dave PS: @jokerfacehro: ich hab es noch nicht geschafft, dass man Funktionen als "forward" deklarieren kann. Dauert daher noch etwas |
Re: Desktop Widget Engine (v0.4)
Hallo Dave
Du hast eine tolle Arbeit geleistet :thumb: Anbei noch einige Bemerkungen & Vorschläge, vor allem was das GUI & Standards betrifft.
|
Re: Desktop Widget Engine (v0.4)
Zitat:
hab aber noch nicht weiter getestet, hab grad kein bock wegn meiner verletzung muss ich mich schonen :/ |
Re: Desktop Widget Engine (v0.4)
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
dem tatsächlichen Status (sichtbar / unsichtbar) des Fensters. |
Re: Desktop Widget Engine (v0.41)
Ich mal wieder, Version 0.41 ist jetzt online.
Ich hab die vielen Vorschläge von toms bereits angepasst - fertig bin ich noch nicht, jedoch hab ich bereits fast alles umgesetzt. Warum ich jetzt schon eine neue Version hochlade hat den Grund, dass ich einen Memory-Leak in der Script-Sprache behoben habe. Dieser Memory-Leak betrifft viele Operationen mit Records. Da diese Sachen relativ häuftig aufgerufen werden können, würden die Systemresourcen schnell in den Keller gehen können. Daher der vorzeitige Release. Ich hab jetzt auch noch ein neues Widget hinzugefügt: nen Goldfisch - ![]() Da das Packet jetzt jedoch selbst mit 7zip mehr als 3 MB hat, hab ich das Packet aufgesplittet. Das Hauptprogramm gibts jetzt mit 6 Widgets. Zusätzlich gibt es jetzt noch ein weiteres Download-Packet, in dem nur weitere Widgets untergebracht sind. Beide Packete befinden sich im ersten Post (genauso wie der ChangeLog) Grüße Dave |
Re: Desktop Widget Engine (v0.41)
Hi,
hab ja heir schon länger nichts mehr geschrieben. IMO hat sich das Programm schön entwickelt - Die Widgets und das Haupfenster sehen jetzt noch besser aus, und der Ressourcenverbrauch hat sich auch verbessert (in den letzten Versionen war mir ja noch aufgefallen, wie der Speicherverbracuh mit der Zeit erheblich anstieg). Leider konnte ich das netzwerktrafficwidget und die überarbeiteten Wetter- und Shputbox-widgets nicht testen, weil sich dein "Firewall"-Dialogfeld nicht wegklicken lässt. Ich klicke auf Allow, aber nichts passiert... (bei Not Allow passiert auch nichts). Edit: was mir grade noch auffällt: Der Rand des Textes im Firewall-Fenster ist teilweise Transparent. Wird wohl an den verwendeten Graphics32 liegen, weil ich mich an dieses Problem noch von einem eigenen Projekt erinnere. Edit2: das Programm ließ sich leider nur über den taskmanager beenden. Lag wahrscheinlich an den noch geöffneten "Firewall"-Fenstern (?) |
Re: Desktop Widget Engine (v0.41)
Zitat:
Zitat:
|
Re: Desktop Widget Engine (v0.41)
Ich hab gerade ein Update hochgeladen, mit dem das Problem mit den Mausevents behoben ist. Das Problem hat betrifft alle Widgets, daher ist ein komplettes Update empfehlenswert. Das Problem äußert sich so, dass man das jeweilige Widget zwar verschieben kann, es aber auf keine Maustasten reagiert. Das Problem dabei war die Methode, mit der ich die Widgets verschiebe.
Das Problem trat bei mir nur auf, wenn ich mehrere Widgets gleichzeitig offen habe, eine genau Zahl konnt ich dabei nicht festlegen. Das Problem ist, dass Windows anscheindend das MouseMove-Event sendet, obwohl die Maus nicht verschoben wurde. Ich hab jedenfalls das Problem jetzt behoben. Grüße Dave :hi: |
Re: Desktop Widget Engine (v0.41)
Also ich finde das Programm echt super :thumb:
Ich finde nur, das es einfach zu wenig Komponenten gibt zum Beispiel eine Progressbar fehlt mir! Kansnt du mir eventuell den code für diese "Firewall" geben wenn ein Widget Zugang zum Internet braucht? Ich versuch mich schon so lange an einer Firewall aber irgendwie krieg ich das nicht hin. Ist die Firewall überhaupt von dir, ja oder? |
Re: Desktop Widget Engine (v0.41)
Zitat:
Zitat:
Der Zugriff zum Internet ist so geregelt: Das Programm an sich bietet jedem Widget die Möglichkeit an, bestimmte Anfragen anfragen ins Internet/Netzwerk zu senden und zu empfangen. Diese Methoden werden von der ScriptEngine nicht direkt aufgerufen - stattdessen wird eine vorgeschaltete Dummy-Methode aufgerufen, die ungefähr so aussieht (mal für IdHTTP):
Delphi-Quellcode:
Das ganze ist natürlich noch etwas erweitert, aber der Grundaufbau ist so relativ einfach zu beschreiben. Die Funktion AllowInternetConnection schaut dabei ungefähr so aus:
function TIdHTTP_Get(Sender: TidHTTP; Url: string): string;
begin // hier der Security-Layer bzw. die "Firewall" if AllowInternetConnection(Url) then result := Sender.Get(Url) else result := ''; end;
Delphi-Quellcode:
Wenn du wirklich mal eine in Delphi geschriebene Firewall die anschauen willst (sammt Quelltext), solltest du mal bei
function AllowInternetConnection(Url: string): boolean;
begin // Grundlegende Abfrage, ob das Widget überhaupt ins Internet darf result := CurrentWidget.Security.NetworkAllowed; if result then begin // Wenn ich hier angekommen bin, darf das Widget ins Internet. // Nun muss ich noch überprüfen, ob das Widget ohne Nachrage beim // Benutzer ins Internet darf if not CurrentWidget.Security.NetworkWithoutUserConfirmation then begin // Jetzt frag ich den Benutzer ob er das auch erlaubt case MessageDlg('Das Widget blablabla will sich zu '+URL+' verbinden.', mtWarning, [mbYes, mbNo], 0) of // Benutzer sagt ja ID_YES : result := True; ID_NO : result := False; end; end else begin // Wenn ich hier her komme, dann darf das Widget immer ins Internet // - auch ohne den Benutzer zu fragen. // Dieser Teil ist zwar nicht im eigendlichen Quelltext und dient hier // nur als Verdeutlichung, da result ja schon True ist result := True; end; end; end; ![]() |
Re: Desktop Widget Engine (v0.41)
Vielen Dank für deinen ausführlichen Post! Deine Methode, funkitoniert die nur bei Plugins von deine, Programm oder schlägt diese Methode so bei jeder Anwendung "alarm"?
|
Re: Desktop Widget Engine (v0.41)
Wie soll diese Methode denn bei anderen Programmen Alarm schlagen?
|
Re: Desktop Widget Engine (v0.41)
Zitat:
Zitat:
|
Re: Desktop Widget Engine (v0.41)
Natürlich funktioniert diese Methode nur bei den Widgets :zwinker:. Hab ja keinen Hook - außerdem, warum sollte meine Widget Engine eine Firewall sein ;-)
Zitat:
|
Re: Desktop Widget Engine (v0.5)
Schon wieder ich :stupid: Version 0.5 ist jetzt online.
Ich hab mal wieder die Widget-Möglichkeiten etwas erweitert. Jetzt ist es möglich, Edit-Felder, CheckBox-Felder sowie Fortschrittsanzeigen hinzuzufügen. Dadurch kann man jetzt schon bessere und interaktivere Widgets erstellen. Was zwar noch fehlt ist die Möglichkeit, mehrere Forms in einem Widget zu benutzen, jedoch bin ich mir noch nicht sicher, wie ich das genau machen will. Außerdem hab ich mich mal an die Optimierung gesetzt und hab sehr viel rausholen können. Ich habe mal 10 Widgets auf einmal geladen - zusammen mit 6 Fischen. Vorher hatte ich eine CPU-Auslastung von ca. 35-40%, jetzt habe ich eine Auslastung von ca. 2-10%. Zwar habe ich auch eine schnelle CPU (AMD X2 4800+), aber der Performanceschub ist schon gewaltig. Da ja letztes mal das Problem mit den Maustasten aufkam, hab ich mich mal hingesetzt und eine Lösung gefunden. Nun sollte das Problem nicht mehr auftreten. Da ich neue Komponenten hinzugefügt habe, hab ich auch gleich zwei neue Widgets erstellt: eine Suche für Google.com und eine Suche für die DelphiPraxis. Dabei muss man einfach nur die Suchbegriffe in das Edit-Feld der Widgets eingeben und der Browser öffnet sich mit der gewünschten Suche. Diesmal ist auch eine ProgressBar für Larsi mit dabei ;-) Der Download sowie der ChangeLog ist im ersten Post zu finden. Grüße Dave |
Re: Desktop Widget Engine (v0.5)
Ui, das geht ja echt flott bei dir. Ich wpnschte, ich köme mit meinen Projekten auch so schnell voran...
Also die CPU-Auslastung ist wirklich deutlich gesunken durch das Update. Ich kam mit meinen 6 Widgets (Clock, Shoutbox, 2 Suchfelder, Fisch, Network Traffic) nie über 1% Auslastung (2,4Ghz Quad). Das Networktraffic-Widget funktioniert bei mir aber nicht, was wahrscheinlich daran liegt, dass ich W-LAN habe. Ich mag es, wie der Fisch in der neuen Version wegschwimmt, wenn man versucht, ihn zu fangen. Ich hab ihn aber trotzdem erwischt :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 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