PDA

View Full Version : Super Control Calendar


ABC123

Keith Hubert
03-24-2008, 11:30 AM
Hi All in V9,

Please see attached app that was developed way back.

I would like some help bringing this upto date with the new Super Calenadar Control.

All help will be greatly appreciated and can be shared by others in this forum.

Keith Hubert
04-10-2008, 10:25 AM
Anyone with further thoughts about this?

Bill Griffin
04-10-2008, 12:13 PM
Keith,

There are probably not many (any) responses, since you are not very clear as to what you want this to do or what the application is supposed to do.

Bill

Keith Hubert
04-11-2008, 08:48 AM
Hi Bill,

Thanks for your reply.

What I would like to do is have the Calendar on a form that refreshes a browse to show all the records which match the selected date on the calendar.

The example I attached in my first post was using the MS Office ActiveX calendar.

I hope that explains better what I am trying to achieve.

NoeticCC
04-11-2008, 09:10 AM
I'd say the simplest thing is to download the trial and just give it a go - the calendar control is easy to use so I don't see why this shouldn't work (not that I have used it THAT much!).... :)

Keith Hubert
04-11-2008, 09:52 AM
Hi Andrea,

Thanks for your reply.

I do have a copy of A5V9 that is how I know about the Super Control.

Have you managed to get the Calendar to refresh a Browse?

Could you please email me directly.

Lance Gurd
04-11-2008, 12:01 PM
dont know if this helps Keith.

It is a dialog not a form but I think it gives what you want

DIM SHARED dat as D
dat = {2/1/02}
DIM SHARED varC_result as C
DIM dat_EmbeddedCalendar as P
DIM dat_EmbeddedCalendar.events as C = <<%str%
function onDateSelect as v (date as d, ptr as p)

' Generated code. Do not delete!
' ------------------------------------------------------------------------
if eval_valid("ptr.variableName") then
dim sv as p
sv = session_variables()
evaluate_template("sv."+ptr.variableName+" = date")
end if
' ------------------------------------------------------------------------
end function
function onDateRightClick as v (date as d, ptr as p)

' Generated code. Do not delete!
' ------------------------------------------------------------------------
if eval_valid("ptr.variableName") then
dim sv as p
sv = session_variables()
evaluate_template("sv."+ptr.variableName+" = date")
end if
' ------------------------------------------------------------------------
end function
function onMonthNavigate as v (year as n, month as n, ptr as p)

end function
function onYearNavigate as v (year as n, month as n, ptr as p)

end function
%str%
DIM dat_EmbeddedCalendar.useDropdowns as L = .T.
DIM dat_EmbeddedCalendar.date as D = dat
DIM dat_EmbeddedCalendar.variableName as C = "dat"
DIM l_FuncCode AS C = <<%CodeFunctions%
FUNCTION DoSort AS V (byref CurrentSortField AS C , byref CurrentSortDirection AS C, NewSortField AS C, Filter AS C, pLV AS P, rs AS P )
DIM cResult AS C
DIM SortDirection AS C
DIM SortField AS C
IF NewSortField = CurrentSortField
' clicked on same field, reverse sort
IF CurrentSortDirection = "D"
CurrentSortDirection = "A"
ELSE
CurrentSortDirection = "D"
END IF
ELSE
CurrentSortField = NewSortField
CurrentSortDirection = "A"
END IF
SortDirection = CurrentSortDirection
SortField = CurrentSortField
IF SortDirection = "D"
SortField = "invert(" + SortField + ")"
END IF

' actual sorting code goes here
pLV.RowView.Close()
pLV.RowView = rs.OpenView(1, SortField, Filter)

DoSort = cResult
END FUNCTION


FUNCTION GetArguments AS C ( pTableDef AS P, lv AS P )
DIM cResult AS C
DIM pv AS P
FOR EACH x IN pTableDef.pArgs.arrArgs
IF (":"+x.Name) $ pTableDef.Filter
pv = A5_ArgGetValue(x, lv)
x.value = pv.value
END IF
NEXT
cResult = a5_ArgumentsReplace(pTableDef.filter, pTableDef.pArgs.arrArgs)
GetArguments = cResult
END FUNCTION
%CodeFunctions%
DIM l_Funcs AS P = compile_template(l_FuncCode)
DIM SHARED l AS C
DIM l_CurrentSortField AS C = ""
DIM l_CurrentSortDirection AS C = "A"
DIM l_Filter AS C
DIM l_pTableDef AS P
DIM l_pTableDef.ReturnValueExpression AS C = ""
DIM l_pTableDef.FieldList AS C = <<%txt%
Date
Idcode
Action1
Date1
Site_name
Site_contact
%txt%
DIM l_pTableDef.TitleRow AS C = "{AUTOSIZE}Date|{AUTOSIZE}Idcode|{AUTOSIZE}Action1|{AUTOSIZE}Date1|{AUTOSIZE}Site_name|{AUTOSIZE}Site_contact"
DIM l_pTableDef.Arguments AS C = <<%txt%
<lastbutton="ok">
<arrArgs<[1]<Name="darg">
<DataType="Date">
<Source="Variable">
<SourceDisplay="Get value from variable">
<VariableScope="local Variable">
<VariableName="dat">
<VariableWithScope="dat (local Variable)">
<DefaultValue="">
<Prompt=.T.>
<PromptText="">
<PromptControlType="Text Box">
<PromptChoices="">
<PromptDlgTitle="Missing Argument">
<PromptTextAbove="">
<PreviewValue="">
>
>
%txt%
DIM l_pTableDef.pArgs AS P
property_from_string(l_pTableDef.pArgs, l_pTableDef.Arguments)
DIM l_pTableDef.TableName AS C = "schedule"
DIM l_pTableDef.Filter AS C = "Date=var->dat .AND. (recno() > 0)" ' recno() > 0 is required in order to avoid showing deleted variables
DIM l_pTableDef.Order AS C = ""

l_pLV.titlerow = l_pTableDef.titlerow
l_pLV.titleevents = "l_Sort_Date|l_Sort_Idcode|l_Sort_Action1|l_Sort_Date1|l_Sort_Site_name|l_Sort_Site_contact"
l_pLV.style = "report,singlesel,showselalways,fullrowselect"
l_pLV.dragbehaviour = ""
l_pLV.dropbehaviour = ""
DIM l_t AS P
DIM l_rr AS Alpha5::RowRelation
DIM l_rs AS P
IF .NOT. file.exists(table.filename_get(l_pTableDef.TableName))
END
END IF
l_t = table.open(l_pTableDef.TableName, FILE_RO_SHARED)
l_t.persist()
l_rs = l_rr.TableToRowSource(l_t)
l_Filter = l_Funcs.GetArguments(l_pTableDef, local_variables())
l_pLV.rowview = l_rs.OpenView(1,l_pTableDef.Order,l_Filter)
l_pLV.RowSeparator = crlf()
l_pLV.ColumnSeparator = "|"
l_pLV.Key = l_pTableDef.ReturnValueExpression
l_pLV.Columns = l_pTableDef.FieldList
l_pLV.events = <<%code%
function OnRightClick as c(lv as p,listView as p,args as p)
WITH lv
listView.Selection = listView.GetRowValue(args.GetClickRow())
OnSelectionChanged(lv, listView )

'to call a function outside the events code, you must use the ui_dlg_eval() function
'menu = ui_dlg_eval(dlg_title,"a5wcb_PublishRclick(selectedFilename)")

' ui_msg_box("OnRightClick",listview.selection)
END WITH
end function

function OnDoubleClick as c(lv as p,listView as p,args as p)
WITH lv
l = listView.GetRowValue(args.GetClickRow())
' ui_msg_box("OnDoubleClick",l)
END WITH
end function

FUNCTION OnSelectionChanged AS V (lv AS P, listView as p )
WITH lv
l = listView.Selection
' ui_msg_box("OnSelectionChanged",l)
END WITH
END FUNCTION

FUNCTION OnKeyDown as v(vars as p,listView as p,args as p)
DIM key AS C
Dim KeyName as c
key = args.GetKeyName()
KeyName = key
IF key = "{Delete}" .OR. key = "{Num Del}"
KeyName = "{Delete}"
ELSE IF args.keycode = 13 ' enter
KeyName = "{Enter}"
ELSE IF args.keycode = 8 ' backspace
KeyName = "{Backspace}"
END IF

'ui_msg_box("OnKeyDown", KeyName)
END FUNCTION
%code%
ok_button_label = "&OK"
cancel_button_label = "&Cancel"
varC_result = ui_dlg_box("Alpha Five",<<%dlg%
{region}
| {DatePicker=40,15dat_EmbeddedCalendar}{watch=dat!update_dat_EmbeddedCalendar};
| {listviewvirtual=140,15l^=l_pLV};
{watch=dat!l_refresh}
{watch=l!foo};
{endregion};
{line=1,0};
{region}
<*15=ok_button_label!OK> <15=cancel_button_label!CANCEL>
{endregion};
%dlg%,<<%code%
if a_dlg_button = "update_dat_EmbeddedCalendar" then
a_dlg_button = ""
if dat <> dat_EmbeddedCalendar.date then
dat_EmbeddedCalendar.date = dat
end if
end if
IF left(a_dlg_button, len("l_Sort_")) = "l_Sort_"
DIM NewSortField AS C
NewSortField = substr(a_dlg_button, len("l_Sort_")+1)
l_Funcs.DoSort(l_CurrentSortField, l_CurrentSortDirection, NewSortField, l_Filter, l_pLV, l_rs)
a_dlg_button = ""
END IF

IF a_Dlg_button = "l_refresh"
a_dlg_button = ""
l_Filter = l_Funcs.GetArguments(l_pTableDef, local_variables())
l_pLV.RowView.Close()
l_pLV.RowView = l_rs.OpenView(1, l_CurrentSortField, l_Filter)
END IF
IF a_dlg_button = "foo"
a_dlg_button = ""
' do nothing
END IF
%code%)
l_t.close()

Bill Griffin
04-11-2008, 02:11 PM
Or add:

topparent:Browse1.refresh()

to the Supercontrol OnDateSelect Event



(on the events tab of the SuperControl)

Bill

Keith Hubert
04-25-2008, 12:09 PM
Hi Bill,

Thanks for your suggestion.

Regretfully this does not seem to work. Is there something else I could try.

Just to recap, what I would like to happen is, when a date is clicked on the Calendar, the Browse is refreshed and filtered on a date with the records that match the date on the calendar.

Bill Griffin
04-25-2008, 12:19 PM
Works fine for me. See attached

Keith Hubert
04-28-2008, 09:37 AM
Bill,

That works just just perfict, as we say!

Thanks for picking up on this and providing a solution we can all share.

Keith Hubert
05-28-2008, 08:02 AM
Hi Bill,

I have come back to this again as it seems not to work quite as I thought in the first place. Each time a date is selected, the field in the parent is being changed.

In simple terms, using Alpha Sports as the example.

How would you show in a browse, all the Invoices that were issued on a date that is selected from the Super Calendar?

In other words the Invoice_Header is not linked to a parent.

NoeticCC
05-28-2008, 08:56 AM
Hi Bill,

I have come back to this again as it seems not to work quite as I thought in the first place. Each time a date is selected, the field in the parent is being changed.

In simple terms, using Alpha Sports as the example.

How would you show in a browse, all the Invoices that were issued on a date that is selected from the Super Calendar?

In other words the Invoice_Header is not linked to a parent.
You may be able to bind the calendar control to a variable and onchange filter the browse?

Bill Griffin
05-28-2008, 09:03 AM
Sounds like a plan to me....

Lance Gurd
05-28-2008, 09:07 AM
Keith,

My xdialog as above binds to a variable and therefore would not change the underlying table, did you ever try it?

Keith Hubert
05-28-2008, 09:52 AM
Hi Lance,

TBH, no I didn't as I just wanted to use the Super Control.

Some time ago I used a fantastic Calendar see attached. Some people might recognize it.

It was rather involved with each button calling a script and yes the date on the top of the calendar is a variable that gets picked up by the scripts.

The ActiveX calendar was a step forward but with the limitation if the user did not have Office loaded.

The SuperControl now overcomes that, so now I would like to use the Super Control the same way as the Old Calendar.

Lance Gurd
05-28-2008, 10:21 AM
Keith,

I do remember the calendar on your screen shot (am older than my emoticon looks :D).

The dialog I sent you uses the super control, and acts like the original calendar whereby each date acts like a button (although a double click is needed in this instance).

Here is a zip of your original, with the dialog on the code page all ready to run, let me kno what you think

Keith Hubert
06-02-2008, 07:22 AM
Hi Lance,

At long last I have been able to look at your fantastic script. It is a great piece of work showing how a super control can be used in Xdialog. I shall certainly study this and keep it in mind for use for some future requirement.

This does look just like what I'm looking for, but unfortunately it is not a form.

All I'm after is a simple form with the New super control calendar that will show all the Invoices from the Invoice Header table only in AlphaSports in a browse, filtered to the date selected.

I only want to link to a single table, not a set.

Lance Gurd
06-02-2008, 09:29 AM
Hi Keith,

Glad you liked it.

I think the problem with doing on a form is that the calendar supercontrol on a form needs to be bound to a date field on the underlying table for that form (as in invoices in Alphasports, this would be the date field) and cannot be bound to a variable. I may stand corrected here but that is what I have found.

In a dialog box, the supercontrol can be bound to a variable and thus you can filter data based on that variable.

Here is a variation on my previous script based on the invoice table in Alphasports, double click on a date and the corresponding invoices for that date appear in the browse (listview) below the calendar. Double click on the invoice in the browse (listview) and the original invoice will open focused on that invoice number. Could be even better in html but I am still learning bits of that.


'Date Created: 02-Jun-2008 01:16:30 PM
'Last Updated: 02-Jun-2008 01:16:30 PM
'Created By : Lance
'Updated By : Lance
DIM SHARED dat as D
dat = {10/1/07}
DIM SHARED varC_result as C
DIM dat_EmbeddedCalendar as P
DIM dat_EmbeddedCalendar.events as C = <<%str%
function onDateSelect as v (date as d, ptr as p)

' Generated code. Do not delete!
' ------------------------------------------------------------------------
if eval_valid("ptr.variableName") then
dim sv as p
sv = session_variables()
evaluate_template("sv."+ptr.variableName+" = date")
end if
' ------------------------------------------------------------------------
end function
function onDateRightClick as v (date as d, ptr as p)

' Generated code. Do not delete!
' ------------------------------------------------------------------------
if eval_valid("ptr.variableName") then
dim sv as p
sv = session_variables()
evaluate_template("sv."+ptr.variableName+" = date")
end if
' ------------------------------------------------------------------------
end function
function onMonthNavigate as v (year as n, month as n, ptr as p)

end function
function onYearNavigate as v (year as n, month as n, ptr as p)

end function
%str%
DIM dat_EmbeddedCalendar.useDropdowns as L = .T.
DIM dat_EmbeddedCalendar.date as D = dat
DIM dat_EmbeddedCalendar.variableName as C = "dat"
DIM l_FuncCode AS C = <<%CodeFunctions%
FUNCTION DoSort AS V (byref CurrentSortField AS C , byref CurrentSortDirection AS C, NewSortField AS C, Filter AS C, pLV AS P, rs AS P )
DIM cResult AS C
DIM SortDirection AS C
DIM SortField AS C
IF NewSortField = CurrentSortField
' clicked on same field, reverse sort
IF CurrentSortDirection = "D"
CurrentSortDirection = "A"
ELSE
CurrentSortDirection = "D"
END IF
ELSE
CurrentSortField = NewSortField
CurrentSortDirection = "A"
END IF
SortDirection = CurrentSortDirection
SortField = CurrentSortField
IF SortDirection = "D"
SortField = "invert(" + SortField + ")"
END IF

' actual sorting code goes here
pLV.RowView.Close()
pLV.RowView = rs.OpenView(1, SortField, Filter)

DoSort = cResult
END FUNCTION


FUNCTION GetArguments AS C ( pTableDef AS P, lv AS P )
DIM cResult AS C
DIM pv AS P
FOR EACH x IN pTableDef.pArgs.arrArgs
IF (":"+x.Name) $ pTableDef.Filter
pv = A5_ArgGetValue(x, lv)
x.value = pv.value
END IF
NEXT
cResult = a5_ArgumentsReplace(pTableDef.filter, pTableDef.pArgs.arrArgs)
GetArguments = cResult
END FUNCTION
%CodeFunctions%
DIM l_Funcs AS P = compile_template(l_FuncCode)
DIM SHARED l AS C
DIM l_CurrentSortField AS C = ""
DIM l_CurrentSortDirection AS C = "A"
DIM l_Filter AS C
DIM l_pTableDef AS P
DIM l_pTableDef.ReturnValueExpression AS C = ""
DIM l_pTableDef.FieldList AS C = <<%txt%
Invoice_number
Customer_id
Date
Sales_rep
%txt%
DIM l_pTableDef.TitleRow AS C = "{AUTOSIZEHEAD}Invoice_number|{WIDTH=2}Customer_id|{WIDTH=1}Date|{WIDTH=1}Sales_rep"

DIM l_pTableDef.Arguments AS C = <<%txt%
<lastbutton="ok">
<arrArgs<[1]<Name="darg">
<DataType="Date">
<Source="Variable">
<SourceDisplay="Get value from variable">
<VariableScope="local Variable">
<VariableName="dat">
<VariableWithScope="dat (local Variable)">
<DefaultValue="">
<Prompt=.T.>
<PromptText="">
<PromptControlType="Text Box">
<PromptChoices="">
<PromptDlgTitle="Missing Argument">
<PromptTextAbove="">
<PreviewValue="">
>
>
%txt%
DIM l_pTableDef.pArgs AS P
property_from_string(l_pTableDef.pArgs, l_pTableDef.Arguments)
DIM l_pTableDef.TableName AS C = "invoice_header"
DIM l_pTableDef.Filter AS C = "Date=var->dat .AND. (recno() > 0)" ' recno() > 0 is required in order to avoid showing deleted variables
DIM l_pTableDef.Order AS C = ""

l_pLV.titlerow = l_pTableDef.titlerow
l_pLV.titleevents = "l_Sort_Date|l_Sort_Idcode|l_Sort_Action1|l_Sort_Date1|l_Sort_Site_name|l_Sort_Site_contact"
l_pLV.style = "report,singlesel,showselalways,fullrowselect"
l_pLV.dragbehaviour = ""
l_pLV.dropbehaviour = ""
DIM l_t AS P
DIM l_rr AS Alpha5::RowRelation
DIM l_rs AS P
IF .NOT. file.exists(table.filename_get(l_pTableDef.TableName))
END
END IF
l_t = table.open(l_pTableDef.TableName, FILE_RO_SHARED)
l_t.persist()
l_rs = l_rr.TableToRowSource(l_t)
l_Filter = l_Funcs.GetArguments(l_pTableDef, local_variables())
l_pLV.rowview = l_rs.OpenView(1,l_pTableDef.Order,l_Filter)
l_pLV.RowSeparator = crlf()
l_pLV.ColumnSeparator = "|"
l_pLV.Key = l_pTableDef.ReturnValueExpression
l_pLV.Columns = l_pTableDef.FieldList
l_pLV.events = <<%code%
function OnRightClick as c(lv as p,listView as p,args as p)
WITH lv
listView.Selection = listView.GetRowValue(args.GetClickRow())
OnSelectionChanged(lv, listView )

'to call a function outside the events code, you must use the ui_dlg_eval() function
'menu = ui_dlg_eval(dlg_title,"a5wcb_PublishRclick(selectedFilename)")

' ui_msg_box("OnRightClick",listview.selection)
END WITH
end function

function OnDoubleClick as c(lv as p,listView as p,args as p)
WITH lv
l = listView.GetRowValue(args.GetClickRow())

query.filter = "invoice_number = Var->l"
query.order = "recno()"
'replace variables in the filter with their actual values
query.filter = convert_expression(query.filter,"V")


'Open the layout_type showing just the records that satisfy the filter
DIM Shared varP_invoice as P
DIM layout_name as c
layout_name = "invoice"


dim tempP as p
'Get pointer to existing window. In case layout_name is qualified with a dictionary name, extract up to first @. In case formname has spaces, normalize it
tempP=obj(":"+object_name_normalize(word(layout_name,1,"@")))
'Test if pointer is valid
if is_object(tempP) then
'Test if pointer refers to a form or browse
if tempP.class() = "form" .or. tempP.class() = "browse" then
'Apply the query to the form or browse as the Base query. (this means that
'the user cannot turn the query off, only add to the query)
tempP.BaseQueryRun(query.filter,query.order)
'then activate the already open window
tempP.activate()
else
'Window is not already open, so open it
varP_invoice = :Form.viewqueried(layout_name,query.filter, query.order )

end if
else
varP_invoice = :Form.viewqueried(layout_name,query.filter, query.order )

end if
END WITH
end function

FUNCTION OnSelectionChanged AS V (lv AS P, listView as p )
WITH lv
l = listView.Selection
' ui_msg_box("OnSelectionChanged",l)
END WITH
END FUNCTION

FUNCTION OnKeyDown as v(vars as p,listView as p,args as p)
DIM key AS C
Dim KeyName as c
key = args.GetKeyName()
KeyName = key
IF key = "{Delete}" .OR. key = "{Num Del}"
KeyName = "{Delete}"
ELSE IF args.keycode = 13 ' enter
KeyName = "{Enter}"
ELSE IF args.keycode = 8 ' backspace
KeyName = "{Backspace}"
END IF

'ui_msg_box("OnKeyDown", KeyName)
END FUNCTION
%code%
ok_button_label = "&OK"
cancel_button_label = "&Cancel"
varC_result = ui_dlg_box("Alpha Five",<<%dlg%
{region}
| {DatePicker=40,15dat_EmbeddedCalendar}{watch=dat!update_dat_EmbeddedCalendar};
| {listviewvirtual=140,15l^=l_pLV};
{watch=dat!l_refresh}
{watch=l!foo};
{endregion};
{line=1,0};
{region}
<*15=ok_button_label!OK> <15=cancel_button_label!CANCEL>
{endregion};
%dlg%,<<%code%
if a_dlg_button = "update_dat_EmbeddedCalendar" then
a_dlg_button = ""
if dat <> dat_EmbeddedCalendar.date then
dat_EmbeddedCalendar.date = dat
end if
end if
IF left(a_dlg_button, len("l_Sort_")) = "l_Sort_"
DIM NewSortField AS C
NewSortField = substr(a_dlg_button, len("l_Sort_")+1)
l_Funcs.DoSort(l_CurrentSortField, l_CurrentSortDirection, NewSortField, l_Filter, l_pLV, l_rs)
a_dlg_button = ""
END IF

IF a_Dlg_button = "l_refresh"
a_dlg_button = ""
l_Filter = l_Funcs.GetArguments(l_pTableDef, local_variables())
l_pLV.RowView.Close()
l_pLV.RowView = l_rs.OpenView(1, l_CurrentSortField, l_Filter)
END IF
IF a_dlg_button = "foo"
a_dlg_button = ""
' do nothing
END IF

%code%)
l_t.close()

Have fun

Davidk
06-02-2008, 11:46 AM
I'm quite new to A5, but not to these types of challenges with other database.

Would this help?

Add a new field to your name_date table - called seldob

Add your new field seldob to your form - make it visible for now, but you can hide it later

change your diary set to link to seldob instead of dob

change your super calendar control - bind it to seldob

On your form INIT - set seldob.value = dob.value
On your fomr FETCH - set seldob.value = dob.value

Now your dob value is protected in the table. The seldob value changes when the form gets loaded - it's changed to the value of dob. As your move through the records in the form the seldob value gets updated with the dob value.

Because the calendard is now bound to seldob your dob field is protected.

Overall you're setting up a dummy field to hold the value of DOB. The calendar changes seldob and not dob. I think this works the way you want it to... and not too many changes or too wierd to get it done. I hope I've not missed anything.

David

Keith Hubert
06-02-2008, 02:56 PM
Hi David,

Thanks for your suggestion, this has given me another thought.

Since the calendar must be bound to a field, and I did not want to change any records. How about a dummy table with a single date field and then make that the parent in a set to the table I want displayed.

The only code needed was topparent:Browse1.refresh() in the onDateSelect function of calendar events.

I have just tested it and it works.

So now I have two methods of showing a browse linked to a Super Calendar.

Tim Kiebert
06-02-2008, 07:44 PM
Hi David,

Thanks for your suggestion, this has given me another thought.

Since the calendar must be bound to a field, and I did not want to change any records. How about a dummy table with a single date field and then make that the parent in a set to the table I want displayed.

The only code needed was topparent:Browse1.refresh() in the onDateSelect function of calendar events.

I have just tested it and it works.

So now I have two methods of showing a browse linked to a Super Calendar.
No, the calendar does not need to be bound to a field. Bind it to a session variable. (as has already been mentioned) Put code in the event tab of the supercontrol to query the form.

In the attached alhpasports form atest is based on only the invoice_header table and atest2 form is based on the invoice set. For some reason the atest form based on the table only needed a topparent.show_all(). (may be a bug???)

johnkoh
02-23-2009, 12:21 PM
Keith,

I created several buttons on top of your samples. Example, I used the Action Script for Today button. I want to display the Browse and calendar by today. My (Today) Script does not change the date and the browse.
What did I miss on my action script?

JackForman
10-21-2009, 02:16 PM
I saw the calendar by Lance. It looks good.
How do you enter additional records?

Keith Hubert
10-21-2009, 02:57 PM
Hi Jack,

Create a button that sets the dob field with date() and then you have to make the browse go to the previous record.

Hope this helps.

Ooops, just had another look at Lance's dialog, you cant enter a record into that, as it stands. What i suggested was for my little creation.

JackForman
10-21-2009, 03:25 PM
I did make your sample work with the set, just like you did.
It works fine.
Thanks
I am exploring the idea to show in the browser, not just the specific records matching, but a range of records, lets say the week of the supercontrol or the month.
Do you think that it is possible?