Resize von tdModal()-Window

Moderator: Moderatoren

Antworten
Benutzeravatar
Christof
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 01. Okt 2007 17:14
Wohnort: Bedburg
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Resize von tdModal()-Window

Beitrag von Christof »

Hallo,

vielleicht kann mir jemand einen Tipp geben.

Ich erzeuge ein Fenster über die tdModal()-Funktion. Wenn ich dieses Fenster jetzt vergrößere oder verkleinere sollen einfach nur alle Childs() neu positioniert und in der Größe proporional angepasst werden. Eigentlich war ich davon ausgegangen, dass Clayton dieses Verhalten eingebaut hat Das scheint aber nicht so zu sein. Das Fenster ändert zwar seine Größe, alle Childs (das sind 2 Browser und ein paar Schaltflächen) bleiben aber gleich groß und sitzen dann irgendwo links unten.

Kann ich die tdcDLG.PRG irgendwie einfach anpassen, dass dies dann bei "meinen" Fenstern funktioniert?

Danke und Gruß

Christof
Benutzeravatar
Christof
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 01. Okt 2007 17:14
Wohnort: Bedburg
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Resize von tdModal()-Window

Beitrag von Christof »

Vielleicht hilft hier noch der Code der Resize-Methode aus tdcDlg.PRG.

Code: Alles auswählen

******************************************************************************
*                     METHOD tdcDlg:resize()
******************************************************************************
METHOD tdcDlg:resize(aOld,aNew)
LOCAL oDa,nDaHt
LOCAL i,nLen

******* If using Top or Bottom Bars
IF ! empty(::oTopBar)
   ::oTopBar:resize()
ENDIF
IF ! empty(::oBottomBar)
   ::oBottomBar:resize()
ENDIF

******* If using Left or Right Bars
IF ! empty(::oLeftBar)
   ::oLeftBar:resize()
ENDIF
IF ! empty(::oRightBar)
   ::oRightBar:resize()
ENDIF

******* If using a scrolling window
IF valtype(::oBase) == "O"

   ******* resize
   ::oBase:setSize({::oBase:currentsize()[1]+(aNew[1]-aOld[1]),;
                    ::oBase:currentsize()[2]+(aNew[2]-aOld[2])})

   ******* repaint
   ::oBase:invalidaterect()

ENDIF


******* If using aRegit
IF ::aRegit != nil .AND. ! empty(::aRegit)
   oDa   := ::drawingarea
   nDaHt := oDa:currentSize()[2]
   nLen  := len(::aRegit)
   oDa:lockUpdate(.T.)
   IF nLen > 0
      FOR i := 1 TO nLen
         IF ::aRegit[i,1] != nil .AND. ::aRegit[i,1]:status() == XBP_STAT_CREATE
            ::aRegit[i,1]:setPos({::aRegit[i,2],nDaHt-::aRegit[i,3] })
         ENDIF
      NEXT
   ENDIF
   oDa:lockUpdate(.F.)
   oDa:invalidateRect()
ENDIF

RETURN self
*                End of METHOD tdcDlg:resize()
******************************************************************************
Antworten