Jump to content

emulating preview mode


This topic is 8151 days old. Please don't post here. Open a new topic instead.

Recommended Posts

I'm trying to make a layout where a found set of images will come up the way it can in Preview mode - i.e., as a grid several images wide (they're only 72x72), listed horizontally, like so:

1 2 3 4

5 6 7 8

9 ...etc.

Is there any way to copy the way Preview mode works? Using Preview is no good for me, as I can't put buttons in, and the whole point of the layout is to let the client see a large found set and select a record based on the image.

Thanks,

STanley

Link to comment
Share on other sites

Goto Preview Mode. Copy All or maybe just Copy. Paste into a Container field.

This will copy the preview image to the clipboard, and the container can be put on a regular layout with button or what not. You will need to play with the page settings so that it looks correct when copied like this (it will usually be different than if printed).

Link to comment
Share on other sites

Use a script that goes to a layout that is arranged the way you want things to display (except for the buttons). Then enter preview mode. Copy. This will copy the actual preview image. Enter browse mode. Go to a layout that has one large global container field that fills the whole layout. Paste into the container. This layout can then have your buttons and any other fields that you need. This is the basic method. You can add a number of refinements to it.

Link to comment
Share on other sites

I had actually wanted to be able to have a button for each image so the user could just click on the image to select it. Maybe that's not possible - the way you've both described it, I can just add a field for the user to enter the image number of the image they want.l

However, what do I do about lists that occupy more than one page? The only thing I can think of is to have to go through the whole process again, but how do I delimit how many pages, etc? Or do I need to?

-Stanley

Link to comment
Share on other sites

You can have a container field for each page. When you go to preview mode, you can navigate the different pages with the "Go to Record/Request/Page" script step. You can copy each page and then paste each into a separate container field. If your images always fit a specific grid, you can create invisible buttons on the same grid and have them connected to various scripts.

On further consideration, if you are likely to be working with more than a couple of pages at a time, this probably isn't a practical solution. You might be able to do what you want with a portal and a self-join relationship.

[ January 17, 2002: Message edited by: BobWeaver ]

Link to comment
Share on other sites

Thanks, Bob.

This solution works, but I've done some finds with the client's data, and in some cases get found sets of up to 500 images. At about 48 images per page, that's probably too many pages. I've been trying to use a portal, but the problem is that the search is usually done by a keywords field - almost never an exact match to what the user enters - and so I've been unable to get the thing to work. Also, as the user wants to view the images listed across (as in my first posting) I'm having a problem with that too. I used Modulo6 arithmetic to get the items to come up going across, but I get everything in the database rather than a found set. Puzzling; I'm still working on it.

Link to comment
Share on other sites

Thanks. Unfortunately, the client already has 4000 records with keywords typed in - complete with misspellings, etc. - so I'm stuck with the open field. The real problem with having the keywords this way is that I can't relate via the keywords field. Is there a way to relate using wildcards? What I mean is, if the keywords field contains "ABC, 123, DEF" how can I relate to it via the single keyword "DEF"?

This is actually part of the whole problem I'm having - if I could do that relation, then most of my layout problems vanish, as I could use portals and modulo arithmetic to create this large graphic layout.

-Stanley

Link to comment
Share on other sites

You can create a relationship to the current found set. And then use this relationship to control what is displayed. Each record will have to have a unique identifier field such as a serial number.

- Create a global text field gFoundSet.

- Create a layout with only the serial number field on it

- Create a self-join relationship with gFoundSet as the primary key and the serial number field as the foreign key.

- Create a script that goes to the above layout, copies all records and then goes to a layout with the gFoundSet field, and pastes into gFoundSet.

Voila, you now have a relationship to the current found set. You can use that in conjuntion with the modulo 6 to create some sort of compound keys to display the records in the portal.

Link to comment
Share on other sites

Oh well it's Friday afternoon, and I can't get my head around what I should really be doing. So, I'll elaborate on my last post, since it was probably not the most practical solution.

I assume that you have 6 portals side by side. Here's what I would do:

You need the following fields:

gPortal1 - global text

gPortal2 - global text

gPortal3 - global text

gPortal4 - global text

gPortal5 - global text

gPortal6 - global text

SerNo - Text autoenter serial number unique

InPortal1 - calculation, unstored = Case(Mod(Status(CurrentRecordNumber),6)=1,SerNo,"")

InPortal2 - calculation, unstored = Case(Mod(Status(CurrentRecordNumber),6)=2,SerNo,"")

InPortal3 - calculation, unstored = Case(Mod(Status(CurrentRecordNumber),6)=3,SerNo,"")

InPortal4 - calculation, unstored = Case(Mod(Status(CurrentRecordNumber),6)=4,SerNo,"")

InPortal5 - calculation, unstored = Case(Mod(Status(CurrentRecordNumber),6)=5,SerNo,"")

InPortal6 - calculation, unstored = Case(Mod(Status(CurrentRecordNumber),6)=6,SerNo,"")

You will need the following working layouts (which don't need to be accessible to the user)???

PortalPasteLayout with fields: gPortal1,gPortal2,gPortal3,gPortal4,gPortal5,gPortal6

Portal1CopyLayout with field InPortal1

Portal2CopyLayout with field InPortal2

Portal3CopyLayout with field InPortal3

Portal4CopyLayout with field InPortal4

Portal5CopyLayout with field InPortal5

Portal6CopyLayout with field InPortal6

Also one display layout which has the 6 portals side by side

You will need the following self-join relationships:

PortalRelation1: gPortal1 = SerNo

PortalRelation2: gPortal2 = SerNo

PortalRelation3: gPortal3 = SerNo

PortalRelation4: gPortal4 = SerNo

PortalRelation5: gPortal5 = SerNo

PortalRelation6: gPortal6 = SerNo

Finally, a script:

# Do whatever keyword search the user wants

Perform Find

If [status(CurrentFoundCount)=0]

Exit Script

End If

# Now to display the results in a 6 column array

# Set up Column 1

Go to Layout [Portal1CopyLayout]

Copy all records

Go to Layout [PortalPasteLayout]

Paste [gPortal1][select entire contents]

# Set up Column 2

Go to Layout [Portal2CopyLayout]

Copy all records

Go to Layout [PortalPasteLayout]

Paste [gPortal2][select entire contents]

# Set up Column 3

Go to Layout [Portal3CopyLayout]

Copy all records

Go to Layout [PortalPasteLayout]

Paste [gPortal3][select entire contents]

# Set up Column 4

Go to Layout [Portal4CopyLayout]

Copy all records

Go to Layout [PortalPasteLayout]

Paste [gPortal4][select entire contents]

# Set up Column 5

Go to Layout [Portal5CopyLayout]

Copy all records

Go to Layout [PortalPasteLayout]

Paste [gPortal5][select entire contents]

# Set up Column 6

Go to Layout [Portal6CopyLayout]

Copy all records

Go to Layout [PortalPasteLayout]

Paste [gPortal6][select entire contents]

Go to Layout[original layout]

Link to comment
Share on other sites

Bob:

Thanks. That works wonderfully. I do run into one problem, though, which I ran into earlier, with my own faulty solution. Because the six columns are assembled using modulo 6 from the serial numbers, they don't always line up right. In other words, because of the essential randomness of a Find, numbers get skipped, and modulo arithmetic is no longer ideal. But the thing is that it works up to a point.

Is there a way to link somehow to the record's number within the found set instead of to the serial number? What I mean is, if I've found 3 records, and their serial numbers are 1, 3 and 7, the first and third end up in the same column. However, within the found set of three records, they're 1,2,3 and the modulo 6 works correctly.

Thanks again,

Stanley

Link to comment
Share on other sites

As long as this is not a multi-user database, you could include a Replace step in your script right after you do your find (and sort if necessary). Use the Replace to assign new serial numbers to a TempSerNo field. Then use the TempSerNo field instead of the SerNo field in the above solution.

Link to comment
Share on other sites

Because when you use the replace command, it renumbers the records for all users. If they have different found sets and sort orders, this action will mess up their display arrangement.

Wait a minute. Fields InPortal1, InPortal2, InPortal3...etc. should be configured as Unstored. Did you do that?

Link to comment
Share on other sites

Also because if a user is working with a record (clicked into one of the fields) it will be locked, and if that record happens to be one of the records you want to Replace, the command will fail.

Link to comment
Share on other sites

This topic is 8151 days old. Please don't post here. Open a new topic instead.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.