PUBLIC oForm oForm = CREATEOBJECT("FooForm") oForm.Visible = .T. BINDEVENT(_SCREEN, "Resize", oForm, "ScrResize") DEFINE Class FooForm as Form AutoCenter = .T. nKoefT = 0 nKoefL = 0 nKoefW = 0 nKoefH = 0 PROCEDURE Init This.nKoefT = This.Top/_Screen.Height This.nKoefH = This.Height/_Screen.Height This.nKoefL = This.Left/_Screen.Width This.nKoefW = This.Width/_Screen.Width ENDPROC PROCEDURE ScrResize This.Top = This.nKoefT*_Screen.Height This.Height = This.nKoefH*_Screen.Height This.Left = This.nKoefL*_Screen.Width This.Width = This.nKoefW*_Screen.Width * This.Move(This.nKoefL*_Screen.Width,This.nKoefT*_Screen.Height,; This.nKoefW*_Screen.Width,This.nKoefH*_Screen.Height) ENDPROC ENDDEFINEAle tím rozhodně nejsou možnosti tohoto příkazu vyčerpány. Jak často jsme třeba dříve v gridu v textboxech všech sloupců volali metodu celého gridu. Ve verzi 8 už to samozřejmně de zařídit pomocí podtříd vytvořených z třídy Column. Ale tento postup stejně nelze použít, pokud nastavíte ColumnCount=-1.
LOCAL I CREATE CURSOR Tst (polozka1 I, polozka2 I, polozka I, polozka4 I) FOR I=1 TO 100 INSERT INTO Tst VALUES (I, I**2, I**3, I**4) NEXT GO TOP PUBLIC oForm oForm = CREATEOBJECT("FooForm") oForm.Visible = .T. DEFINE Class FooForm as Form AutoCenter = .T. Left = 25 Top = 25 Height = _Screen.Height-50 Width = _Screen.Width-50 ADD OBJECT grid1 AS GRID WITH ; Left = 10, Top = 10,; Height = Thisform.Height-20, Width = Thisform.Width-20,; Name = "Grid1" PROCEDURE Grid1.Init LOCAL loColumn FOR EACH loColumn IN This.Columns BINDEVENT(loColumn.Text1, "KeyPress", This, "ColumnKeyPress") BINDEVENT(loColumn.Text1, "RightClick", This, "ColumnRightClick") ENDFOR ENDPROC PROCEDURE Grid1.ColumnRightClick LOCAL laEvents[1] AEVENTS(laEvents,0) WAIT WINDOW ; laEvents[1].Parent.Header1.Caption+": "+; laEvents[1].Name+".RightClick() --> "+; This.Name+".RightClick()" NOWAIT ENDPROC PROCEDURE Grid1.ColumnKeyPress LPARAMETERS nKeyCode, nShiftAltCtrl LOCAL laEvents[1] AEVENTS(laEvents,0) WAIT WINDOW ; laEvents[1].Parent.Header1.Caption+": "+; laEvents[1].Name+".KeyPress() --> "+; This.Name+".KeyPress() "+; TRAN(nKeyCode)+"/"+TRAN(nShiftAltCtrl) NOWAIT ENDPROC ENDDEFINEProgram by šel samozřejmně podstatně vylepšit (předpokládáme pouze textboxy se jménem Text1, mohli bychom připojit i kliknutí na hlavičku sloupce, ), ale myslím si, že jsem prostor vymezený pro můj článek vyčerpal.
A to je vše. Mějte se krásně
Milan Kosina, kosina@vol.cz
* | Pozn. přepis.: | Přesněji po aplikování SP 1. |