Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 241042 (2478)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Verschiebbares Dialogfenster
Wilfried
| 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
Wilfried Heyse
| 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
Rolf Koch
| 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
Wilfried Heyse
| 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.

| Zurück zur Übersicht