Foro | | | | E.T. | Mein folgendes Ejemplo reagiert en el .exe anders como en el Interpreter: Interpreter : Puedo con el Tab-Taste de una Editar para otro hüpfen, sin el algo passiert. Komme Yo en Editar 1 a, se el Kalender aktiv, verlasse Yo dieses, se el Kalender otra vez deaktiviert. Puedo also en el Editar 1 el Kalender anklicken, y el Datum (welches angeklickt wurde), se übernommen (also en el SubClassProc gerannt, Menu 15000 gesetzt, el entonces ausgewertet). Freu, así voluntad Yo haben !!
In el Exe Jedes veces, si la Kalender aktiviert se (also Foco en Editar 1) se en el SubclassProc gerannt y Menu 15000 gesetzt (also auch igual al Start, porque De hecho, el Foco en Editar 1 es). Beim Deaktivieren des Kalenders (Foco ausserhalb Editar 1) se otra vez en el SubClassProc gerannt y el Event ausgelöst. Stoffwechselendprodukt !!
Bin para jede Concepto dankbar !! KompilierenMarcaSeparaciónDeclare Element&[], Kalender&, Ende%
SubClassProc
If SubClassMessage(Kalender& , 15)Tag angeklickt
messagebox(Im SubClassProc,Info,64)...zur Information
SetMenuItem 15000
Set(WinProc, 1)
EndIf
EndProc
Proc Check_Element
If @GetFocus(Element&[1])
EnableWindow Kalender&,1
Else
EnableWindow Kalender&,0
EndIF
EndProc
Proc Kal_GetDate
Declare Datum#
dim Datum#,20
SendMessage(Kalender&,4097,0,Datum#)
Var Zurück$ = format$(00,word(Datum#,6))+.+format$(00,word(Datum#,2))+.+format$(0000,word(Datum#,0))
Dispose Datum#
Return Zurück$
ENDPROC
Window 800,600
Kalender&=Control(SysMonthCal32,Kalender,$50000000,600,0,180,height(%HWnd),%HWnd,5000,%hinstance,0)
EnableWindow Kalender&,0
Element&[0] = @Control(Dialog,,$54000000 | $00800000,0,0,400,height(%HWnd),%HWnd,5001,%HInstance,$10000)
Element&[1] = @Create(Edit,Element&[0],,10,10,200,20)
Element&[2] = @Create(Edit,Element&[0],,10,50,200,20)
Element&[3] = @Create(Edit,Element&[0],,10,100,200,20)
Element&[4] = @Create(Edit,Element&[0],,10,150,200,20)
SetFocus(Element&[1])
SubClass Kalender&,1
WhileNot Ende%
Check_Element
Waitinput
If %Key = 2
Ende% = 1
ElseIf @MenuItem(15000)
SetText Element&[1],Kal_GetDate()
EndIf
EndWhile
SubClass Kalender&,0 ass=s4 href='./../../funktionsreferenzen/XProfan/end/'>end
Apéndice: Wieso voluntad überhaupt en el Subclassproc el Messages verdreht, el Kalender löst %Message=32 de, sólo no en el Subclassproc ??? |
| | | Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 28.12.2008 ▲ |
| |
| | Andreas Miethe
| IDEE ! KompilierenMarcaSeparaciónDeclare Element&[], Kalender&, Ende%
SubClassProc
If SubClassMessage(Kalender& , 15) & GetFocus(Element&[1])Tag angeklickt
SetMenuItem 15000
Set(WinProc,1)
EndIf
EndProc
Proc Kal_GetDate
Declare Datum#
dim Datum#,20
SendMessage(Kalender&,4097,0,Datum#)
Var Zurück$ = format$(00,word(Datum#,6))+.+format$(00,word(Datum#,2))+.+format$(0000,word(Datum#,0))
Dispose Datum#
Return Zurück$
ENDPROC
Window 800,600
Kalender&=Control(SysMonthCal32,Kalender,$50000000,600,0,180,height(%HWnd),%HWnd,5000,%hinstance,0)
Element&[0] = @Control(Dialog,,$54000000 | $00800000,0,0,400,height(%HWnd),%HWnd,5001,%HInstance,$10000)
Element&[1] = @Create(Edit,Element&[0],,10,10,200,20)
Element&[2] = @Create(Edit,Element&[0],,10,50,200,20)
Element&[3] = @Create(Edit,Element&[0],,10,100,200,20)
Element&[4] = @Create(Edit,Element&[0],,10,150,200,20)
SetFocus(Element&[1])
SubClass Kalender&,1
WhileNot Ende%
Waitinput
If %Key = 2
Ende% = 1
ElseIf @MenuItem(15000)
SetText Element&[1],Kal_GetDate()
SetFocus(Element&[1])
EndIf
EndWhile
SubClass Kalender&,0
./../funktionsreferenzen/XProfan/end/'>end
|
| | | Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 28.12.2008 ▲ |
| |
| | E.T. | @Andreas: Gracias. Jetzt se pero la Kalender no mehr deaktiviert En me en el richtigen Proc es el wichtig, hay voluntad auch todavía div. Buttons y Menü-Eintrage disabled. |
| | | Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 28.12.2008 ▲ |
| |
| | Sascha Oliver Haak | In Deinem Code Yo el Focus de Element&[1] genommen.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ändern Proc Check_Element If @GetFocus(Element&[1]) EnableWindow Kalender&,1 Más EnableWindow Kalender&,0 @SetFocus(Element&[2]) Foco de Element&[1] weg nehmen EndIF ENDPROC <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Ende ändern Posesiones auch IDEE gehabt.!
Wenns passt Por favor, schön!
Saludo Sascha |
| | | | |
| | E.T. | @Sascha: , Nur sagt me mi Logik, el alles, qué hinter el Más es, sowieso ausgeführt se, si la Foco no en [1] es . Su Bucle bewirkt sólo el Yo siempre en [2] ankomme, si yo no en [1] bin. Also komme Yo entonces nada mehr en [3] y [4]... |
| | | Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 28.12.2008 ▲ |
| |
| | Sascha Oliver Haak | OK hast sí bastante. (Schnellschuß igual Kurzschluß!?!?!)
Solltest como erstes en Deiner Hauptroutine sólo waitinput y luego Check_Element durchführen. Weil sonst el Rutina Check_Element el Focus inmediatamente ermittelt.
Nach Übernahme des Datums ha Edit Feld no Foco mehr y erhält esta en erneutem betreten.
Besser, en me klappt lo nun!
Saludo Sascha |
| | | | |
| | E.T. | | | | Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 28.12.2008 ▲ |
| |
| | E.T. | WORKARROUND Yo ahora en mi Prog simplemente veces hinter el Aktivieren / Deaktivieren des Kalenders una sleep 10 gesetzt, y siehe como, ahora funzt lo auch en el .exe. In mi obigen Bsp. tener Yo todos a sleep 2000 getrieben, sin Wirkung (ggf. doch veces 10.000 testen). Yo vermute veces, en el Interpreter se ejecuta como einiges gewaltig langsamer de, como en el .Exe >>> Moment (dämmer...), irgendwo tener como doch algo gelesen, el en el Interpr. algo todos 30 Zeilen gecheckt se y el .Exe jede Línea...nachschau (aber sólo heut Mittag).
[offtopic]So, ahora rápidamente todavía nen Eimer Café, entonces voluntad una TraPo voller Post-Taschen en el Holzäppelgebirge a el Zusteller verteilt voluntad (en esta Tiempo meist con Zoll-Kontrollen verbunden (bedingt por el Nähe a CZ, manchmal fahr Yo direkt en el Grenze lang) >> aber uno gewöhnt se a alles, y el Jungens (y manchmal auch hübsche Mädels) hacer en efecto sólo Ihren Job). Dann fix o ne- Runde schlafen...y ya kann el Tag al Mittag otra vez beginnen [/offtopic] |
| | | Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 29.12.2008 ▲ |
| |
| | Frank Abbing | Alle 20 Zeilen. Hm, una Sleep 10 como Workaround halte Yo siempre para untauglich... |
| | | | |
| | RGH | E.T.
Moment (dämmer...), irgendwo tener como doch algo gelesen, el en el Interpr. algo todos 30 Zeilen gecheckt se y el .Exe jede Línea...nachschau (aber sólo heut Mittag).
Umgekehrt se una Schuh draus: Im Interpreter se (außer en el Fast-Mode) después de cada Zeil el Messageloop aufgerufen, en el Runtime después de cada 20. Línea. Su Prozeduren nutzen Messages, also muss auch esta Gelegenheit gegeben voluntad anzukommen. In diesem Fall es el Sleep(10) also una korrekte Solución. (In XProfan 11 podría stattdessen auch el undokumentierte WaitInput 1 verwandt voluntad.)
Saludo Roland
Apéndice: El einfachste Solución Yo esta natürlich übersehen: Ein Repaint macht hier auch el, qué el Name vermuten lässt, como auch dieser Befehl außerhalb des Fastmode una Messageloop auslöst. |
| | | Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 29.12.2008 ▲ |
| |
| | Frank Abbing |
Su Prozeduren nutzen Messages, also muss auch esta Gelegenheit gegeben voluntad anzukommen. In diesem Fall es el Sleep(10) also una korrekte Solución.
SendMessage wartet, a el Message auch angekommen es. Sleep reagiert bisweilen unerwartet en el Zusammenhang con Messages, por lo tanto verwende Yo en solchen Fällen: KompilierenMarcaSeparación |
| | | | |
| | RGH | Frank Abbing
Frank AbbingSu Prozeduren nutzen Messages, also muss auch esta Gelegenheit gegeben voluntad anzukommen. In diesem Fall es el Sleep(10) also una korrekte Solución. SendMessage wartet, a el Message auch angekommen es. Sleep reagiert bisweilen unerwartet en el Zusammenhang con Messages, por lo tanto verwende Yo en solchen Fällen: KompilierenMarcaSeparación
... qué el erwähnten Waitinput 1 entspricht.
Sí, SendMessage wartet, en el Gegensatz a PostMessage, a el Message angekommen es. Aber manche Message löst después de Quittierung weitere Messages de, el etwa para Neuzeichnen de Controls aufrufen. Und el warten entonces en el nächsten Messageloop.
Saludo Roland |
| | | Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 29.12.2008 ▲ |
| |
|
RespuestaThemeninformationenDieses Thema ha 5 subscriber: |