Deutsch
Quelltexte/ Codesnippets

Blink Led Statusbar Uhrzeit

 

CB
Hallo

Ich wollte in meinem Programm gerne die laufende Uhrzeit in der Statusbar und habe mich zu diesem Zweck mal in den diversen Foren umgesehen, leider aber keinen Beitrag gefunden, wo das direkt umgesetzt war. Einige Fundstücke waren aber gut für meine Zwecke brauchbar - mein Dank für getane Vorarbeiten an Andreas Miethe, Rolf Koch und Co.
Herausgekommen ist nicht nur die Uhrzeit, sondern auch noch eine kleine optische Spielerei mit 2 LEDs in der Statuszeile. Die Icons sind - mit wenigen unverkennbaren Ausnahmen - selbstfabriziert, Ihr dürft also ruhig zugreifen.

Viel Spaß,
Christian

 
XProfan 8/9.1, Win XP, AMD 64/3200
17.01.2005  
 




Rolf
Koch
Hi Christian,

kommt echt gut das Teil. Hat echt was Modernes.

Rolf
 
17.01.2005  
 




CB
Hi Rolf,

vielen Dank für die Blumen!
Ein bißchen optischer Aufputz kann einem Programm nicht schaden. Ich muß aber gestehen - die meiste Arbeit daran waren die Icons (da sind viele Stunden draufgegangen alleine für den Schattenwurf), den Code habe ich ja größtenteils von Euch übernommen und etwas modifiziert zusammengestoppelt.

Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
18.01.2005  
 



Vielleicht ein bisl praktischer in der Anwendung (da kein Timer die Hauptroutine besetzt) eine kleine Änderung von mir Deines Sources - unter Nutzung der Thread.pcu (zum Download frei).
 $H windows.ph
 $H messages.ph
 $H commctrl.ph
 $U thread.pcu = thread.
Def ExtractIconExA(5) !"SHELL32","ExtractIconExA"
Def Zeit(0) @Left$(@Time$(0)+":"+@Time$(1),8)
declare hwidthx&,hwidthy&

proc thread.do

    parameters n&

    if (n&=1)

        IcoNr2$ = @Str$(IcoNr2&)
        iconhandle1& = GetIconA_Handle("Eigene.dll",IcoNr1&,0)			"On-Off" Icon
        iconhandle2& = GetIconA_Handle("Eigene.dll",IcoNr2&,0)			"Wechsel"-Icon
        ~SendMessage(Status&,$40F,1,iconhandle1&)
        ~SendMessage(Status&,$40F,2,iconhandle2&)
        ~SendMessage(Status&,$401,3,"Icon Nr. " + IcoNr2$ + " aus der Eigene.dll")Text dem Part 4 zuweisen
        ~SendMessage(Status&,$401,4 | ~SBT_NOBORDERS,"" + Zeit())   		Text dem Part 5 zuweisen
        INC IcoNr2&

        If IcoNr1& = 1

            IcoNr1& = 2

        Else

            IcoNr1& = 1

        EndIf

    elseif (n&=2)

        if ( (hwidthx&<>width(%hwnd)) or (hwidthy&<>height(%hwnd)) )

            hwidthx&=width(%hwnd)
            hwidthy&=height(%hwnd)
            setwindowpos status& = 0,0 - 0,0 ;0

        endif

    endif

endproc

Proc GetIconA_Handle   				nur das Handle ermitteln

    Parameters IconFile$,IconNr$, gross%   		kleine Icons = 0 große = 1
    Declare DllIcon&, ST#, PT#
    Dim ST#,add(len(IconFile$),1)
    Dim Pt#,4
    String ST#,0 = IconFile$
    Let DllIcon& = ExtractIconA(%Hinstance,ST#,val(IconNr$))   große Icons

    if gross% = 0

        ExtractIconExA(ST#,val(IconNr$),0,Pt#,1)     	kleine Icons

    else

        ExtractIconExA(ST#,val(IconNr$),Pt#,0,1)     	große Icons

    endif

    DllIcon& = Long(Pt#,0)
    Dispose ST#
    Dispose Pt#
    return DllIcon&

Endproc

Declare Status&,IntWidth#,iconhandle1&,iconhandle2&,IcoNr1&,IcoNr2&,IcoNr2$
windowstyle ( 512 | 1 | 2 | 4 | 8 )
CLS
Status& = Create("Statuswindow",%hwnd,"")
hwidthx&=width(%hwnd)
hwidthy&=height(%hwnd)
Dim Intwidth#,20
iconhandle1& = GetIconA_Handle("Eigene.dll",20,0)      Ausgangs-Icon
iconhandle2& = GetIconA_Handle("Eigene.dll",20,0)      Ausgangs-Icon
Long Intwidth#,0 = 356,378,400,565,%MaxX               Integer-Array mit Maßen der einzelnen Textbereiche
~SendMessage(Status&,~SB_SETPARTS,5,IntWidth#)         Parts setzen
~SendMessage(Status&,$401,0 | ~SBT_POPOUT,"Text1")     Texte dem Part zuweisen
~SendMessage(Status&,$40F,1,iconhandle1&)
~SendMessage(Status&,$40F,2,"")
~SendMessage(Status&,$401,3,"")                        Wechselicon + Text dem Part zuweisen
~SendMessage(Status&,$401,4 | ~SBT_NOBORDERS,"")       Leerstring dem Part zuweisen
IcoNr1& = 1
IcoNr2& = 0

if (val(translate$(thread.ver(),".","")) < 14)

    messagebox "Zu alte Thread.pcu","",0
    end

endif

thread.start 1,7 thread kanal 1 starten mit intervallspeed 6 (halbsekündlich)
thread.start 2,4 thread kanal 2 starten mit intervallspeed 4 (achtelsekündlich)

Whilenot (%key=2)

    Waitinput

Endwhile

thread.stop 1
thread.stop 2
Dispose Intwidth#
End

Salve, iF
 
18.01.2005  
 




CB
Hallo, David
Vielen Dank für Deinen Tip!
Bloß geht das Downloads-Verzeichnis (noch) nicht - ich nehme stark an, Du weißt das sowieso, auch wenn dort steht Bitte verständigen Sie ....
Gibts noch eine andere Quelle für die Thread.pcu?

Bei der Gelegenheit noch eine Anmerkung zur Statusbar: XProfan 9 macht in der dzt. Beta einen Darstellungsfehler - die letzten beiden Parts werden nicht dargestellt (ich dachte, ich hätte einen Fehler im Code, bis ich auf die Idee kam, mal wieder auf Version 8 zurückzustellen)

Gruß,
Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
18.01.2005  
 




CB
@iF: Schon gefunden - hab mal die Suchmaschine angeworfen...
 
XProfan 8/9.1, Win XP, AMD 64/3200
18.01.2005  
 




CB
Hallo,

eine Frage zum Thema Statusbar ist jetzt aufgetaucht:
Ich wollte gerne eine echte Blink-LED in der Statusbar integrieren (Anzeige von Speichervorgängen etc.) Die BlinkLED ist eine .ani, die gut in einem Control im Fenster läuft, in der Statuszeile wird sie zwar angezeigt, jedoch ohne Animation. Kann ich eine Ani wirklich nicht in der Statuszeile anzeigen?

Gruß,
Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
18.01.2005  
 




Rolf
Koch
Hi Christian,

Erstell doch einfach in der Statusbar ein Static und auf dieses die Ani.

kurz schnell zusammengestellt:
CREATESTATUSBAR "STATUSBAR" Parameter 1=Text in Statusbar
LET STATUSBAR&=@&(0)
declare ANICONTROL&
ANICONTROL&=Control("STATIC","",$54000100,10,0,32,32,STATUSBAR&,0,%hinstance,$0)
ANIMICON 0 ,"C:FLY.ANI",ANICONTROL&,0,0,0032,0032

Bei mir funktioniert aber das Anim in einer Statusbar.

Wird auch animiert dargestellt.

Hast Du vielleicht auch den Fehler wie ich am Anfang gemacht und

ANIMICON 0 ,C:FLY.ANI,STATUSBAR&,[shadow=red:7ea046e47d]120,30[/shadow:7ea046e47d],0032,0032

dort nicht y%=0 eingegeben?
Habs halt mit ROC erstellt und dort klappt es (wenn ich halt nachträglich das Fensterhandle der Statusbar angebe)
Rolf
 
18.01.2005  
 




Rolf
Koch
Nochmal ich (hmm ich hab ja immer noch Weihnachten, kanns aber nicht umstellen )

Hab mal schnell ein Beispiel gemacht. Hier aber nur in einer einfachen Statusbar.

Rolf

3 kB
Kurzbeschreibung: Led in der Statusbar, welche auch noch weiterhin animiert ist.
Hochgeladen:18.01.2005
Ladeanzahl142
Herunterladen
 
18.01.2005  
 




CB
Hi Rolf,
Deine LED kommt meinen Vorstellungen schon sehr nahe, ich komme nur mit einem Punkt noch nicht zurecht:
Wie kriege ich ein Control in einen Part meiner geteilten Statusbar?
Ich würde nämlich gerne in Part 1 aktuelle Statusmessages, in Part 2 zB. die Blinkled, in Part 3 ein gerade aktuelles Icon und im letzten Part die Uhrzeit einblenden.

Gruß,
Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
18.01.2005  
 




CB
Hi nochmal,
ich habs gerade geschafft - muß aber jetzt noch einiges erledigen, am Abend dann den ganzen Code entmüllen, meine ANI verkleinern (ist zu groß für die Statusbar), am Abend müßte der Code dann im Forum sein.
Bis dann,
Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
18.01.2005  
 




Rolf
Koch
.. nadann ist ja alles klar

Rolf
 
18.01.2005  
 




Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

30.706 Betrachtungen

Unbenanntvor 0 min.
p.specht16.12.2020
Jörg Sellmeyer03.06.2018
Georg Teles29.06.2015
Heltal20.08.2014
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie