Español
Foro

Mehrere Ventana/Dialoge gleichzeitig en el Fokus haben

 

holmol93
¡Hola miteinander

Tiempo otra vez una muy eigensinnige Cuestión... oO
Como es posible, en un Programa mehrere Ventana/Dialoge gleichzeitig en el Fokus a haben en zB con el Dialogfenstern, el en el Hintergrund mentira, auch Eingaben hacer a puede y no zuerst siempre el jeweils obere schliessen tener?

Ejemplo wäre zB, dass uno el Artikelverwaltung y una Auftragsfenster offen ha y beiden trabajo kann... Also cualquier viele Ventana offen ha y todos Eingaben entgegen nehmen puede...

Keine Idea, como yo genau beschreiben kann...
Posesiones en el Anhang veces mein derzeitiges Spassprojekt angehängt, con allen Datenbankfiles, el Ver código fuente y uno vorkompilierten Exe para Testen...
Tal vez puede ser lo entonces mejor vorstellen... Momentan funktioniert siempre sólo el Ventana, welches en el Vordergrund es...

Testaccounts:

PW: 3333 - Benutzer con muy wenigen Rechten
PW: 98553 - Mein Account con así bastante allen Rechten. El puede ser variabel zuteilen übers MitarbeiterMaster.

Sombrero todavía bastante viele Bugs, zeigt mein Problema aber bastante bien...
Gruess,
Danny

712 kB
Hochgeladen:28.07.2013
Ladeanzahl99
Descargar
 
28.07.2013  
 




Julian
Schmidt
Usted könntest mittels WindowFromPoint el Handel bajo ratón ermitteln. Und todos Tasteneingaben a el Ventana weiterleiten.

Hier una bastante primitives Ejemplo.
Def @GetParent(1) !"User32","GetParent"
CLS
Declarar hhdl&
Crear("Button",%hwnd,"test",10,10,200,30)

Mientras que 1

    WaitScan
    hhdl&=HandleHover()

    If (GetParent(hhdl&)=%hwnd) or (hhdl&=%hwnd)

        If %ScanKey=8

            Settext hhdl&,Mid$(Gettext$(hhdl&),1,Len(Gettext$(hhdl&))-1)

        Más

            Settext hhdl&,Gettext$(hhdl&)+Inkey$()

        EndIf

    Endif

EndWhile

Proc HandleHover

    Declarar mpos#
    Dim mpos#,8
    Externo("user32","GetCursorPos",mpos#)
    Var hdl&=Externo("USER32","WindowFromPoint",long(mpos#,0),long(mpos#,4))
    Disponer mpos#
    Volver hdl&

ENDPROC

 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
28.07.2013  
 




Julian
Schmidt
Hab veces deinen Ver código fuente angeschaut.

Mir es aufgefallen el du en el Procedur "accessrights" 45 durchnummerierte Variables para deine Rechterverwaltung verwendest. Leichter wäre hier el Verwendung uno Arrays.
declarar right%[]'Deklaration
Claro right%[]'en 0 conjunto

whileloop 0,44

    caso bastante$=Str$(&bucle+1) :  right%[&bucle]=1'Wenn Recht vorhanden; entonces igual 1

Endwhile

'Abfrage des Rechtes entonces por

If right%[NummerRecht%-1]

Endif

 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
28.07.2013  
 




holmol93
Heyhoo

Wegen deiner ersten Antwort:
Yo muss me el Ver código fuente veces genau anschauen, en el Moment verstehe Yo como sólo Bahnhof hihi
Mi Programmierkenntnisse son todavía bastante beschränkt, antes allem si en systemnahe Características va...
Muss mich veces por el Befehlsregister durchwühlen, qué jede Anweisung su genau bewirkt

Zu el Rechtezuteilung:

Hehe, como haben wirs otra vez ;) Yo wusste a eben no una vez, qué Arrays son, deshalb tener Yo así más geholfen, como me damals en el Sinn gekommen es
Aber Sé que, dass algunos Características todavía no gerade sinnvoll, geschweige porque performant umgesetzt son... Bis dahin se todavía einiges Wasser encima el Rhein ir ;)

Im Moment möchte Yo zuerst una vez el Mehrfensterbetrieb en el Griff bekommen... porque sin Es el todo Software muy mühsam a bedienen^^
(Damit uno en el Auftragsübersicht ebenfalls una Información general encima todos Artikel einblenden kann, sin todos Ventana zuerst a schliessen, Yo me a ahora con un Hotkey beholfen (F1) , el una pequeña Diálogo con los allen Artikeln einblendet)

Greetz,

Danny
 
28.07.2013  
 




Julian
Schmidt
Vieleicht kannst du veces una minimalistisches Ejemplo puesto.Was aufzeigt como dein Fensterbetrieb gerade aussieht. Und anschließend beschreiben como du dir el Mehrfensterbetrieb vorstellst.

Yo glaube hier keiner Lust una Tausendzeilen-Code durchzusuchen.
Und me es auch todavía no klar qué du eig willst.
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
28.07.2013  
 




holmol93
Ah also:

Yo beziehe mich esta siempre en unser Access basierendes Datenbanksystem en el Geschäft.
Puedo así viele Formulare offen haben, Yo voluntad, sobald Yo de una en el otro Ventana wechsle, kann Yo Eingaben hacer.

En me ists sí ahora grade así:
Usted willst una Auftrag suchen. Also gehtst du zB en el Kundendaten, wählst como una Kunden de. El Kundendetails abierto se. Von como klickst du en una Auftrag. Der Auftrag öffnet se.
Jetzt haben wir 3 Ventana offen. Puedo sin embargo, sin zuerst todos "übergeordneten" en el Reihenfolge a schliessen, no simplemente así algo en el Kundenübersicht hacer. Klicken va ya, sin embargo reagiert nichts, solang como el Auftragsfenster aktiv es.

Yo habe como ya rumprobiert con el verschiedenen Fensterstilen, como Yo gemeint habe, lo liegt al Dialogfensterstil.
Aber si el así wäre, podría Yo sí en el %HWND trotzdem Eingaben vornehmen, qué sin embargo auch no posible es

Gruess,
Danny
 
28.07.2013  
 




Julian
Schmidt
Yo gehe su de el du para cada Ventana una Bucle hast, en el du el para el Ventana wichtigen Bedingungen abgefragst.
Sobald el Ventana geschlossen se, se el Abbruchbedingung aktiv y el Programa springt en el untergeordnete Bucle des untergeordenten Ventana.
Anschließend voluntad ebenfalls sólo el para dieses Ventana wichtige Bedingungen abgefragt.

Damit du auch todos Bedingugen aller Ventana gleichzeitig abfragen kannst, necesario todos Bedingungen natürlich auch en uno Bucle mentira. Allternativ verschiebst du todos Bedingungen en un Función y rufst ellos en cada individual Bucle en.

Das Erste wäre con Bezug en sauberen Code el bessere Solución.
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
28.07.2013  
 




Thomas
Freier
Im Principio kann él sí x-beliebige Ventana encima 28.14 - Multiprozessing con XProfan abierto , bearbeiten, links mentira dejar y schließen.
En el DBFs debería esta entonces vorsichtshalber siempre sólo para Datenlesen y -speichern encima @db("Open", #N,S) aktiv ser. Bin No sicher, si beim Multiprozessing sonst a Problemen kommt, si de zwei Prozessen darauf zurückgegriffen se.
 
Gruß Thomas
Windows XP SP2, XProfan X2
28.07.2013  
 




H.Brill
Tal vez auch una TabControl qué para dich ?
Como puede ser el doch schön schalten. Und uno braucht
sólo una einzige Ereignis-Bucle. Man muß sólo aufpassen,
welcher Button/Control en welches Ventana gehört.
Hab hier algo vorbereitet. Bitte korrigiert mich, si
qué falso ser debería :
Declarar Dlg1&, Dlg2&, Dlg3&, tabctrl&, Reiter&
Declarar edit1&, edit2&, edit3&, edit4&, edit5&, btn1&, btn2&, btn3&, lb&
Título de la ventana "Mein Fenster"
Ventana 800, 600
tabctrl& = Crear("TabCtrl", %HWnd, "Kunden", 5, 10, 730, 550)
' Reiter invertir
@InsertTab(tabctrl&, 3, "Artikel")
@InsertTab(tabctrl&, 2, "Rechnungen")
Ventana de Estilo 1024
' 1. Diálogo
Dlg1&  = @Crear("Window",tabctrl&,"Kunden Verwaltung",10, 60, 700, 480)
edit1& = @Crear("Edit",    Dlg1&, "", 10, 10, 120, 25)
edit2& = @Crear("Edit",    Dlg1&, "", 10, 40, 120, 25)
btn1&  = @Crear("Button",  Dlg1&, "Kopiere", 10, 80, 60, 25)
lb&    = @Crear("ListBox", Dlg1& , 1, 10, 120, 120, 180)
AddStrings(lb&, "Maier")
AddStrings(lb&, "Müller")
AddStrings(lb&, "Schmitt")
' 2. Diálogo
Dlg2&  = @Crear("Window",tabctrl&,"Artikel Verwaltung",10, 60, 700, 480)
btn2&  = @Crear("Button", Dlg2&, "Test2", 10, 10, 60, 25)
edit3& = @Crear("Edit",   Dlg2&, "", 10, 50, 120, 25)
edit4& = @Crear("Edit",   Dlg2&, "", 10, 80, 120, 25)
' 3. Diálogo
Dlg3&  = @Crear("Window", tabctrl&, "Rechnungs Erstellung", 10, 60, 700, 480)
edit5& = @Crear("Edit", Dlg3&, "", 10, 10, 240, 25)
btn3&  = @Crear("Button", Dlg3&, "Test 3", 10, 50, 80, 25)
ShowWindow(Dlg2&, 0)
ShowWindow(Dlg3&, 0)
SetWindowPos Dlg1& = %WinLeft + 20, %WinTop + 100; 0

Mientras que 1

    WaitInput
    Reiter& = @GetActiveTab(tabctrl&)

    If @TabChanged(tabctrl&)

        'Reiter& = @GetActiveTab(tabctrl&)

        Select Reiter&

            CaseOf 0

            ShowWindow(Dlg1&, 1)
            ShowWindow(Dlg2&, 0)
            ShowWindow(Dlg3&, 0)
            SetWindowPos Dlg1& = %WinLeft + 20, %WinTop + 100; 0

            CaseOf 1

            ShowWindow(Dlg2&, 1)
            ShowWindow(Dlg1&, 0)
            ShowWindow(Dlg3&, 0)
            SetWindowPos Dlg2& = %WinLeft + 20, %WinTop + 100; 0

            CaseOf 2

            ShowWindow(Dlg3&, 1)
            ShowWindow(Dlg1&, 0)
            ShowWindow(Dlg2&, 0)
            SetWindowPos Dlg3& = %WinLeft + 20, %WinTop + 100; 0

        EndSelect

    EndIf

    Case %Key = 2 : Romper

    If @Clicked(btn1&)

        'MessageBox("Button en Kunden Verwaltung geklickt !", "Info", 0)
        SetText edit5&, GetString$(lb&, GetCurSel(lb&))

    ElseIf @Clicked(btn2&)

        MessageBox("Button en Artikel Verwaltung geklickt !", "Info", 0)

    ElseIf @Clicked(btn3&)

        MessageBox("Button en Rechnungs Erstellung geklickt !", "Info", 0)

    EndIf

EndWhile

End
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
29.07.2013  
 




Julian
Schmidt
Lo macht sí en el Principio absolute no hay diferencia si el Controls en una TabControl oder una Ventana mentira.
Das Wichtige es, el todos Bedingungen en uno Bucle mentira. Oder por Muliprozessing gleichzeitig abgefragt voluntad puede.

Yo denke de Handling her wären ChildWindows todavía el einfachste. ¿Puede du dir sí veces anschauen.
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
29.07.2013  
 




Thomas
Freier
Tal vez trifft dieses Ejemplo el Gesuchte.
 $H windows.ph
 $H messages.ph
Mensajes del usuario 16
DEF SysParameterInfo(4) ! "user32","SystemParametersInfoA"
Declarar WX%,WY%,WL%,WB%
Declarar item&,x%
Declarar Win1&,W1Editar1&,W1Editar2&,W1Grid1&,W1End&,W1NeuSp&
Declarar Win2&,W2Editar1&,W2Editar2&,W2End&
'Freier Desktopbereich
Declarar Rect#
Dim Rect#,16
SysParameterInfo(48,0,Rect#,0)
wx%=Largo(Rect#,0)
wy%=Largo(Rect#,4)
wl%=Largo(Rect#,8)
wb%=Largo(Rect#,12)
Disponer Rect#
Ventana wx%,wy% - wl%,wb%
Windowtitle "Hauptfenster"
Cls ~Getsyscolor(15)
Setdialogfont ~Getstockobject(~Default_gui_font)
PopUp "&Daten"
AppendMenu 100,"&Kunden"
AppendMenu 200,"&Auftrag"

Mientras que 1

    Waitinput

    If %UMessage = 16

        caso GetActiveWindow()=%hwnd:Romper

        If GetActiveWindow()=Win1&

            DestroyWindow(Win1&)
            Win1&=0
            subclass Win1&,0
            setfocus(%hwnd)

        ElseIf GetActiveWindow()=Win2&

            DestroyWindow(Win2&)
            Win2&=0
            subclass Win2&,0
            setfocus(%hwnd)

        EndIf

    EndIf

    Case MenuItem(100) AND (Win1&=0): KUNDEN
    Case MenuItem(200) AND (Win2&=0): AUFTRAG

Endwhile

subclass Win1&,0
subclass Win2&,0
End

subClassProc

    If SubClassMessage(win1&, ~WM_NOTIFY)

        If clicked(W1End&)

            DestroyWindow(Win1&)
            Win1&=0
            subclass Win1&,0
            setfocus(%hwnd)

        ElseIf getfocus(W1NeuSp&)

            x%=Messagebox("Daten speichern?","Hinweis",32+4)
            caso x%=6:AddStrings(W1Grid1&, Gettext$(W1Editar1&)+"|"+Gettext$(W1Editar2&))
            setfocus(W1Grid1&)

        ElseIf Largo(&sLParam,8)=-3' Haga doble clic en links

            item&=Largo(&sLParam,12)

            If item&<>-1

                If Win2&>0

                    Settext W2Editar1&, Gettext$(W1Grid1&, item&, 0)
                    Settext W2Editar2&, Gettext$(W1Grid1&, item&, 1)

                endif

            EndIf

        EndIf

    EndIf

    If SubClassMessage(win2&, ~WM_NOTIFY)

        If clicked(W2End&)

            DestroyWindow(Win2&)
            Win2&=0
            subclass Win2&,0
            setfocus(%hwnd)

        EndIf

    EndIf

ENDPROC

Proc KUNDEN

    Win1&=Crear("Window",%hwnd,"Kunden",10,10,340,430)
    W1Grid1&=Crear("GridBox", Win1&, "Name;0;180;Vorname;0;100", 1, 10, 10, 300, 190)
    AddStrings(W1Grid1&, "Meyer|Klaus")
    AddStrings(W1Grid1&, "Peter|Peter")
    AddStrings(W1Grid1&, "Klein|Fritz")
    Crear("Tooltip",%hwnd,W1Grid1&,"in el Auftrag por Doppelklick")
    Crear("Text",Win1&,"Name",10,210,80,20)
    Crear("Text",Win1&,"Vorname",10,235,80,20)
    W1Editar1&=Crear("EDIT",Win1&,"",100,210,120,20)
    W1Editar2&=Crear("EDIT",Win1&,"",100,235,120,20)
    W1NeuSp&=Crear("Button",Win1&,"Eingabe speichern",10,310,120,22)
    W1End&=Crear("Button",Win1&,"Schließen",200,310,80,22)
    subclass Win1&,1

ENDPROC

Proc AUFTRAG

    Win2&=Crear("Window",%hwnd,"Auftrag",510,10,340,430)
    W2Editar1&=Crear("EDIT",Win2&,"",10,50,120,20)
    W2Editar2&=Crear("EDIT",Win2&,"",10,75,120,20)
    W2End&=Crear("Button",Win2&,"Schließen",200,310,80,22)
    subclass Win2&,1

ENDPROC

 
Gruß Thomas
Windows XP SP2, XProfan X2
31.07.2013  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

10.127 Views

Untitledvor 0 min.
E.T.25.06.2023
H.Brill10.07.2018
rquindt28.01.2017
Matthias Arlt18.02.2016
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie