Re: Quick Open Method (QOM)

2019-07-07 Thread Patrick Emanuel via 4D_Tech
Hi Tim

Very impressive and useful!
Great job.

By curiosity, can you explain us the trick you use to get the result into
the search dialog?

Patrick



-
Patrick EMANUEL

Administrator
www.association-qualisoft.eu 
(Soft1002, Simply Asso & QS_Toolbox)
--
Sent from: http://4d.1045681.n5.nabble.com/4D-Tech-f1376241.html
**
4D Internet Users Group (4D iNUG)
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: Subform 'Variable or Expression' (Bound variable) not working with it is a Form.variable

2019-07-07 Thread Chris Belanger via 4D_Tech
okay, that’s the scoop. Thank you for confirming.

So I was thinking of storing the path to the attribute I need to manage INTO 
the widget.
I see I can do that simply enough, inside the SCRIPT for the CONTAINER.
I just put this into the script for the container (and enabled the ‘on load’ 
event for it).
: (Form event=On Load)  
EXECUTE METHOD IN SUBFORM(OBJECT Get 
Name;"SET_FORM_OBJ_ATTR";*;"myEntity.formDate”)

SET_FORM_OBJ_ATTR( ) merely assigns it to  Form.sourceAttrPath  in the widget.

This works okay.
…

I am trying to figure out how to trigger a CUSTOM EVENT in the subform. I will 
name it on_WidgetUpdate  (constant) -93
If I can trigger this custom event as needed, then the widgets can update 
themselves by looking at the  Form.sourceAttrPath to figure out where to update 
from.

I am not clear on how I would trigger the event, though. Hopefully it can be 
done in a ‘form-level’ way so that all the subforms (i.e. widgets) would 
receive it automatically. But I could send it to each one if need be.

If you can tell me what I do, I would appreciate that (to trigger the custom 
event).

I’m thinking I may have to use CALL SUBFORM CONTAINER ( on_WidgetUpdate ) and 
then that container object will have to execute within the subform (EXECUTE 
METHOD IN SUBFORM)

— Chris




> On Jul 7, 2019, at 9:18 PM, Keisuke Miyako via 4D_Tech <4d_tech@lists.4d.com> 
> wrote:
> 
> that is correct...
> 
> an object property is not a variable, so it doesn't qualify as a bound 
> variable.
> 
> and a pointer can only point to a table, field, variable, array or array 
> element,
> so again, an object property is out of luck.
> 
> the widget system works best when the expression or variable is blank.
> 
>> 2019/07/08 9:59、Chris Belanger via 4D_Tech <4d_tech@lists.4d.com>のメール:
>> 
>> Actually, I see that 4D’s widgets do not work either (dateEntry) when the 
>> bound variable isForm.thisDate.
>> 
>> I know that 4D cannot make Pointers to Form. elements like that.
>> But it is pretty bad that there is no way (apparently) for a subform to 
>> access its bound variable in this instance.
>> 
>> anyone confirm that?
> 
> 
> 
> 
> **
> 4D Internet Users Group (4D iNUG)
> Archive:  http://lists.4d.com/archives.html
> Options: https://lists.4d.com/mailman/options/4d_tech
> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> **

**
4D Internet Users Group (4D iNUG)
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: Importing from camera

2019-07-07 Thread Keisuke Miyako via 4D_Tech
There are SD cards with integrated WiFi that can send media to a designated PC 
folder.

---

plugin to monitor a folder:

https://github.com/miyako/4d-plugin-folder-watch

> 2019/07/08 12:25、JOHN BAUGHMAN via 4D_Tech <4d_tech@lists.4d.com>のメール:
> What options are there, native or otherwise, for importing pictures directly 
> from a camera?




**
4D Internet Users Group (4D iNUG)
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: Subform 'Variable or Expression' (Bound variable) not working with it is a Form.variable

2019-07-07 Thread Jeremy French via 4D_Tech
Hi Chris,

Instead of using pointers, try using the “Form” command.

In the subform itself, place a variable object and do this:
1) Set object’s type to “date”
2) Set object’s “variable or expression” to “Form.simpleData"

In the parent form’s, do this:
3) Place an instance of the subform in the parent form.
4) Set subform instance’s “variable or expression” to “Form.info”
5) Set subform instance’s type to “Object”.
6) Also place a variable object above the subform instance.
7) Set the variable object’s type to date.
8) Also set the variable object’s “variable or expression” to 
“Form.info.simpleDate"
9) In the parent form’s “On Load” event make this assignment: 
"Form.info.simpleDate := Current date"

Now execute the parent form.

The date should appear in **both** the parent form and its subform instance.
Try changing the date:
10) in the **parent form**. Note that date also changes in the subform.
11) in the **subform**. Note that the date also changes in the parent form.

Why 2-different expressions:
* In parent form: "Form.info.simpleDate”
* In subform: "Form.simpleDate"

You are using the “Form” command to define values assigned to the form.

In parent form: “Form.info.simpleDate” references the date in the parent form’s 
“Form.info” object. That’s why you need “ Form.info.simpleDate”.

Also in the parent form, you pass to the subform the parent form’s “Form.info” 
object. That’s why you assign the subform’s instance “variable or expression” 
the value “Form.info”.

In the subform, the attributes of the “Form.info ” object 
(ie, “simpleData”) are assigned to the subform’s “Form”. So the subform has 
“Form.simpleDate”.

Best regards,
Jeremy

> On Jul 7, 2019, at 8:33 PM, Chris Belanger via 4D_Tech <4d_tech@lists.4d.com> 
> wrote:
> 
> if the bound variable is   Form.simpleDate  this does not work.

**
4D Internet Users Group (4D iNUG)
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Importing from camera

2019-07-07 Thread JOHN BAUGHMAN via 4D_Tech
What options are there, native or otherwise, for importing pictures directly 
from a camera?

Thanks,

John




John Baughman
Kailua, Hawaii
(808) 262-0328
john...@hawaii.rr.com

**
4D Internet Users Group (4D iNUG)
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: Subform 'Variable or Expression' (Bound variable) not working with it is a Form.variable

2019-07-07 Thread Keisuke Miyako via 4D_Tech
that is correct...

an object property is not a variable, so it doesn't qualify as a bound variable.

and a pointer can only point to a table, field, variable, array or array 
element,
so again, an object property is out of luck.

the widget system works best when the expression or variable is blank.

> 2019/07/08 9:59、Chris Belanger via 4D_Tech <4d_tech@lists.4d.com>のメール:
>
> Actually, I see that 4D’s widgets do not work either (dateEntry) when the 
> bound variable isForm.thisDate.
>
> I know that 4D cannot make Pointers to Form. elements like that.
> But it is pretty bad that there is no way (apparently) for a subform to 
> access its bound variable in this instance.
>
> anyone confirm that?




**
4D Internet Users Group (4D iNUG)
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: Subform 'Variable or Expression' (Bound variable) not working with it is a Form.variable

2019-07-07 Thread Chris Belanger via 4D_Tech
Actually, I see that 4D’s widgets do not work either (dateEntry) when the bound 
variable isForm.thisDate.

I know that 4D cannot make Pointers to Form. elements like that.
But it is pretty bad that there is no way (apparently) for a subform to access 
its bound variable in this instance.

anyone confirm that?

— Chris



> On Jul 7, 2019, at 6:34 PM, Chris Belanger  wrote:
> 
> On parent form  WIDGET_TESTER   I  have a subform  of instance name  
> ‘formDate’.  The name of the subform is  “DateEntry”.
> I wish to have a BOUND VARIABLE of type DATE on this instance.
> 
> if the DATE is a process variable, it works swell.
>  if it is based on the parent form’s FORM.   (such as Form.thisDate)  
> this does not work.* — MY CONUNDRUM!
> 
> in particular:
> In the Subform’s form method, in the  ‘On Bound Variable Change’ handler, the 
> subform needs to get the bound variable’s pointer.
> This is done either with  OBJECT Get Pointer(Object subform container)
> or (as in 4D’s widget collection source code)   Self(Object subform 
> container) is used.
> 
> This is successful if the bound variable is a process variable. It does not 
> work if it is   Form.thisDate (which is a date; set to ‘current date’ for 
> example).
> 
> The Form.thisDate is defined in the parent’s ON LOAD handler, so it should 
> exist by the time the instance ‘formDate’ is configured. Sure seems to work 
> for process variables!
> 
> I am not yet an expert on subform creation, as I have mostly avoided them in 
> the past.
> However, I can see the wisdom of creating widgets to put in my own object 
> library.
> But they need to be able to work in the context of a parent’s Form. object to 
> be of use for me, as I use this extensively rather than process variables.
> 
> thanks for any suggestions,
> Chris Belanger
> 
> ——
> 
> Detailed explanation (if needed or interested)
> 
> 
> I’ve been working on making some widgets, inspired by 4D’s collection. My 
> question is about rewriting the DateEntry widget. After I do that, I intend 
> to do some other widgets.
> 
> When I looked at the 4D source code, I saw it still uses a lot of code, 
> methods, process vars, etc.
> So I made a ‘DateEntry’ widget (in my custom component) that employs Form. 
> objects / variables instead. It works very nicely, with a great 
> simplification of code and elimination of process methods and process vars.
> 
> When the widget is put (as a subform) on a Parent Form, the Bound Variable is 
> of type DATE.
> It works as expected whenever it is a PROCESS VARIABLE.
> 
> However, if the bound variable isForm.theDate  (a DATE ‘variable’), then 
> it fails.
> 
> 
> WHAT I AM DOING:
> In the widget’s form:
> In the FORM EVENT ‘On Bound Variable Change’ — I configure what I need for 
> the widget to process the bound variable. This involves creating some Form. 
> vars to manage the input.
> • so in this situation, it is very simple.
> 
> Case of
> :(Form event = On Bound Variable Change)  // use the value of the Bound 
> Variable (a Date) to configure the components DAY, MONTH, YEAR
> 
> $theVarPtr:=OBJECT Get Pointer (Object subform container)  // this is the 
> pointer to the bound variable, for instance->processVar
> Form.theDate := $theVarPtr->   // copy the contents of the subform contain to 
> our widget’s ‘date’ so we can manipulate it without changing the bound 
> variable until we are ready (On Deactivate)
> // Break it into its component pieces: DAY, MONTH, YEAR, for the widget
> Form.theDay := Day of(Form.theDate)
> Form.theMonth:= Month of(Form.theDate)
> Form.theYear:=Year of(Form.theDate)
> 
> 
> ——
> 
> OBJECT Get Pointer ( Object subform container) works as expected when the 
> Parent Form’s bound variable is of type DATE and is a process Variable.
> 
> Self(Object subform container) also gets the Parent Form’s bound variable  
> (this is what the 4D widget uses; however,   Self  is always Nil in this 
> situation)
> 
> ** however **
> it does not work when the bound variable is a Date that is define in the 
> Parent’s   Form. context.  I.E.  if the bound variable is   Form.simpleDate  
> this does not work.
> If it is  Form.entity.simpleDate   this also does not work.
> 
> 

**
4D Internet Users Group (4D iNUG)
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Subform 'Variable or Expression' (Bound variable) not working with it is a Form.variable

2019-07-07 Thread Chris Belanger via 4D_Tech
On parent form  WIDGET_TESTER   I  have a subform  of instance name  
‘formDate’.  The name of the subform is  “DateEntry”.
I wish to have a BOUND VARIABLE of type DATE on this instance.

if the DATE is a process variable, it works swell.
 if it is based on the parent form’s FORM.   (such as Form.thisDate)  this 
does not work.* — MY CONUNDRUM!

in particular:
In the Subform’s form method, in the  ‘On Bound Variable Change’ handler, the 
subform needs to get the bound variable’s pointer.
This is done either with  OBJECT Get Pointer(Object subform container)
or (as in 4D’s widget collection source code)   Self(Object subform container) 
is used.

This is successful if the bound variable is a process variable. It does not 
work if it is   Form.thisDate (which is a date; set to ‘current date’ for 
example).

The Form.thisDate is defined in the parent’s ON LOAD handler, so it should 
exist by the time the instance ‘formDate’ is configured. Sure seems to work for 
process variables!

I am not yet an expert on subform creation, as I have mostly avoided them in 
the past.
However, I can see the wisdom of creating widgets to put in my own object 
library.
But they need to be able to work in the context of a parent’s Form. object to 
be of use for me, as I use this extensively rather than process variables.

thanks for any suggestions,
Chris Belanger

——

Detailed explanation (if needed or interested)


I’ve been working on making some widgets, inspired by 4D’s collection. My 
question is about rewriting the DateEntry widget. After I do that, I intend to 
do some other widgets.

When I looked at the 4D source code, I saw it still uses a lot of code, 
methods, process vars, etc.
So I made a ‘DateEntry’ widget (in my custom component) that employs Form. 
objects / variables instead. It works very nicely, with a great simplification 
of code and elimination of process methods and process vars.

When the widget is put (as a subform) on a Parent Form, the Bound Variable is 
of type DATE.
It works as expected whenever it is a PROCESS VARIABLE.

However, if the bound variable isForm.theDate  (a DATE ‘variable’), then it 
fails.


WHAT I AM DOING:
In the widget’s form:
In the FORM EVENT ‘On Bound Variable Change’ — I configure what I need for the 
widget to process the bound variable. This involves creating some Form. vars to 
manage the input.
• so in this situation, it is very simple.

Case of
:(Form event = On Bound Variable Change)  // use the value of the Bound 
Variable (a Date) to configure the components DAY, MONTH, YEAR

$theVarPtr:=OBJECT Get Pointer (Object subform container)  // this is the 
pointer to the bound variable, for instance->processVar
Form.theDate := $theVarPtr->   // copy the contents of the subform contain to 
our widget’s ‘date’ so we can manipulate it without changing the bound variable 
until we are ready (On Deactivate)
// Break it into its component pieces: DAY, MONTH, YEAR, for the widget
Form.theDay := Day of(Form.theDate)
Form.theMonth:= Month of(Form.theDate)
Form.theYear:=Year of(Form.theDate)


——

OBJECT Get Pointer ( Object subform container) works as expected when the 
Parent Form’s bound variable is of type DATE and is a process Variable.

 Self(Object subform container) also gets the Parent Form’s bound variable  
(this is what the 4D widget uses; however,   Self  is always Nil in this 
situation)

** however **
it does not work when the bound variable is a Date that is define in the 
Parent’s   Form. context.  I.E.  if the bound variable is   Form.simpleDate  
this does not work.
If it is  Form.entity.simpleDate   this also does not work.


**
4D Internet Users Group (4D iNUG)
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Subform 'Variable or Expression' (Bound variable) not working with it is a Form.variable

2019-07-07 Thread Chris Belanger via 4D_Tech
On parent form  WIDGET_TESTER   I  have a subform  of instance name  
‘formDate’.  The name of the subform is  “DateEntry”.
I wish to have a BOUND VARIABLE of type DATE on this instance.

if the DATE is a process variable, it works swell.
 if it is based on the parent form’s FORM.   (such as Form.thisDate)  this 
does not work.* — MY CONUNDRUM!

in particular:
In the Subform’s form method, in the  ‘On Bound Variable Change’ handler, the 
subform needs to get the bound variable’s pointer.
This is done either with  OBJECT Get Pointer(Object subform container)
or (as in 4D’s widget collection source code)   Self(Object subform container) 
is used.

This is successful if the bound variable is a process variable. It does not 
work if it is   Form.thisDate (which is a date; set to ‘current date’ for 
example).

The Form.thisDate is defined in the parent’s ON LOAD handler, so it should 
exist by the time the instance ‘formDate’ is configured. Sure seems to work for 
process variables!

I am not yet an expert on subform creation, as I have mostly avoided them in 
the past.
However, I can see the wisdom of creating widgets to put in my own object 
library.
But they need to be able to work in the context of a parent’s Form. object to 
be of use for me, as I use this extensively rather than process variables.

thanks for any suggestions,
Chris Belanger

——

Detailed explanation (if needed or interested)


I’ve been working on making some widgets, inspired by 4D’s collection. My 
question is about rewriting the DateEntry widget. After I do that, I intend to 
do some other widgets.

When I looked at the 4D source code, I saw it still uses a lot of code, 
methods, process vars, etc.
So I made a ‘DateEntry’ widget (in my custom component) that employs Form. 
objects / variables instead. It works very nicely, with a great simplification 
of code and elimination of process methods and process vars.

When the widget is put (as a subform) on a Parent Form, the Bound Variable is 
of type DATE.
It works as expected whenever it is a PROCESS VARIABLE.

However, if the bound variable isForm.theDate  (a DATE ‘variable’), then it 
fails.


WHAT I AM DOING:
In the widget’s form:
In the FORM EVENT ‘On Bound Variable Change’ — I configure what I need for the 
widget to process the bound variable. This involves creating some Form. vars to 
manage the input.
• so in this situation, it is very simple.

Case of
:(Form event = On Bound Variable Change)  // use the value of the Bound 
Variable (a Date) to configure the components DAY, MONTH, YEAR

$theVarPtr:=OBJECT Get Pointer (Object subform container)  // this is the 
pointer to the bound variable, for instance->processVar
Form.theDate := $theVarPtr->   // copy the contents of the subform contain to 
our widget’s ‘date’ so we can manipulate it without changing the bound variable 
until we are ready (On Deactivate)
// Break it into its component pieces: DAY, MONTH, YEAR, for the widget
Form.theDay := Day of(Form.theDate)
Form.theMonth:= Month of(Form.theDate)
Form.theYear:=Year of(Form.theDate)


——

OBJECT Get Pointer ( Object subform container) works as expected when the 
Parent Form’s bound variable is of type DATE and is a process Variable.

  Self(Object subform container) also gets the Parent Form’s bound variable  
(this is what the 4D widget uses; however,   Self  is always Nil in this 
situation)

** however **
it does not work when the bound variable is a Date that is define in the 
Parent’s   Form. context.  I.E.  if the bound variable is   Form.simpleDate  
this does not work.
If it is  Form.entity.simpleDate   this also does not work.


**
4D Internet Users Group (4D iNUG)
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: The set does not exist

2019-07-07 Thread John DeSoi via 4D_Tech
There is the answer: "the data source is arrays". The highlight set only 
applies to selection (table) based list boxes. To get the highlighted rows of 
an array listbox, you use the True/False value of the boolean array 
representing the listbox. See the "Managing Selection" section on the page 
below.

https://doc.4d.com/4Dv17/4D/17.2/Managing-List-Box-Objects.300-4386875.en.html


John DeSoi, Ph.D.

> On Jul 7, 2019, at 4:42 PM, Carl Aage Wangel via 4D_Tech 
> <4d_tech@lists.4d.com> wrote:
> 
> I am using the right listbox name (listbox object name) and the data source 
> is arrays. But $tableNum is -1 and $namedSelection and $highlightSet is “” 
> (empty).

**
4D Internet Users Group (4D iNUG)
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Write Pro Print Preview...

2019-07-07 Thread Tom Benedict via 4D_Tech
I’m trying to get a reliable print preview support in 4D Write Pro. This blog 
posting https://blog.4d.com/4d-write-pro-wp-commands-and-beyond/ says:

"So 4D’s printing commands also apply to 4D Write Pro, such as SET PRINT 
PREVIEW 
."

The posting includes some code:

ALL RECORDS([People])   
SET PRINT PREVIEW(True)  
OPEN PRINTING JOB
APPLY TO SELECTION([People];WP PRINT([WP_Samples]Sample))
CLOSE PRINTING JOB

But the I run it I don’t get a Print Preview. I’m wondering whether this Print 
Preview is dependent on printer driver rather than something internal to 4D?

17R4 64bit

Tom Benedict


**
4D Internet Users Group (4D iNUG)
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

SV: The set does not exist

2019-07-07 Thread Carl Aage Wangel via 4D_Tech
Thanks Chip and Narinder for your response.

I am using the right listbox name (listbox object name) and the data source is 
arrays. But $tableNum is -1 and $namedSelection and $highlightSet is “” (empty).
Regards
Carl


**
4D Internet Users Group (4D iNUG)
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Quick Open Method (QOM)

2019-07-07 Thread Tim Nevels via 4D_Tech
What do you do if you want to open a method? You have several options from the 
4D Design Environment:

- Go to the Explorer window, scroll to find the method name and then 
double-click on it.

- If you have a method window open, and you see the method name you want to 
open in that method window, you can select it and press ⌘K on macOS and Ctrl+K 
on Windows. (Same as right-clicking on the method name and selected “Goto 
definition”.)

- In an open method window, type in the beginning of a method name and press 
the tab key. A popup window is displayed showing the names of all methods that 
match what you have typed. Select one and that method name will be placed in 
method. The select it and press ⌘K. 

Those are the basic ways of opening a method window. Here is a new way. 

Quick Open Method (QOM) is a component that allows you to quickly open methods. 
You can configure it so that pressing a keystroke will open a pop up window 
that allows you to type a method name. Methods with names that begin with what 
is typed are displayed. 

You can press the return key to open the selected method in the Design 
environment. Down arrow key will move you down the list of matching methods. 
Tab key moves you between the method name entry area and the listbox below. 
Escape key closes the window. Since it uses a “pop up” window type you can also 
click anywhere outside the QOM window and it will close. 

QOM was built with 4D v17 and uses the Form command, dot notation and 
collections, so it won’t work with previous versions of 4D. And you need to 
have dot notation turned on in the host database for the component to function. 

The component has 3 shared methods. Each has comments in the “Comments” tab in 
the 4D Method Explorer indicating what the command does and parameters. The QOM 
OPEN WINDOW method is used to open this popup window.

Basically you want to create a method in the host database that will be used by 
the ON EVENT CALL command. Below is an example of the host database method that 
responds to ⌘K:

If ((Modifiers=(Command key mask+Option key mask)) & (KeyCode=251))
  // remove the trigger keystroke from event queue
FILTER EVENT

  // open the Quick Open Method popup window
QOM OPEN WINDOW 
End if 

Cannon Smith posted a feature request on 4D Forums for something like this to 
be built into the 4D Method Editor. Other IDEs have this feature, I think we 
should have it too. Go vote for this feature:

http://forums.4d.com/Post/EN/28659202/3/29834633#29834633

But until 4D includes this feature in the method editor, the QOM component can 
help provide this feature.

https://www.dropbox.com/s/htp5rdoz0g7k4n5/QOM%20v1.0.zip?dl=1

A Read Me file with details about QOM is included in the download. 

Tim

*
Tim Nevels
Innovative Solutions
785-749-3444
timnev...@mac.com
*

**
4D Internet Users Group (4D iNUG)
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**

Re: 4D v17r4 Windows Print To PDF ignoring PAGE SETUP

2019-07-07 Thread Tim Nevels via 4D_Tech
On Jul 7, 2019, at 2:00 PM, Jeffrey Kain wrote:

> When we upgraded to v17 64-bit, the biggest thing we had to change were old 
> printing forms.  To get them to work, I changed old reports that relied on 
> saved page setups to use the equivalent SET PRINT OPTION command, and it 
> worked in all cases...

I have seen this too with old, legacy report that have been around for many 
many years. Seems like PAGE SETUP is becoming sort of a legacy command. SET 
PRINT OPTION is the way to go. It can do portrait or landscape, paper size, 
number or copies, and scaling (macOS only I think). I think it can handle all 
the saved settings that PAGE SETUP does — or did. 

And SET PRINT OPTION is cross platform. PAGE SETUP saved setting were not. With 
PAGE SETUP, you had to have a Windows form and a macOS form with the saved 
setting to get portrait and landscape to work reliably. 

Tim

*
Tim Nevels
Innovative Solutions
785-749-3444
timnev...@mac.com
*

**
4D Internet Users Group (4D iNUG)
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**