Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Refreshing cursoradapter after changing 'order by' claus
Message
From
17/09/2003 05:47:37
Dorin Vasilescu
ALL Trans Romania
Arad, Romania
 
General information
Forum:
Visual FoxPro
Category:
Other
Miscellaneous
Thread ID:
00829310
Message ID:
00829767
Views:
22
You're welcome.
What you have done is even better, no need to Cut/Paste the control source :-)

>Hi Dorin !
>Unfortunatly Tag property I use in other purposes.
>So I created a method in my grid base class with code like the below. I used it in a conjunction with your proposal - it seems to work. The method with "backup" parameter is called in init of the grid, with "restore" parameter is called after cursorfill that uses changed (order by..) selectcmd property . Thanks for your help. Have a nice day !
>
>*- code of grid init method
>...
>this.ManageColumnsSources("BACKUP")
>...
>
>*- code of the cursor refreshing method in my form
>WITH {grid}
> .RecordSource = ""
> *change SelectCmd and call CursorFill method code
> .ManageColumnsSources("RESTORE")
> .Refresh()
>ENDWITH
>
>*- code of ManageColumnsSources method
>LPARAMETERS tcAction
>LOCAL loColumn as column
>IF PCOUNT() = 0
> tcAction = ""
>ENDIF
>DO CASE
>CASE tcAction == "BACKUP"
> This.addproperty("cInitialRecordSource", this.RecordSource )
> FOR EACH loColumn IN this.Columns
> loColumn.addproperty("cInitialControlSource",loColumn.controlsource )
> ENDFOR
>CASE tcAction == "RESTORE"
> this.RecordSource = this.cInitialRecordSource
> FOR EACH loColumn IN this.Columns
> loColumn.controlsource = loColumn.cInitialControlSource
> ENDFOR
>OTHERWISE
> ASSERT .f.
>ENDCASE
>*-
>
>
>>Hi!
>>Maybe you can handle this at grid object level.
>>I don't use CursorAdapter (because I don't use VFP8, because I don't have it :-) but I have many grids that change content dinamically.
>>What I do is to save column ControlSource property to Tag property, in design time.
>>Then set RecordSource property to "", run the query, and then set back ControlSource for grid columns to cursor adapter fields.
>>Something like:
>>
>>WITH {grid}
>>    ThisForm.LockScreen = .T.
>>    .RecordSource = ""
>>    *change SelectCmd and call CursorFill method code
>>    .RecordSource = {cursor adapter alias}
>>    FOR i = 1 TO .ColumnCount
>>        .Columns(i).ControlSource = .Columns(i).Tag
>>    ENDFOR
>>    .Refresh()
>>    ThisForm.LockScreen = .F.
>>ENDWITH
>>
>>
>>Must work, I think.
>>
>>
>>>Hi !
>>>1.I want to change "order by ..." clause - included in cursoradapter SelectCmd property - based on a selection made by user. After making such change how should I refresh underlaying cursor ? CursorRefresh method seems not work in such case ( cursorFill works but it close the cursor and destroy grid layout).
>>>2. I wonder why it is not possible to make such things using parameters like it is in case of 'where ...' clause. Does anybody knows the reason.
>>>'Order by' clause look simpler than 'where ...' clause
>>>
>>>Thanks in advance.
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform