`
Par2: Multiple window layouts 2006-05-28 -- Bjarne Havnen Operating two different windows with same fields in the same procedure will give you a lot of Warning Label Dupliated, but it can be done The steps are omit the original window declaration Declare the window label as a window reference copy the original window definition and give it another name, like OriginalWindow copy it once more and call it CopyWindow In the embed before opening window, do a reference assignent Case condition Of whatever Window &=Originalwindow Of another window &=Copywindow else Window &=OriginalWindow End If you like to avoid maintaining more than one copy ,make a template to generate the original code with a copy label based on the %StandardWindowGeneration. A sample is attached. #Template(twowin,'make a reference copy of the window'),Family('cw20') #Extension(twowin,'twowin') #At(%dataSectionBeforewindow) Omit('_originalwin') #EndAT #At(%dataSectionafterwindow) _originalwin %Window &Window #Insert(%StandardWindowGenerationCopy) #EndAT #At(%BeforeWindowOpening) %Window &=Original%Window #Embed(%WindowReferenceAssignement,'Overide window refereence') !condition for openeing do abvoe #EndAT #GROUP(%StandardWindowGenerationCopy),AUTO #MESSAGE('Standard Window Generation',3) #DECLARE(%NewWindowStatement) #DECLARE(%CurrentOperationMode) #IF(%WindowStatement) #IF(SUB(%WindowStatement,1,11)='APPLICATION') #SET(%NewWindowStatement,%WindowStatement) #ELSIF(%WindowOperationMode='Use WINDOW setting') #SET(%NewWindowStatement,%WindowStatement) #ELSE #SET(%CurrentOperationMode,SUB(%WindowStatement,LEN(%WindowStatement)-3,4)) #IF(%CurrentOperationMode = ',MDI') #IF(%WindowOperationMode = 'MDI') #SET(%NewWindowStatement,%WindowStatement) #ELSE #SET(%NewWindowStatement,SUB(%WindowStatement,1,LEN(%WindowStatement)-4)) #IF(%WindowOperationMode = 'MODAL') #SET(%NewWindowStatement,%NewWindowStatement & ',MODAL') #ENDIF #ENDIF #ELSIF(%CurrentOperationMode = 'ODAL') #IF(%WindowOperationMode = 'MODAL') #SET(%NewWindowStatement,%WindowStatement) #ELSE #SET(%NewWindowStatement,SUB(%WindowStatement,1,LEN(%WindowStatement)-6)) #IF(%WindowOperationMode = 'MDI') #SET(%NewWindowStatement,%NewWindowStatement & ',MDI') #ENDIF #ENDIF #ELSE #SET(%NewWindowStatement,%WindowStatement) #IF(%WindowOperationMode = 'MDI') #SET(%NewWindowStatement,%NewWindowStatement & ',MDI') #ELSIF(%WindowOperationMode = 'MODAL') #SET(%NewWindowStatement,%NewWindowStatement & ',MODAL') #ENDIF #ENDIF #ENDIF #IF(EXTRACT(%WindowStatement,'ICON') AND NOT EXTRACT(%WindowStatement,'IMM')) #SET(%NewWindowStatement,%NewWindowStatement & ',IMM') #ELSIF(EXTRACT(%WindowStatement,'MAX') AND NOT EXTRACT(%WindowStatement,'IMM')) #SET(%NewWindowStatement,%NewWindowStatement & ',IMM') #ENDIF Original%Window %NewWindowStatement #DECLARE(%Indentation,LONG) #DECLARE(%TestValue) #SET(%Indentation,0) #DECLARE(%ControlSourceLine) #FOR(%Control) #IF(%ControlIndent<%Indentation) #LOOP #SET(%Indentation,%Indentation-1) %[22+(2*%Indentation)]Null END #IF(%ControlIndent=%Indentation) #BREAK #ENDIF #ENDLOOP #ENDIF #SET(%ControlSourceLine,%ControlStatement) #IF(%MessageDescription) #IF(%ControlType <> 'STRING') #IF(NOT EXTRACT(%ControlStatement,'MSG')) #FIND(%Field,%ControlUse) #IF(%FieldDescription) #SET(%ControlSourceLine,%ControlSourceLine & ',MSG(''' & QUOTE(%FieldDescription) & ''')') #ENDIF #ENDIF #ENDIF #ENDIF %[22+(2*%Indentation)]Null %ControlSourceLine #CASE(%ControlType) #OF('OPTION') #OROF('GROUP') #OROF('SHEET') #OROF('TAB') #OROF('OLE') #OROF('MENU') #OROF('MENUBAR') #OROF('TOOLBAR') #SET(%Indentation,%Indentation+1) #ELSE #IF(NOT %FirstField) #IF(NOT(%ControlMenu OR %ControlTool)) #SET(%FirstField,%Control) #ENDIF #ENDIF #ENDCASE #ENDFOR #LOOP,WHILE(%Indentation) #SET(%Indentation,%Indentation-1) %[22+(2*%Indentation)]Null END #ENDLOOP %[20]Null END #ENDIF #IF(NOT(%FirstField)) #SET(%FirstField,1) #ENDIF Copy%Window %NewWindowStatement #Embed(%CopyWindowStatement,'Copy of window content') End Printed November 21, 2024, 11:39 am This article has been viewed/printed 35321 times. |