#include 'dcdialog.ch'
proc main
local getlist:={}
@ 1,1 dcsay "Das ist das neue Fenster"
@ 2,1 dcsay "das sich nicht überlagern soll"
@ 4,01 dcpushbutton caption "Ende " size 10,1 ;
action {||dc_readguievent(DCGUI_EXIT_OK,Getlist)}
@ 4,12 dcpushbutton caption "neues Fenster" size 10,1 ;
action {||runshell("","fenster.exe",.t.)}
dcread gui fit
return
proc appsys
return
überlagernde Fenster [erledigt]
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 475
- Registriert: Sa, 08. Apr 2006 14:07
- Wohnort: Datteln
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
überlagernde Fenster [erledigt]
Dieses Programm (Fenster.exe) kann sich immer wieder selbst aufrufen. Leider legen sich die neu erzeugten Fenster immer übereinander. Das ist in der Praxis natürlich sehr unübersichtlich. Kann mir da wohl jemand sagen, wo ich den Hebel ansetzen muss, wenn ich neue Fenster in diesem Beispiel immer einen Tick versetzen will ? Es gibt da in den getoptions den Parameter ORIGIN, mit dem in das neue Fenster an die Mauskoordinaten setzen könnte. So was ähnliches stelle ich mir vor. Es könnte auch ein Wert aus einer Tabelle sein, den ich bei jedem Aufruf hochzähle und irgendwo im Programm verwende. Ich habe nur nicht die geringste Ahnung wie und wo.
Zuletzt geändert von Ewald am Sa, 18. Jul 2009 17:08, insgesamt 1-mal geändert.
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2934
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: überlagernde Fenster
Hallo Ewald,
ich würde die Fensterposition mit DCGET OPTIONS WINDOWROW und WINDOWCOL festlegen und dann dem nächsten Aufruf als Parameter mitgeben.
Z.B. x und y als Position RunShell(alltrim(str(x,3,0))+" "+alltrim(str(y,3,0)),"Fenster.exe",....)
Über PCount() die Parameter ermitteln, und falls übergeben (beim ersten mal nicht) dann dementsprechend wieder über DCGET OPTIONS setzen. Das was du damit nicht abfängst, ist der Aufruf ein zweites Mal über Windowssymbol. Andere Möglichkeit wäre als Parameter ein Zähler, der dann einfach die Position um zähler mal Pixel versetzt.
ich würde die Fensterposition mit DCGET OPTIONS WINDOWROW und WINDOWCOL festlegen und dann dem nächsten Aufruf als Parameter mitgeben.
Z.B. x und y als Position RunShell(alltrim(str(x,3,0))+" "+alltrim(str(y,3,0)),"Fenster.exe",....)
Über PCount() die Parameter ermitteln, und falls übergeben (beim ersten mal nicht) dann dementsprechend wieder über DCGET OPTIONS setzen. Das was du damit nicht abfängst, ist der Aufruf ein zweites Mal über Windowssymbol. Andere Möglichkeit wäre als Parameter ein Zähler, der dann einfach die Position um zähler mal Pixel versetzt.
Viele Grüße
Wolfgang
Wolfgang
-
- Rekursionen-Architekt
- Beiträge: 475
- Registriert: Sa, 08. Apr 2006 14:07
- Wohnort: Datteln
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: überlagernde Fenster
Hallo Wolfgang,
danke für den Tip. Das habe ich gesucht.
Wie sagt man so schön ? Wer lesen (und verstehen) kann ist klar im Vorteil. Die Getoptions habe ich sicherlich 20 mal in dieser Sache durchgeackert und die beiden Parameter überhaupt nicht in Zusammenhang mit meinem Problem gebracht. Das Alter ...
Gruß
Ewald
danke für den Tip. Das habe ich gesucht.
Wie sagt man so schön ? Wer lesen (und verstehen) kann ist klar im Vorteil. Die Getoptions habe ich sicherlich 20 mal in dieser Sache durchgeackert und die beiden Parameter überhaupt nicht in Zusammenhang mit meinem Problem gebracht. Das Alter ...
Gruß
Ewald
-
- Rekursionen-Architekt
- Beiträge: 475
- Registriert: Sa, 08. Apr 2006 14:07
- Wohnort: Datteln
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: überlagernde Fenster [erledigt]
So geht's
Code: Alles auswählen
#include 'dcdialog.ch'
proc main
local getlist:={}
parameter xwert
if !pcount() = 0
vwert=val(xwert)
else
vwert=300
endif
dcgetoption;
windowrow vwert ;
windowcol vwert
@ 1,1 dcsay "Das ist das neue Fenster"
@ 2,1 dcsay "das sich nicht überlagern soll"
@ 4,01 dcpushbutton caption "Ende " size 10,1 ;
action {||dc_readguievent(DCGUI_EXIT_OK,Getlist)}
@ 4,12 dcpushbutton caption "neues Fenster" size 10,1 ;
action {||runshell(str(vwert+10),"fenster.exe",.t.)}
dcread gui fit ;
options getoptions
return
proc appsys
return