| |
|
|
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 |
|
|
| |
|
|