Autor | Thema: Verschiebbares Dialogfenster | | Datum:09.07.02 21:24 
(w.heyse@wobline.de) | |
Leider habe ich noch nicht so viel Ahnung, davon aber eine ganze Menge. Ich möchte ein Dialogfenster ohne Hauptfenster öffnen. Dieses ist mir auch gelungen. Dieses Dialogfenster möchte ich jedoch frei verschieben können. Und dann soll es auch da bleiben!! Da aber bei create Dialog die Koordinaten fest vorgegeben sind, funktioniert es natürlich nicht. Ich habe keine Ahnung, wie man das bewerkstelligen könnte. Vielleicht kann mir jemand helfen. Vielen Dank vorab und wenns klappt natürlich auch noch danach.
PS Ich benutze Profan 4.5
Folgendes Listing:
Declare Ende%
'Erkennen des Befehls
PROC Erkennen
'hier wird später die Eingabe ausgewertet
ENDPROC
PROC Fenster1
Declare hD%, ENTER%, hN%, OK%, \
Befehl$
Let hD% = @CreateDialog(%HWnd,"Fenster1",20,40,300,70)
@CreateText(hD%,"Eingabe", 10,13,60,20)
Let hN% = @CreateEdit(hD%,"",65,10,200,24)
'Dialog-Schleife
@SetFocus(hN%)
Let OK% = 0
WhileNot Ok%
WaitInput
If @Equ(%Key,2) 'Schließen bzw. Alt F4
Let Ok% = 1
END
ElseIf @GetFocus(ENTER%) 'Enter gedrückt
Let Ok% = 1
Let Befehl$ = @GetText$(hN%)
' *****************Aufruf des Erkennen Programms
Erkennen
EndIf
Wend
@DestroyWindow(hD%)
ENDPROC
'Haupt-Programm
Let Ende% = 0
WhileNot Ende%
Fenster1
Wend
End
|
| | Datum:09.07.02 21:31 
(w.heyse@wobline.de) | |
tschuldigung, auch ich habe leider nicht den vollen Namen angegeben. hier ist er: Wilfried Heyse
|
| | Datum:09.07.02 22:42 
(webmaster@rokosoft.de) | |
Hi, ne Lösung wäre so:
Declare Ende%,left%,top%
Declare rect#,x%,y%
declare x$,y$
Def GetWindowRect(2) !"USER32","GetWindowRect"
let x$=@ReadIni$("C:\Koord.ini","Position","X")
let y$=@ReadIni$("C:\Koord.ini","Position","Y")
If equ$(x$,"")
let x%=20
let y%=40
Else
let x%=val(x$)
let y%=val(y$)
endif
'Erkennen des Befehls
PROC Erkennen
'hier wird später die Eingabe ausgewertet
ENDPROC
PROC Fenster1
Declare hD%, ENTER%, hN%, OK%, \
Befehl$
Let hD% = @CreateDialog(%HWnd,"Fenster1",x%,Y%,300,70)
@CreateText(hD%,"Eingabe", 10,13,60,20)
Let hN% = @CreateEdit(hD%,"",65,10,200,24)
'Dialog-Schleife
@SetFocus(hN%)
Let OK% = 0
WhileNot Ok%
WaitInput
If @Equ(%Key,2) 'Schließen bzw. Alt F4
'hier Position merken
Dim rect#,16
GetWindowRect(hd%,rect#)
left%=Long(rect#,0)
top%=Long(rect#,4)
Dispose rect#
'Normal ini in deinem Pfad speichern
WriteIni "C:\Koord.ini","Position","X"=str$(Left%)
WriteIni "C:\Koord.ini","Position","Y"=str$(Top%)
Let Ok% = 1
END
'Wi ist den der Button ;) ?
ElseIf @GetFocus(ENTER%) 'Enter gedrückt
Let Ok% = 1
Let Befehl$ = @GetText$(hN%)
' *****************Aufruf des Erkennen Programms
Erkennen
EndIf
Wend
@DestroyWindow(hD%)
ENDPROC
'Haupt-Programm
Let Ende% = 0
Fenster1
WhileNot Ende%
'Hier darf das Fenster1 aber nicht hin, sonst wird es
'dauernd wieder aufgerufen.
Wend
End
Hoffentlich hilft es
Rolf
|
| | Datum: 10.07.02 23:41 
(w.heyse@wobline.de) | |
Der Tip mit der Ini ist ein guter Hinweis. Danke! Leider funktioniert es doch nicht, da aus unerfindlichen Gründen die Ini nicht, bzw. nur manchmal geschrieben wird. Wahrscheinlich liegt es irgendwo am Cache oder so.Wenn ich mir die Werte mit print anzeigen lasse, erscheint die korrekte Fensterposition. Das das Fenster immer wieder erscheint ist gewollt. Das Fenster übergibt später ein Kommando, welches wiederum eine Aktion auslöst und erscheint sofort wieder. Die Frage wo der Button ist, ist schon berechtigt. Da war mal einer. Hab ich vergessen zu löschen. Trotzem DANKE muß erst noch klären, warum die Datei nicht korrekt geschrieben wird.
|
|
|