|  |  | 
|  | 
|  | 
|  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
 | 
 
 | 
|  | 
|  |  | 
|  | 
| 
 
 
 | 
|  | 
|  Rolf
 Koch
 | | Hi Christian, 
 kommt echt gut das Teil. Hat echt was Modernes.
 
 Rolf
 | 
 | 
|  | 
|  |  | 
|  | 
| 
 
 
 | 
|  | 
|  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
 | 
 | 
|  | 
|  |  | 
|  | 
| 
 
 
 | 
|  | 
|  | | 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
 | 
 | 
|  | 
|  |  | 
|  | 
| 
 
 
 | 
|  | 
|  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
 | 
 | 
|  | 
|  |  | 
|  | 
| 
 
 
 | 
|  | 
|  CB
 | | @iF: Schon gefunden - hab mal die Suchmaschine angeworfen... | 
 | 
|  | 
|  |  | 
|  | 
| 
 
 
 | 
|  | 
|  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
 | 
 | 
|  | 
|  |  | 
|  | 
| 
 
 
 | 
|  | 
|  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
 | 
 | 
|  | 
|  |  | 
|  | 
| 
 
 
 | 
|  | 
|  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 |  |  |  | Ladeanzahl: |  |  |  |  | Herunterladen | 
 | 
|  | 
|  |  | 
|  | 
| 
 
 
 | 
|  | 
|  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
 | 
 | 
|  | 
|  |  | 
|  | 
| 
 
 
 | 
|  | 
|  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
 | 
 | 
|  | 
|  |  | 
|  | 
| 
 
 
 | 
|  | 
|  Rolf
 Koch
 | | .. nadann ist ja alles klar  
 Rolf
 | 
 | 
|  | 
|  |  | 
|  | 
| 
 
 
 |