| |
|
|
Peter Max Müller | Hallo an alle ProfanerINNEN, Ich progge noch nicht lange mit Profan.Alle meine bisherigen Probleme habe ich gelöst oder ich habe im Web nach Lösungen gesucht. Aber jetzt weiß ich einfach nicht weiter :
PROBLEM: Ich habe ein Progie geschrieben.Das hat ein normales Menü (PopUp) und eine Toolbar.Jetzt möchte ich gerne das die Uhrzeit angezeigt wird.Also habe ich folgenden Code eingebaut:
window 0,0-200,200 settimer 1000 while 1 waitinput case %wmtimer:settext %hwnd,Time$(0)+:+substr$(Time$(1),1,.) endwhile killtimer
Je nachdem wo ich endwhile hinsetze kann ich entweder die Menüleiste nicht bedienen oder die Toolbar reagiert nicht. Mal habe ich es soweit das alles läuft aber wenn ich dann ein Fenster öffne ist es beim nächsten umspringen der Zeit (in diesem Fall Sekunde) wieder verschwunden. Gibt es denn keinen Weg eine einfache Uhrzeit darzustellen?
Ich danke euch schon jetzt sehr herzlich für eure Hilfe.
Euer Peter |
|
|
| |
|
|
|
Michael Dell | Korrigiere:
SetText %Hwnd kommt mir Spanisch vor, sollte anstell von %HWnd nicht das Handle eines Textfeldes stehen? Wo möchtest du die Zeit denn Anzeigen?
Sorry, ich bin heut wohl etwas daneben! Halt dich mal lieber an If
Vieleicht hilft aber auch dieses kleine Demo: KompilierenMarkierenSeparierenDeclare txt1&
window 0,0-400,200
PopUp "Test"
AppendMenu 100,"Test_1"
AppendMenu 101,"Test_2"
Separator
AppendMenu 102,"Test_3"
settimer 500
txt1&=Create("Text",%HWnd,"",10,100,80,22)
whileNot Equ(%MenuItem,-2)
Sleep 100
If %wmtimer
SetText txt1&,Time$(0)+":"+substr$(Time$(1),1,".")
WindowTitle "Check Time - "+Time$(0)+":"+substr$(Time$(1),1,".") anstelle SetText %HWnd
SetActiveWindow(%HWnd)
ElseIf Equ(%MenuItem,100)
MessageBox("Test_1","Gewählt:",0)
SetMenuItem 0
ElseIf Equ(%MenuItem,101)
MessageBox("Test_2","Gewählt:",0)
SetMenuItem 0
ElseIf Equ(%MenuItem,102)
MessageBox("Test_3","Gewählt:",0)
SetMenuItem 0
EndIf
SetActiveWindow(%HWnd)
endwhile
killtimer
Michael... |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 04.09.2004 ▲ |
|
|
|
|
| Schau mal hier: [...]
Wenn Du Deine Zeitanzeige in die thread.do legst, funzt es permanent.
XProfan - needet.
Salve, iF
PS: Wenn ich mir Dein Avatar so anschaue frage ich mich was Dir denn passiert sei. |
|
|
| |
|
|
|
Peter Max Müller | Moin,Moin,
@Michael : Wo die Zeit dargestellt wird ist mir egal.Ob Fenster oder im Windows Title. Ich habe mal deinen Demo Code ausprobiert.Aber dasselbe Problem wie bei meinem. @CreateDialog Fenster werden beim umspringen der Uhr selbstständig und schliessen sich. Aber auch nicht alle.Ich glaube das Problem tritt dann auf wenn per SetFocus auf einen Button verweist wird der den Dialog schliesst.Jedenfalls habe ich das mal geändert und dann lief es. Ich danke Dir.
@IF : Ich habe leider kein X-Profan.Noch nicht.Ich merke aber selbst das alle schönen Funktionen X-Profan brauchen.Hier sei nur mal X-Menü erwähnt.Deshalb werde ich nächste Woche updaten. Und zu meinem Avantar: Wenn ich mir Deinen so begucke hast auch Du ein böses Schicksal erlitten) . Das Foto ist entstanden als ich mich auf einem VBA Treffen als Profaner geoutet habe.Nein,Spaß beiseite.Ich wußte einfach nicht was für ein Bild ich nehmen sollte und da habe ich das erstbeste genommen.Beim Kickboxen sieht man schon mal so aus. Und auch ein großes Danke schön für Deine Hilfe an Dich. |
|
|
| |
|
|
|
| Hallo Peter,- zu Deinem Avatar,- ich habs kappiert.
Zu Deinem Timer-Problem,- ich glaube das dir das sekündliche waitinput-Verlassen diese Probleme bescherrt (da bleiben halt die messages auf der Strecke),- wenn Du also nur eine Minutengenaue-Anzeige proggen würdest wären wohl die Probleme dahin.
Salve, iF |
|
|
| |
|
|
|
Dennis Schulmeister | Hallo Peter,
folgenden Quellcode habe ich mal vor ein paar Jahren erstellt, als gerade Profan² 7 neu war. (Hach, waren das noch Zeiten. )
Ich würde für die Uhrzeit keinen eigenen Timer nehmen, da dass viel zu ungenau ist. Frage die Zeit doch einfach mit @Time$() ab...
Gruß, Dennis |
|
|
| (Fast) alle Profan²-Versionen seit Version 2.6, sowie (fast) alle Windows-Versionen seit Windows 3.1 | 05.09.2004 ▲ |
|
|
|
|
Ragnar Rehbein | böses programm
erzeugt 100 % cpu-last !
zu DOS-Zeiten wo nur ein programm zur zeit lief sicher kein problem aber heute .....
ein sleep 1 im IF und in ELSE -zweig wären sicher angebracht.
r.r. |
|
|
| |
|
|
|
Dennis Schulmeister | Habs ehrlich gesagt nicht mehr getestet sondern direkt ovn der Backup-CD hochgeladen.
Also Sleep 1 nicht vergessen.
Gruß, Dennis |
|
|
| (Fast) alle Profan²-Versionen seit Version 2.6, sowie (fast) alle Windows-Versionen seit Windows 3.1 | 06.09.2004 ▲ |
|
|
|
|
Peter Max Müller | Halli,Hallo, Erstmal vielen Dank an alle für eure Hilfe. Ich glaube wenn ich die Uhr so progge das sie nur minütlich umspringt wird es auch nicht wirklich besser.Macht der Anwender kurz vor der vollen Minute ein Dialog auf und die Uhr springt just kurz danach um wird das Fenster wieder geschlossen.Glaube ich zumindestens.Ich habe es nicht ausprobiert. Hab einfach SetFocus auf die Button weggelassen und es rennt ohne Probs. Und was keiner von euch wissen konnte: Es handelt sich um eine Analoguhr wo ein Sekundenzeiger einfach gut aussieht. *coolyeah* Machts alle gut und geht ruhig mal in die Sonne. Bis bald Euer Peter |
|
|
| |
|
|
|
| Hallo Peter...
Wenn du hier einen Teil deines Quellcodes gepostet hättest, hätte man dir bestimmt schneller und besser helfen können... Zu deinem Problem: Der Timer durchbricht nach der eingestellten Zeit Waitinput und löst damit auch den Button aus, den du danach mit GetFocus abfragst und der den Focus hat. Getfocus überprüft nur, ob ein Button den Focus hat, nicht aber ob er gedrückt wurde. Versuch mal folgende Buttonabfrage: If @gt(sendmessage(Dein_Button_Handle&,$00F2,0,0),40) Diese Probleme wirst du auch bei der Abfrage von Menüpunkten haben, es sei denn du setzt das Menü mit SetMenuitem0 wieder zurück...
PS: Als ich IFs Avatar zum ersten Mal gesehen habe.... :biggrin: |
|
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | Hallo Peter!
>> Das Foto ist entstanden als ich mich auf einem VBA Treffen als Profaner geoutet habe.
Ich habe da noch ein Beispiel, das ohne XProfan auskommt: KompilierenMarkierenSeparierenwindow 50,50-500,200
setactivewindow(%hwnd)
usermessages 16
def GetModuleHandle(1) !"KERNEL32","GetModuleHandleA"
def GetProcAddress(2) !"KERNEL32","GetProcAddress"
def CreateThread(6) !"KERNEL32","CreateThread"
def TerminateThread(2) !"KERNEL32","TerminateThread"
def ResumeThread(1) !"KERNEL32","ResumeThread"
def SuspendThread(1) !"KERNEL32","SuspendThread"
declare a$,a&,a#
declare Funct1&,Funct2&,Funct3&,Dummy&,Thread&
a$="Kernel32"
a&=GetModuleHandle(addr(a$))
a$="GetTimeFormatA"
Funct1&=GetProcAddress(a&,addr(a$))
a$="Sleep"
Funct3&=GetProcAddress(a&,addr(a$))
a$="User32"
a&=GetModuleHandle(addr(a$))
a$="SendMessageA"
Funct2&=GetProcAddress(a&,addr(a$))
dim a#,200
long a#,0=-1947432107
long a#,4=-141883267
long a#,8=1779746435
long a#,12=6968852
long a#,16=6946922
long a#,20=126550122
long a#,24=1784074495
long a#,28=-1962120704
long a#,32=-1957688249
long a#,36=-788593593
long a#,40=256104
long a#,44=138906368
long a#,48=-24915713
long a#,52=-1949011199
long a#,56=79846885
long a#,60=0
long a#,100 =Funct1& GetTimeFormat
long a#,104 =Funct2& SendMessageA
long a#,108 =Funct3& Sleep
long a#,112 =%hwnd Zielhandle
Thread&=CreateThread(0,0,a#,a#+100,0,addr(Dummy&))
while 1
waitinput
case %umessage=16:break
case %key=97:SuspendThread(Thread&)--Taste "a": Stopp
case %key=98:ResumeThread(Thread&)---Taste "b": Weiter
endwhile
TerminateThread(Thread&,259) 259 = STILL_ACTIVE
dispose a#
Weils da noch kein @ProcAddr(S,N) gab, ist die eigendliche Routine in Assenbler geschrieben und in eine Bereichsvariable gepackt worden (ungefähr so wie beim seligen C64 die Maschinensprache-Codes)
Das Teil sollte theoretisch sogar noch bis auf Profan 5 runterzudrücken sein.
HTH Pascal |
|
|
| |
|
|
|
Michael Dell | Hallo,
hab auch noch ne Funktion ausgegraben die hier helfen kann.
Prüft ob ein Button losgelassen wurde während der Mauszeiger noch auf in zeigt (ja = 1 sonst 0) ist das der fall wird 1 zurückgegeben und der Focus wird auf das übergebene Handle gesetzt
Befehl: ButtonUp(Handle&) Handle& steht für Fenster oder Dialog (Übergeordnet)
Def ButtonUp(1) @Equ(@If(Equ(%Lastmessage,514),1,@If(Equ(%Lastmessage,512),SetFocus(@&(1)),0)),1)
Beipsiel:
ElseIf @GetFocus(Button_1&)
If ButtonUp(Dialog_4&) auszuführende Aufgaben EndIf
ElseIf ....
Die hat mir schon ne menge Ärger erspart.
Michael... |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 06.09.2004 ▲ |
|
|
|