![]() |
Anzeige:
|
|
|||||||
| XProfan Alles rund um die Programmiersprache XProfan. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Stammuser
![]() Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
|
Ich suche eine "Einklick"-Lösung ohne GetMessage um ans Datum zu kommen.
Hat einer von euch eine Lösung/ Vorschlag. Code:
declare calender&,calender2&
DEF getsystime(2) SendMessage(&(1),4097,0,&(2))
PROC GETDATE
declare d$,m$,y$,dtp#
dim dtp#,20
parameters chdl&
getsystime(chdl&,dtp#)
d$=format$("00",word(dtp#,6))
m$=format$("00",word(dtp#,2))
y$=format$("0000",word(dtp#,0))
dispose dtp#
return d$+"."+m$+"."+y$
ENDPROC
usermessages 16
cls
var ELEMENT2&=Control("DIALOG","",$54000000,255,26,184,169,%hwnd,0,%hinstance,$0)
calender2&=Control("SysMonthCal32","",$54000000,2,2,180,165,ELEMENT2&,$0,%hinstance)
while 1
waitinput
case %umessage=16:break
If %MWnd=ELEMENT2&
If %MouseKey=1
getdate calender2&
locate 0,0
print $(0)
endIf
endIf
wend
DestroyWindow(ELEMENT2&)
End
|
|
|
|
|
|
|
#2 (Direktlink) | |
|
Stammuser
![]() Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
|
Zitat:
Code:
declare calender&,calender2&
DEF getsystime(2) SendMessage(&(1),4097,0,&(2))
Proc GetDate
Declare Datum#
dim Datum#,20
SendMessage(Calender2&,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
usermessages 16
cls
var ELEMENT2&=Control("DIALOG","",$54000000,255,26,184,169,%hwnd,0,%hinstance,$0)
calender2&=Control("SysMonthCal32","",$54000000,2,2,180,165,ELEMENT2&,$0,%hinstance)
while 1
waitinput
case %umessage=16:break
If %MWnd=ELEMENT2&
If %MouseKey=1
GetDate
locate 0,0
print $(0)
endIf
endIf
wend
DestroyWindow(ELEMENT2&)
End
__________________
Gruss Andreas ______________________ http://www.ampsoft.eu Profan 3.3 - XProfanX2 Windows 95,98,ME,2000,XP Vista - Windows 7 32 / 64 Bit ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher |
|
|
|
|
|
|
#3 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Geht unter Windows 7. Ich würde Prozeduren aber immer als Funktion aufrufen:
Code:
declare calender&,calender2&
DEF getsystime(2) SendMessage(&(1),4097,0,&(2))
Proc GetDate
Declare Datum#
dim Datum#,20
SendMessage(Calender2&,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
usermessages 16
cls
var ELEMENT2&=Control("DIALOG","",$54000000,255,26,184,169,%hwnd,0,%hinstance,$0)
calender2&=Control("SysMonthCal32","",$54000000,2,2,180,165,ELEMENT2&,$0,%hinstance)
while 1
waitinput
case %umessage=16:break
If %MWnd=ELEMENT2&
If %MouseKey=1
locate 0,0
Print GetDate()
endIf
endIf
wend
DestroyWindow(ELEMENT2&)
End
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#4 (Direktlink) |
|
Dauergast
![]() Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.083
|
Das Kalenderfenster des Controls berandet in Win7 zu eng und schneidet in die ersten und letzten, obersten und untersten Zeichen fast zur Hälfte rein. EDIT: Nach einigen Experimenten Abhilfe gefunden:
Code:
var ELEMENT2&=Control("DIALOG","",$54000000,255,26,200,180,%hwnd,0,%hinstance,$0)
calender2&=Control("SysMonthCal32","",$54000000,0,0,200,200,ELEMENT2&,$0,%hinstance)
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3 Geändert von p. specht (29.01.2012 um 11:12 Uhr) |
|
|
|
|
|
#5 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Kann ich nicht bestätigen, hast du einen Screenshot?
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
|
#6 (Direktlink) |
|
Dauergast
![]() Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.083
|
Gelöst, siehe oben. Scheint von der Systemschrift abzuhängen...
(Blöd nur, daß das nun keine universelle Lösung ist).
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3 |
|
|
|
|
|
#7 (Direktlink) |
|
Stammuser
![]() Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
|
Danke, der Vorschlag hat den Vorteil, dass
Code:
DEF getsystime(2) SendMessage(&(1),4097,0,&(2)) Leider reagiert es auf meinem System (XP SP2) nicht anders, d.h. 1. Klick markiert das gewählte Datum und der 2. Klick zeigt es an. Leiter ging es ohne "Träger" bei mir gar nicht, und Darstellungsgröße muß ggf. den Systemeinstellungen angepasst werden. Thomas |
|
|
|
|
|
#8 (Direktlink) | |
|
Stammuser
![]() Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
|
Zitat:
Code:
Declare Kalender&, Ende%
SubClassProc
If SubClassMessage(Kalender& , 15)'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,200,%HWnd,5000,%hinstance,0)
SubClass Kalender&,1
WhileNot Ende%
Waitinput
If %Key = 2
Ende% = 1
ElseIf @MenuItem(15000)
Locate 0,0
Print Kal_GetDate()
EndIf
EndWhile
SubClass Kalender&,0
end
__________________
Gruss Andreas ______________________ http://www.ampsoft.eu Profan 3.3 - XProfanX2 Windows 95,98,ME,2000,XP Vista - Windows 7 32 / 64 Bit ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher |
|
|
|
|
|
|
#9 (Direktlink) |
|
Stammuser
![]() Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
|
@Andreas, Danke, damit geht es wie gewünscht. SubClassProc setze ich so selten ein und musste im alten Programm, einmal eingesetzt für die ScrollArea, Dank meiner Unordnung länger suchen bis ich es gefunden hatte.
Daher an dieser Stelle meine Bitte für deinen Editor: ein "naktes" SubClassProc mit auflisten. Wie ist der Stand beim MultiTiff? Benötige ich zwar im Moment nicht mehr, aber wer weis wann. Gruß Thomas |
|
|
|
|
|
#10 (Direktlink) | |
|
Stammuser
![]() Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
|
Zitat:
Was Subclassproc angeht. Füge folgenden Code per Drag&Drop in den Editor ein. Dann Rechtsklick in den Code und '' Datei als Vorlage speichern '' auswählen und speichern. So hast du auf der linken Seite des Editors unter Vorlagen die ''xprf-Vorlagen'' zur Verfügung. Einfach einen Doppelklick darauf und Du hast Dein Grundgerüst als neue Datei im Editor. Code:
'######################
'Header-Dateien
'######################
$H Windows.ph
$H Messages.ph
'######################
Windowstyle 543
$H Windows.ph
Declare Ende&
CLS ~GetSysColor(~Color_BTNFACE)
SubClass %HWnd,1
WindowTitle "Neues Projekt"
Whilenot Ende&
Waitinput
Endwhile
End
SubClassProc
If SubClassMessage(&sWnd,~WM_CLOSE)
Ende& = 1
Set("WinProc", 1)
EndIf
EndProc
__________________
Gruss Andreas ______________________ http://www.ampsoft.eu Profan 3.3 - XProfanX2 Windows 95,98,ME,2000,XP Vista - Windows 7 32 / 64 Bit ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher |
|
|
|
|
|
|
|
#11 (Direktlink) |
|
Stammuser
![]() Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
|
|
|
|
|
|
|
#12 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 04.12.2011
Ort: Pöcking
Beiträge: 126
|
Hallo,
es geht auch mit den Mauskoordinaten Code:
Declare Kalender1&,Kalender2&, Ende%
Proc Kal_GetDate
Parameters Aktive_Kalender&
Declare Datum#
Dim Datum#,20
SendMessage(Aktive_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
Kalender1& = Control("SysMonthCal32", "Kalender", $54000004, 20, 45 ,243, 208, %Hwnd, 0, %hInstance, 0)
Kalender2& = Control("SysMonthCal32", "Kalender", $54000000, 20, 300 ,243, 208, %Hwnd, 0, %hInstance, 0)
WhileNot Ende%
Waitinput
If %Key = 2
Ende% = 1
EndIf
If ((%MouseX > 20) & (%MouseX < 243))
If ((%MouseY > 45) & (%MouseY < 208))
Locate 0,0
Print Kal_GetDate(Kalender1&), + " mit der KW"
Endif
EndIf
If ((%MouseX > 20) & (%MouseX < 243))
If ((%MouseY > 300) & (%MouseY < 508))
Locate 0,0
Print Kal_GetDate(Kalender2&) , + " ohne der KW"
Endif
EndIf
EndWhile
end
__________________
Gerd Windows 7 Home Premium SP1 32Bit XProfanX2 12.0B-N |
|
|
|
|
|
#13 (Direktlink) | |
|
Stammuser
![]() Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
|
Zitat:
Werde ich dran bleiben. Proc-Auflistung ist geändert und hochgeladen. Download : http://www.ampsoft.eu/xprofed32a1.zip
__________________
Gruss Andreas ______________________ http://www.ampsoft.eu Profan 3.3 - XProfanX2 Windows 95,98,ME,2000,XP Vista - Windows 7 32 / 64 Bit ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher |
|
|
|
|
|
|
#14 (Direktlink) |
|
Stammuser
![]() Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
|
@Andreas, Danke!
@Gerd, unter XP keine Einklick-Übernahme. Gruß Thomas |
|
|
|
|
|
#15 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 04.12.2011
Ort: Pöcking
Beiträge: 126
|
Hallo Andreas,
mit den Sub ist ne gute Lösung, der Vorschlag von Rolland geht auch nicht unter XP Code:
'SysMonthCal
'-----------
$H Windows.ph
$H Messages.ph
$H commctrl.ph
Declare OldTest&,ende%
Struct POINT = \
x&, \
y&
Struct SYSTEMTIME = \
wYear%, \
wMonth%, \
wDayOfWeek%, \
wDay%, \
wHour%, \
wMinute%, \
wSecond%, \
wMilliseconds%
Struct MCHITTESTINFO = \
cbSize&, \
pt!POINT, \
uHit&, \
st!SYSTEMTIME
Proc Get_MonthCalHit
Declare DATA#, HIT%
Dim DATA#,MCHITTESTINFO
DATA#.cbSize& = SizeOf(DATA#)
DATA#.pt!x& = %MouseX - 500
DATA#.pt!y& = %MouseY - 150
Var QT% = SendMessage(KAL1&,$100E,0,DATA#) ' $100E = $1000 + 14 = HITTEST
Var TEXT$ = str$(DATA#.st!wDay%)+"."+str$(DATA#.st!wMonth%)+"."+str$(DATA#.st!wYear%)
Messagebox(TEXT$,"HITFLAG "+Str$(QT%),$40000)
Dispose DATA#
RETURN QT%
EndProc
WINDOW 0,0 - 800,600
Var KAL1& = Control("SysMonthCal32", "Kalender",$54000000, 500, 150, 180, 300, %HWND, 0, %hInstance, 0)
WhileNot Ende%
Waitinput
If %Key = 2
Ende% = 1
Else
Get_MonthCalHit
EndIf
EndWhile
eine Frage hab ich dazu noch, ist es wirklich nötig die $H Windows.ph 2-mal zu laden? Oder kann ich einmal löschen? MfG
__________________
Gerd Windows 7 Home Premium SP1 32Bit XProfanX2 12.0B-N |
|
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|