Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Looking for ideas on how to show list of digital photos
Message
De
08/05/2006 13:31:31
Cetin Basoz
Engineerica Inc.
Izmir, Turquie
 
 
À
08/05/2006 13:26:53
Cetin Basoz
Engineerica Inc.
Izmir, Turquie
Information générale
Forum:
Visual FoxPro
Catégorie:
Gestionnaire d'écran & Écrans
Versions des environnements
Visual FoxPro:
VFP 9 SP1
Divers
Thread ID:
01120012
Message ID:
01120098
Vues:
26
This message has been marked as the solution to the initial question of the thread.
>>Hi Cetin,
>>
>>>1 or 4 IMHO. In grid you could show them with a single Image control. In an HTML form however you have more chances like a thunbnail as you said (and multiple images per row).
>>
>>Thanks for your feedback!
>>
>>I've been experimenting with using a grid. The reason I like the grid approach is that it gives me additional flexibility for filtering and ordering images as well as an opportunity to provide additional data about each image.
>>
>>My frustration with using a grid for images is that its refresh begins to slow down when there's a large number of image files being managed and one is near the bottom of the grid navigating by up and down arrows. Specifically what I see happening is images are displayed twice while the grid's dynamic* properties are updated.
>>
>>I'm posting a related question about grid refresh performance in a seperate thread.
>>
>>Malcolm
>
>I answered in other thread already:) BTW with HTML approach too you can filter.
>Cetin

Images, containers in grid FAQ #7934
And here is a sample for HTML:
oForm = createobject('form1')
oForm.show()
Read events

Define CLASS form1 AS form
  Top = 0
  Left = 0
  Height = 470
  Width = 740
  DoCreate = .T.
  Caption = "HTML sample"
  Name = "Form1"
  HTMLFile='' && Custom prpoperty to hold temp .htm name

* This is IE control - you'd use webbrowser4 from gallery instead
* just because it already has some checks, extra pem. ie: wouldn't need readystate part
* for the sake of keeping code short here I directly use olecontrol itself
  Add OBJECT htmlviewer AS olecontrol WITH ;
    Top = 12, ;
    Left = 12, ;
    Height = 396, ;
    Width = 708, ;
    Visible = .T., ;
    Name = "HTMLViewer", ;
    OleClass = 'Shell.Explorer'

  Add OBJECT text1 AS textbox WITH ;
    Height = 25, ;
    Left = 12, ;
    Top = 432, ;
    Width = 60, ;
    Name = "Text1"

  Add OBJECT text2 AS textbox WITH ;
    Height = 23, ;
    Left = 84, ;
    Top = 432, ;
    Width = 204, ;
    Name = "Text2"

  Add OBJECT text3 AS textbox WITH ;
    Height = 23, ;
    Left = 300, ;
    Top = 432, ;
    Width = 125, ;
    Name = "Text3"

  Add OBJECT text4 AS textbox WITH ;
    Height = 23, ;
    Left = 432, ;
    Top = 432, ;
    Width = 125, ;
    Name = "Text4"

  Procedure Init
    Local lnImages, lnPerrow, lnCurrent
    lnImages = adir(arrImages,_samples+'data\graphics\*.gif')
    *You'd use a table let's simulate it
    Create cursor myImages (ImagePath c(50),FirstName c(12), LastName c(12))
    For ix=1 to lnImages
      Insert into myImages values ;
        ('myImages\'+arrImages[ix,1],'FirstName'+trans(ix),'LastName'+trans(ix))
    Endfor
    *Now we have a test table - create HTML
    lnPerRow = 3 && How many would we show on a line
    lnCurrent = 0 && Do not use recno() thinking it might be ordered on an index
    This.HTMLFile = sys(2015)+'.htm'

    Set textmerge on
    Set textmerge to (this.HTMLFile) noshow
    * Initialize lcHTML
		\<HTML><BODY><TABLE>
    Select myImages
    Scan
      lnCurrent = lnCurrent+1
      If (lnCurrent-1)%lnPerRow=0
        If lnCurrent>1
		\</TR>
        Endif
		\<TR>
      Endif
		\<TD><A href="<<trans(recno())>>"><img border="0" src="<<trim(chrtran(ImagePath,'\','/'))>>"></A></TD>
    Endscan
		\</TR>
		\</TABLE></BODY></HTML>
    Set textmerge to
    Set textmerge off
*!*	    Modify Command (this.HTMLFile) && If you ever wonder created HTML
    With ThisForm.htmlviewer
      .Navigate2('file://'+sys(5)+curdir()+this.HTMLFile)
      Do while .ReadyState # 4 && Wait for ready state
      Enddo
    Endwith
  Endproc


  Procedure htmlviewer.BeforeNavigate2
    *** ActiveX Control Event ***
    Lparameters pdisp, url, flags, targetframename, postdata, headers, cancel
    Cancel = .t.  && do not navigate to anywhere
    With thisform && with webbrowser4 also this.oHost is the form itself or container
      .text1.value = justfname(url)
      Go val(justfname(url)) in 'myImages'
      .text2.value = myImages.ImagePath
      .text3.value = myImages.FirstName
      .text4.value = myImages.LastName
    Endwith
  Endproc

  Procedure queryunload
    Clear events
  Endproc
  Procedure destroy
    Erase (this.HTMLFile)
  Endproc
Enddefine
Cetin
Çetin Basöz

The way to Go
Flutter - For mobile, web and desktop.
World's most advanced open source relational database.
.Net for foxheads - Blog (main)
FoxSharp - Blog (mirror)
Welcome to FoxyClasses

LinqPad - C#,VB,F#,SQL,eSQL ... scratchpad
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform