GUI-Layout und verschiedene Bildschirm- oder Fenstergrößen

Startseite Foren Deutsches LiveCode-Forum GUI-Layout und verschiedene Bildschirm- oder Fenstergrößen

Schlagwörter: 

Ansicht von 0 Antwort-Themen
  • Autor
    Beiträge
    • #20162
      Torsten
      Teilnehmer

      Dieser Beitrag ist ein Anhang zu https://www.livecode-blog.de/forums/topic/grroesse-stack/

      Hi Oliver und Klaus,

      aufgrund von Klaus Vorschlag mit RECT habe ich habe gestern zwei Handler gebaut, die das Problem lösen:

      Ich habe dazu auch ein kleines Screenvideo gemacht, in dem erklärt wird, wie die Handler eingesetzt werden:
      https://www.dropbox.com/s/6pfhzpwg68g2mge/Resizing_Livecode_GUI.mov?dl=0

      Hier ist der Code, der in das Stack-Skript kopiert wird:

      
      -------------------------------------------------------------------
      -- Diese Konstante bestimmt den Namens-Prefix für die 
      -- Stack-Properties. Dieser Name ist im Prinzip beliebig
      -- und kann nach eigenem Ermessen/Geschmack geändert werden.
      
      constant kSizePrefix = "Sizeposition_"
      
      -------------------------------------------------------------------
      
      command save_control_positions
         
         ## Ermittlung der aktuellen Größe des Fensters, um den Größenparameter zu setzen
         
         put the width of this stack & "_" & the height of this stack into tActualSize
         
         ## Name für die Größen-Property erstellen, z.B. "Sizeposition_800_400"
         
         put kSizePrefix & tActualSize into tSizeProperty
         
         ## Speicherung der aktuellen Position und Größe jedes Bedienelements /Control) 
         
         repeat with i = 1 to the number of controls of the current card
            
            set the tSizeProperty of control i to the rect of control i
            
         end repeat
         
      end save_control_positions
      
      -------------------------------------------------------------------
      
      command set_control_positions pSize
         
         put kSizePrefix & pSize into tSizeProperty
         put the tSizeProperty of control 1 into tNewSize
         
         if tNewSize is empty then   
            
            put the customKeys of control 1 into tCustomProperties
            filter lines of tCustomProperties with kSizePrefix & "*"
            replace kSizePrefix with empty in tCustomProperties
            
            if tCustomProperties is empty then
               
               answer "Keine Auflösungen verfügbar!"
               exit set_control_positions
               
            else 
               
               put empty into tButtonListe
               repeat for each line i in tCustomProperties
                  
                  put quote & i & quote & " OR " after tButtonListe
                  
               end repeat 
               
               put "Cancel" after tButtonListe
               put "answer " & quote & "Folgende Auflösungen sind verfügbar:" & quote && " with" && tButtonListe into tAuswahl
               do tAuswahl
               
               if it is "Cancel" then 
                  exit set_control_positions
               else
                  set_control_positions it
               end if
               
            end if
            
         else
            
            put the loc of this stack into tStackLoc
            set itemdelimiter to "_" 
            set the width of this stack to item 1 of pSize
            set the height of this stack to item 2 of pSize
            set the loc of this stack to tStackLoc
            
            repeat with i = 1 to the number of controls of the current card
               
               set the rect of control i to the tSizeProperty of control i 
               
            end repeat
            
         end if
         
         
      end set_control_positions
      
      -------------------------------------------------------------------
      

      Freue mich auch Kommentare!

      LG
      Torsten

Ansicht von 0 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.