Delphi-PRAXiS
Seite 5 von 26   « Erste     345 6715     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Desktop Widget Engine (v0.72) (https://www.delphipraxis.net/119493-desktop-widget-engine-v0-72-a.html)

littleDave 11. Sep 2008 20:08

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:

jokerfacehro 12. Sep 2008 11:13

Re: Desktop Widget Engine (v0.31)
 
meine prozedur:

Delphi-Quellcode:
procedure MouseEnter(Sender: TObject);
begin

mainform.setFormAlpha(88);
mainform.RenderForm;

end;
das ganze hab ich mit OnMouseIn und OnSetFocus verbunden, funzt nich
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

littleDave 12. Sep 2008 15:28

Re: Desktop Widget Engine (v0.31)
 
Zitat:

Zitat von jokerfacehro
meine prozedur:
[...]
das ganze hab ich mit OnMouseIn und OnSetFocus verbunden, funzt nich
ich hab die prozedur einfach in den quelltext geschrieben ohne deklaration, die ja anscheinend nicht notwendig ist bei deinem widget-system

Das stimmt schon bisher. Jedoch hab ich gerade gesehen, dass es noch ein Problem gibt: dass OnSetFocus und das OnLostFocus der WidgetForm wird nicht ausgeführt. Um ein Ziel doch noch relativ einfach zu erreichen, kannst du folgendes machen:

Ö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 von jokerfacehro
bezüglich objektinspektor, wär geil wenn ereignissprozeduren wie bei delphi bei doppelclick auf das ereignis einfach hinzugefügt werden

Das gibts schon. Hier mal ein Zitat aus dem ersten Post :zwinker: :
Zitat:

Events zuweisen:
Um einer Komponente ein Event zuzuweisen solltet ihr im Object-Inspector den Tab "Events" auswählen. Dort klickst ihr doppelt auf den Namen des Events. Dann wird automatisch alles nötige erstellt. Ihr könnt die Events natürlich auch manuell eintragen, jedoch ist solltet ihr dann genau wissen, welche Parameter wann wo kommen. Wenn eine Event-Funktion falsche Parameter hat, wird das Widget zwar erfolgreich kompiliert, die Event-Funktion wird aber niemals erreicht.
Zitat:

Zitat von jokerfacehro
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

Wenn du das Programm mit dem Parameter -normal startest, wird es nicht im TNA gestartet. Dafür kannst du am besten eine Verknüpfung anlegen und dort den Parameter eintragen. Später wird es dann eine Einstellung dafür geben.
Dass mit einem seperaten Editor ist doch nicht resourcenschonender - da der Editor nur bei Bedarf geladen wird und somit normalerweise nicht im Speicher ist.

jokerfacehro 12. Sep 2008 17:14

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!
naja, ganz schön umständlich, warum reagiert denn das onmousein der mainform nicht :shock:


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:

littleDave 12. Sep 2008 17:21

Re: Desktop Widget Engine (v0.31)
 
Zitat:

Zitat von jokerfacehro
naja, ganz schön umständlich, warum reagiert denn das onmousein der mainform nicht :shock:

Naja, die MainForm ist nur eine Art Dummy-Componente, die nur den maximalen Zeichenbereich eingrenzt. Ich hab es noch nicht geschafft, gewisse Events auch in MainForm auslösen zu lassen - wird aber noch kommen.

Zitat:

Zitat von jokerfacehro
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:

Werd ich noch machen, hab bisher noch nicht daran gedacht.

jokerfacehro 12. Sep 2008 17:24

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:
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;
funktioniert wunderbar, nur wird das onmouseout event garnicht ausgeführt, wenn das onmousein event gerade noch ausgeführt wird:

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

littleDave 12. Sep 2008 17:40

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:

Zitat von jokerfacehro
wenn ich mit dem minus zeichnen ( - ) rechnen will, müssen immer leerzeichen darum sein, ansonsten kommt nen fehler :shock:

Kannst du mir den Abschnitt aufschreiben, damit ich das so bald wie möglich verbessern kann? Normalerweise braucht man kein Leerzeichen vor und/oder nach einem Minus.

jokerfacehro 12. Sep 2008 17:54

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

littleDave 12. Sep 2008 18:10

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.

jokerfacehro 14. Sep 2008 21:17

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:55 Uhr.
Seite 5 von 26   « Erste     345 6715     Letzte »    

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