EduardoS Posted September 19, 2018 Share Posted September 19, 2018 I don't know if it can be usefull to someone, but I'm sharing a script to make a custom grid. Forgive me if I mismatched some translation to english. I just couldn't place the fill box for space/lenght at it's right and properly aligned to its bottom, placed it under. Guess is due it is a swap pane. PROCEDURE CustomGrid; VAR DH, LH, PH, QH, DV, LV, PV, QV, LM, PM :INTEGER; DisH, LarH, ProH, Quah, DisV, LarV, ProV, QuaV, LarM, ProM :INTEGER; ALT, LAR, EH, EV, Un0, Un1, pX, pY :REAL; EC, ROh, ROv, TM :BOOLEAN; h1, h2, h3 : HANDLE; id :LONGINT; PROCEDURE Dialog_Setup; BEGIN id:=CreateLayout('Custom Grid',FALSE,'OK','Cancel'); CreateStaticText(id, 4,'Space Between or Lenght of Bars?',50); SetFirstLayoutItem(id, 4); CreateGroupBox(id, 10,'RB 1',FALSE); SetBelowItem(id, 4, 10, 0, 0); CreateRadioButton(id, 11,'Space'); SetFirstGroupItem(id, 10, 11); CreateRadioButton(id, 12,'Lenght'); SetBelowItem(id, 11, 12, 0, 0); CreateGroupBox(id, 5,'Horizontal Bars:',TRUE); SetBelowItem(id, 10, 5, 0, 0); CreateSwapControl (id, 20); SetFirstGroupItem(id, 5, 20); CreateGroupBox (id, 21, 'SP 1', FALSE); CreateStaticText(id, 22,'Space:',15); SetFirstGroupItem(id, 21, 22); CreateGroupBox (id, 23, 'SP 2', FALSE); CreateStaticText(id, 24,'Lenght:',15); SetFirstGroupItem(id, 23, 24); CreateSwapPane (id, 20, 21); CreateSwapPane (id, 20, 23); CreateEditInteger(id, 25, 0, 6); SetBelowItem(id, 21, 25, 0, 0); CreateStaticText(id, 51,'Thickness:',13); SetBelowItem(id, 20, 51, 0, 0); CreateEditInteger(id, 52, 0, 6); SetRightItem(id, 51, 52, 0, 0); CreateStaticText(id, 53,'Depth:',13); SetBelowItem(id, 51, 53, 0, 0); CreateEditInteger(id, 54, 0, 6); SetRightItem(id, 53, 54, 0, 0); CreateStaticText(id, 55,'N of Bars:',13); SetBelowItem(id, 53, 55, 0, 0); CreateEditInteger(id, 56, 0, 6); SetRightItem(id, 55, 56, 0, 0); CreateRadioButton (id, 57,'Retangle Profile'); SetBelowItem (id, 55, 57, 0, 0); CreateRadioButton (id, 58,'Oval Profile'); SetBelowItem (id, 57, 58, 0, 0); AlignItemEdge (id, 56, 1, 1, 0); AlignItemEdge (id, 25, 1, 1, 1); SetEdgeBinding (id, 25, TRUE, TRUE, FALSE, FALSE ); CreateGroupBox(id, 6,'Vertical Bars:',TRUE); SetRightItem(id, 5, 6, 0, 0); CreateSwapControl (id, 30); SetFirstGroupItem(id, 6, 30); CreateGroupBox (id, 31, 'SP 1', FALSE); CreateStaticText(id, 32,'Space:',15); SetFirstGroupItem(id, 31, 32); CreateGroupBox (id, 33, 'SP 2', FALSE); CreateStaticText(id, 34,'Lenght:',15); SetFirstGroupItem(id, 33, 34); CreateSwapPane (id, 30, 31); CreateSwapPane (id, 30, 33); CreateEditInteger(id, 35, 0, 6); SetBelowItem(id, 31, 35, 0, 0); CreateStaticText(id, 61,'Thickness:',13); SetBelowItem(id, 30, 61, 0, 0); CreateEditInteger(id, 62, 0, 6); SetRightItem(id, 61, 62, 0, 0); CreateStaticText(id, 63,'Depth:',13); SetBelowItem(id, 61, 63, 0, 0); CreateEditInteger(id, 64, 0, 6); SetRightItem(id, 63, 64, 0, 0); CreateStaticText(id, 65,'N of Bars:',13); SetBelowItem(id, 63, 65, 0, 0); CreateEditInteger(id, 66, 0, 6); SetRightItem(id, 65, 66, 0, 0); CreateRadioButton (id, 67,'Retangle Profile'); SetBelowItem (id, 65, 67, 0, 0); CreateRadioButton (id, 68,'Oval Profile'); SetBelowItem (id, 67, 68, 0, 0); AlignItemEdge (id, 66, 1, 2, 0); AlignItemEdge (id, 35, 1, 2, 1); SetEdgeBinding (id, 35, TRUE, TRUE, FALSE, FALSE ); CreateCheckBoxGroupBox(id, 7,'Has Frame?',FALSE); SetBelowItem(id, 5, 7, 0, 0); CreateStaticText(id, 40,'Thickness:',13); SetFirstGroupItem(id, 7, 40); CreateEditInteger(id, 41, 0, 6); SetRightItem(id, 40, 41, 0, 0); CreateStaticText(id, 42,'Depth:',13); SetRightItem(id, 41, 42, 0, 0); CreateEditInteger(id, 43, 0, 6); SetRightItem(id, 42, 43, 0, 0); AlignItemEdge (id, 51, 3, 3, 0); AlignItemEdge (id, 40, 3, 3, 1); SetEdgeBinding (id, 40, TRUE, TRUE, FALSE, FALSE ); AlignItemEdge (id, 52, 3, 4, 0); AlignItemEdge (id, 41, 3, 4, 1); SetEdgeBinding (id, 41, TRUE, TRUE, FALSE, FALSE ); AlignItemEdge (id, 61, 3, 5, 0); AlignItemEdge (id, 42, 3, 5, 1); SetEdgeBinding (id, 42, TRUE, TRUE, FALSE, FALSE ); AlignItemEdge (id, 62, 3, 6, 0); AlignItemEdge (id, 43, 3, 6, 1); SetEdgeBinding (id, 43, TRUE, TRUE, FALSE, FALSE ); CreateStaticText(id, 8,'After the OK, Click Where to Place it.',50); SetBelowItem(id, 7, 8, 0, 0); END; PROCEDURE Dialog_Handler(VAR item :LONGINT; data :LONGINT); BEGIN CASE item OF SetupDialogC: BEGIN END; 1: BEGIN GetBooleanItem(id, 11, EC); IF GetEditInteger(id,25,DisH) AND GetEditInteger(id,52,LarH) AND GetEditInteger(id,54,ProH) AND GetEditInteger(id,56,QuaH) THEN DH:= DisH; LH:= LarH; PH:= ProH; QH:= QuaH; GetBooleanItem(id, 57, ROh); IF GetEditInteger(id,35,DisV) AND GetEditInteger(id,62,LarV) AND GetEditInteger(id,64,ProV) AND GetEditInteger(id,66,QuaV) THEN DV:= DisV; LV:= LarV; PV:= ProV; QV:= QuaV; GetBooleanItem(id, 67, ROv); GetBooleanItem(id, 7, TM); IF TM THEN BEGIN IF GetEditInteger(id,41,LarM) AND GetEditInteger(id,43,ProM) THEN LM:= LarM; PM:= ProM END; END; 11: BEGIN DisplaySwapPane(id, 20, 1); DisplaySwapPane(id, 30, 1); END; 12: BEGIN DisplaySwapPane(id, 20, 2); DisplaySwapPane(id, 30, 2); END; END; END; BEGIN Dialog_Setup; IF RunLayoutDialog (id, Dialog_Handler) = 1 THEN BEGIN GetPt(pX, pY); BeginGroup; IF EC THEN BEGIN ALT:=DH*(QH+1)+QH*LH; LAR:=DV*(QV+1)+QV*LV; EH:=DH; EV:=DV; END ELSE BEGIN LAR:=DH; ALT:=DV; EH:=(DV-QH*LH)/(QH+1); EV:=(DH-QV*LV)/(QV+1); END; IF ROh THEN BEGIN Un0:=pX-ALT/2+EH; Un1:=pX+ALT/2-EH; BeginXtrd(-LAR/2, LAR/2); REPEAT Rect(Un0,pY-PH/2,Un0+LH,pY+PH/2); Un0:=Un0+LH+EH; UNTIL(Un0>Un1); EndXtrd; h1:= LNewObj; Set3DRot(h1, 0, 90, 0, pX, pY, 0); Move3D(0, 0, ALT/2); END ELSE BEGIN Un0:=pX-ALT/2+EH; Un1:=pX+ALT/2-EH; BeginXtrd(-LAR/2, LAR/2); REPEAT Oval(Un0,pY-PH/2,Un0+LH,pY+PH/2); Un0:=Un0+LH+EH; UNTIL(Un0>Un1); EndXtrd; h2:= LNewObj; Set3DRot(h2, 0, 90, 0, pX, pY, 0); Move3D(0, 0, ALT/2); END; IF ROv THEN BEGIN Un0:=pX-LAR/2+EV; Un1:=pX+LAR/2-EV; BeginXtrd(0, ALT); REPEAT Rect(Un0,pY-PH/2,Un0+LV,pY+PH/2); Un0:=Un0+LV+EV; UNTIL(Un0>Un1); EndXtrd; END ELSE BEGIN Un0:=pX-LAR/2+EV; Un1:=pX+LAR/2-EV; BeginXtrd(0, ALT); REPEAT Oval(Un0,pY-PH/2,Un0+LV,pY+PH/2); Un0:=Un0+LV+EV; UNTIL(Un0>Un1); EndXtrd; END; IF TM THEN BEGIN BeginXtrd(-LAR/2, LAR/2); Rect(pX-ALT/2-LM,pY-PM/2,pX-ALT/2,pY+PM/2); Rect(pX+ALT/2,pY-PM/2,pX+ALT/2+LM,pY+PM/2); EndXtrd; h3:= LNewObj; Set3DRot(h3, 0, 90, 0, pX, pY, 0); Move3D(0, 0, ALT/2); BeginXtrd(-LM, ALT+LM); Rect(pX-LAR/2-LM,pY-PM/2,pX-LAR/2,pY+PM/2); Rect(pX+LAR/2,pY-PM/2,pX+LAR/2+LM,pY+PM/2); EndXtrd; END; EndGroup; END; END; RUN (CustomGrid); Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.