[VB6]Common dialog bestand opslaan vaste bestandsnaam

Pagina: 1
Acties:

  • Viper®
  • Registratie: Februari 2001
  • Niet online
Ik wil via de Common dialog van vb6 een bestand opslaan maar met een vaste bestandsnaam en extensie.

dlg.FileName = "bestandsnaam"
dlg.DefaultExt = "*.xml"
dlg.Filter = "xml (*.xml) | *.xml"
dlg.ShowSave

dit werkt leuk maar dan kan de gebruiker nog steeds de bestandsnaam veranderen. Kan ik die niet vast maken ?

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 07-10-2025
kun je niet iets met filecopy, of gewoon de print functie ??

  • Viper®
  • Registratie: Februari 2001
  • Niet online
filecopy is leuk, maar ik wou gebruik maken van de overzichtelijke common dialog om een bestand op te slaan. Aan de gebruiker vragen om een directory in te typen wordt niks.

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 07-10-2025
en met een API een directory selecteren en dan alsnog filecopy ? Met Common Dialog blijf je altijd de mogelijkheid hebben om de bestandsnaam aan te passen.

  • Boss
  • Registratie: September 1999
  • Laatst online: 03-05 06:46

Boss

+1 Overgewaardeerd

Dan heb je geen SaveAs dialoog nodig, maar een dialoog waarin de gebruiker alleen maar een directory kan aanwijzen. Weet even niet hoe die heet, maar hij bestaat zeker wel!

En anders in de filename text iets zetten van 'ignore - will be replaced with default filename' en dan gewoon in de code de vaste naam gebruiken.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Zekers kan dat wel.
Een makkelijk manier is:

Code:
code:
1
2
3
4
5
6
7
8
9
10
Dim x As Long
Dim comboboxex As Long
Dim combobox As Long
'zoek het hoofdvenster van de common dialog
x& = FindWindow("#32770", vbNullString)
'vervolgens gaan we het edit veld opzoeken
comboboxex& = FindWindowEx(x&, 0&, "comboboxex32", vbNullString)
combobox& = FindWindowEx(comboboxex&, 0&, "combobox", vbNullString)
'hier disable je de edit functie
Call EnableWindow(combobox&, 0&)


Module:
code:
1
2
3
Public Declare Function EnableWindow Lib "user32" (ByVal hwnd As Long, ByVal fEnable As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

  • Viper®
  • Registratie: Februari 2001
  • Niet online
bij mij werkt die code niet echt :{

Verwijderd

je moet die code pas aanroepen als de common dialog is gecreate.

  • Boss
  • Registratie: September 1999
  • Laatst online: 03-05 06:46

Boss

+1 Overgewaardeerd

Hoewel dit wel werkt, is het wellicht niet echt duidelijk voor de gebruiker. Hij kan alleen een map kiezen, maar krijgt een dialoog te zien waarmee hij normaalgesproken een bestandsnaam kan opgeven. Niet echt volgens de 'interface standards', voor zover die bestaan...

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • Ciqniz
  • Registratie: Oktober 2002
  • Laatst online: 07-09-2023

Ciqniz

On the move...

Dit is volgens mij een oplossing, niet netjes, maar denk dat het wel zal werken:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dim FileNameArray As String 'alle mappen in het pad dat de gebruiker gekozen heeft in een array
Dim StrictFileName As String 'jouw vaste bestandsnaam
Dim FileSavePath As String 'pad dat de gebruiker gekozen heeft
Dim i As Integer 'voor t loopen

StrictFileName = "mijnxml.xml"
CmnDlg.ShowSave 'laat common dialog zien
FileNameArray = Split(CmnDlg.FileName, "\") 'deel het pad op in stukjes (mappen)

For i = 0 To UBound(FileNameArray) - 1 'ga de hele array door op het laatste deel na (bestandsnaam van gebruiker)
  FileSavePath = FileSavePath & FileNameArray & "\" 'bouw pad op excl. bestandsnaam opgegeven door gebruiker
Next i

'om de gebruiker niet al te veel te verwarren:
If Right(CmnDlg.FileName, Len(StrictFileName)) <> StrictFileName Then
  MsgBox "Bestand wordt opgeslagen als " & StrictFileName & " op de lokatie " & FileSavePath
End If

'doe nu je ding met het pad dat de gebruiker gekozen heeft
'zo hoef je alleen je eigen bestandsnaam er nog aan toe te voegen om het te gebruiken:
FileSavePath = FileSavePath & StrictFileName


Daarbij kun je natuurlijk ook gewoon een treeviewcontrol gebruiken??
Pagina: 1