Home


  Generátor obrázkových galerií ve VB I.

Johny / 17.2.2002 /

Pokusím se postupně popsat, jak by se dal udělat generátor obrázkových galerií ve VB. Jelikož obdobných programů je celá řada, tak se pokusím vytvořit něco, co bude vybočovat z řady. Tedy jednoduchý program, který ovšem bude generovat galerie v PHP. Dnes popíšu první část, která bude celá ve Visual Basicu 6. V dalších článcích se dozvíte, jak program dodělat a nakonec se zaměřím na PHP, které bude výstupem programu.

Hned se tedy pustím do díla. Vytvořte nový projekt >Standard EXE, formulář přejmenujte na "hlavni". Vlastnost CAPTION formuláře nastavte na Generátor PHP galerií. Do projektu přidejte Microsoft Tabled Dialog Control. Předpokládám, že požadujeme, aby se SSTab automaticky přizpůsoboval rozměrům formuláře. Tento požadavek splní následující událostní procedura.


Private Sub Form_Resize()
    SSTab1.Width = Me.Width - 100
    SSTab1.Height = Me.Height - 400
End Sub



Poté upravte první záložku tak jako je to na obrázku. Jména prvků ponechte.

Teď je potřeba provázat prvky. To nám zajistí následující kód:


Private Sub Dir1_Change()
    Text1.Text = Dir1.Path
End Sub

Private Sub Dir2_Change()
    Text2.Text = Dir2.Path
End Sub

Private Sub Drive1_Change()
    On Error GoTo err
    Dir1.Path = Drive1.Drive
Exit Sub
err:
    MsgBox "Jednotku nelze zvolit", vbCritical, "Chyba přístupu na disk" Drive1.Drive = "c:"
End Sub

Private Sub Drive2_Change()
    On Error GoTo err
    Dir2.Path = Drive2.Drive
Exit Sub
err:
    MsgBox "Jednotku nelze zvolit", vbCritical, "Chyba přístupu na disk" Drive2.Drive = "c:"
End Sub


Jako další část programu budou textboxy, které budou obsahovat předprogramovaný zdroj stránek v PHP, proto se přepneme na druhou záložku SSTab1.
Protože na stránkách budeme používat rámce, tak potřebujeme hned 3 text boxy najednou. Jeden textbox bude obsahovat definici rámců, druhý bude zobrazovat miniatury a poslední bude zobrazovat samotné obrázky. Jelikož se bude používat PHP, tak by někomu mohlo přijít zajímavé, aby obrázek ze stránky mohl přímo poslat emailem, proto přidám ještě poslední textbox. Není vhodné textboxy umístit vedle sebe, proto je dám přes sebe a jejich zobrazování zajistím pomocí přepínače typu radiobutton. Textboxy pojmenuju "index_php", "leva_php", "main_php", a "mail_php".

Formulář by měl vypadat asi takle:

Přepínání mezi textboxama zajistim pomocí tohoto zdrojáku:


Private Sub Option1_Click()
    index_php.Visible = True
    leva_php.Visible = False
    main_php.Visible = False
    mail_php.Visible = False
End Sub

Private Sub Option2_Click()
    index_php.Visible = False
    leva_php.Visible = True
    main_php.Visible = False
    mail_php.Visible = False
End Sub

Private Sub Option3_Click()
    index_php.Visible = False
    leva_php.Visible = False
    main_php.Visible = True
    mail_php.Visible = False
End Sub

Private Sub Option4_Click()
    index_php.Visible = False
    leva_php.Visible = False
    main_php.Visible = False
    mail_php.Visible = True
End Sub


Teď se budeme věnovat poslední záložce, záložce jménem Generování.
Zde dojde k vytvoření náhledů, a kompletaci, takže je potřeba projít zdrojovou složku. Všechny obrázky v ní upravit na zadanou velikost a nakopírovat je do složky pro náhledy. Pro vytváření náhledu použijeme komponentu jménem Kodak Image Edit Control, česky Ovládací Prvek Kodak Image Edit. ImageEdit vložíme na Formulář. Dále budeme potřebovat 1 tlačítko "Generovat" (pojmenujeme ho "generovat") a jedno tlačítko "Konec" (Pojmenujeme ho konec). Nastavíme ImgEdit1.visiable na False.

Private Sub generovat_Click()
    Dim FileName As String
    Dim FOLDER_IN As String, FOLDER_OUT As String

    FOLDER_IN = Text1.Text
    FOLDER_OUT = Text2.Text

FileName = Dir(FOLDER_IN & "\*.jpg")
With ImgEdit1
    Do While FileName <> ""
      .Image = FOLDER_IN & "\" & FileName
      .Width = 180 * Screen.TwipsPerPixelX
      .Height = 180 * Screen.TwipsPerPixelY
      .FitTo wiFIT_TO_HEIGHT
      .Display
      .FitTo wiFIT_TO_WIDTH
      .Display
      .SaveAs FOLDER_OUT & "\" & FileName, .FileType, .PageType, .CompressionType, .CompressionInfo, True FileName = Dir()
    Loop
End With
End Sub

Pokračování jindy, už mě to pije krev, musím nad tim moc myslet.....