View Full Version : [VB] Problema con codice vb
Kurbetto
23-08-2007, 13:36
Ciao a tutti avrei bisogno di implementare un codicino piccolo piccolo in vb che mi permetta di cambiare una scritta in base alla variabile della scritta, cioè che se la variabile è uno la scritta sarà di un tipo se la variabile e due di un altro..
Carmine_XX
23-08-2007, 17:58
Ciao a tutti avrei bisogno di implementare un codicino piccolo piccolo in vb che mi permetta di cambiare una scritta in base alla variabile della scritta, cioè che se la variabile è uno la scritta sarà di un tipo se la variabile e due di un altro..
E' facilissimo ;)
Basta usare l'istruzione Select Case.
Dim miaVar As Integer = 0
Dim risultatoVar As String = ""
Select Case miaVar
Case 0
risultatoVar = "miaVar è zero"
Case 1
risultatoVar = "miaVar è uno"
'qui poi puoi aggiungere quanti select case ti servono
End Select
Ovvio che ci sono vari modi per fare ciò che ti interessa, ma questo è il più semplice :Prrr:
Kurbetto
24-08-2007, 07:50
Grazie mille , gentile. Però vorrei che poi questo testo di colleghi ad un database perchè e da li che prende i dati tipo.. allora conoscete cimpliciti? bè è un programma che fa grafica con linguaggio vb. ho fatto tutto un progetto in italiano però lo vogliono anche in inglese. Inevece che duplicarlo si è pensato visto che ogni testo ha un indice e una variabile di collegarlo ad un database e in
base alla variabile che decidiamo cambia lingua. Cioe impostiamo tutti ti teti con un indice poi da database scegliamo che se tipo esempio l indice e uno tutti i testi in inglese se due in italiano.... Spero di essermi fatto capire
ma non è più semplice fare vari file di testo in cui ci tieni le stringhe della lingua? es it.lng en.lng us.lng ....poi in base alla lingua che scegli prendi le stringhe nel file e sei a posto... così ti risparmi il fatto che per funzionare la tua app necessiti di un db..
meglio farlo in xml, tipo:
<dblingua>
__<msg>ciao mondo</msg>
____<en>hello world</en>
____<fr>quello che e' :) </fr>
____<de>idem :) </de>
__</msg>
</dblingua>
Kurbetto
24-08-2007, 08:45
xml php o altri linguaggi non posso perche il prgramma che uso legge solo vb..
ho tanti testi però uguali uno in inglese uno in italiano come potrei fare scusa sono ignorante sai...
xml non e' un linguaggio, e' un semplice file di testo, piu' semplice da gestire rispetto a un txt.. in vb puoi leggerlo tranquillamente.
Kurbetto
24-08-2007, 09:22
il programma che uso non supprota xml.. mi serve in vb.. qualche idea?
non ho capito... non hai scritto che ti serve un codice in vb? che programma stai usando?
Kurbetto
24-08-2007, 10:17
cimplicity che usa vb
gaspanic666
24-08-2007, 11:45
ma il db l'hai già?
se si che db è?
cmq potresti creare una tabella di traduzioni in orizzontale,
e per ogni label andare a cercare la traduzione...
tipo label "Cliente", nella tua tabella avrai 1 colonna per lingua
e in base alla lingua prendi il corrispettivo della caption della label...
filtri nella colonna italiano "Cliente" e prendi la trad che ti serve...
e se no il select case, ma il brutto è che ogni volta che devi cambiare devi andare nel codice... mentre così basta che modifichi la tabella...
Kurbetto
24-08-2007, 11:56
Be si si puo fare ma io vorrei fare che se clicco su uno inglese e tutti i testi diventano in inglese se due tutto italino senza modificare piu niente.. in sql il databse mi serve il codice che si collega a quello.... :D
Kurbetto
24-08-2007, 13:25
allora io ho fatto una cosa del genere non so se sia giusto
Function SecltaLang() As Variant
l = PointGet("LINGUA")
If l = 0 Then
lang = "Lang_ITA"
Else If l = 1 Then
lang = "Lang_ENG"
End If
End If
Dim ScreenObjects As Gefobjects
Dim OggTesto As GefObject
Dim OggTextFormat As GefTextFormat
For intIndex = 1 To 10000
On Error GoTo salto
Set OggTesto = CimGetScreen().Object.Objects.Item("txtDescription" & intIndex)
Set OggTextFormat = OggTesto.TextFormat
p = sqlProc(" select ABC." & lang & _
" from dbo.ABC ABC " & _
" where ABC.idLang = " & intIndex)
ttesto = a(0,0)
OggTextFormat.Text = ttesto
CimGetScreen.Refresh false
salto:
Err = -1
Next intIndex
End Function
Sub OnScreenOpen()
f = SecltaLang()
End Sub
Sub OnExpressionUpdate(exprValue As Variant)
f = SecltaLang()
End Sub
Mah! secondo me il più semplice è quello che ha esposto Carmine cioè, usare Select Case, al limite puoi aggiungere un'array ad ogni istanza Case, tanti quanto le lingue da supportare.
On Error Resume Next
Dim Inglese(100) As String ' 100 vocaboli, parole o frasi
Dim Italiano(100) As String
Dim Russo(100) As String
Dim n As Integer
'
Dim miaVar As Integer
Dim risultatoVar As String
Select Case miaVar
Case 0
risultatoVar = "miaVar è zero"
For n = 1 To 100
Debug.Print Inglese (n) ' Elenca le 100 voci in Inglese.
Next n
Case 1
risultatoVar = "miaVar è uno"
For n = 1 To 100
Debug.Print Italiano (n) ' Elenca le 100 voci in Italiano.
Next n
Case 2
risultatoVar = "miaVar è due"
For n = 1 To 100
Debug.Print Russo (n) ' Elenca le 100 voci in Russo.
Next n
Case x
' ecc
' qui poi puoi aggiungere quanti Select Case ti servono
End Select
L'input può essere dato usando una TextBox, InputBox o qualunque altra cosa...unito ad un pulsante Command1.
É solo un'abbozzo e bisognerebbe vedere il resto del listato per capire dove applicare l'output delle varie lingue.
Se possibile è meglio non usare i Goto.
:rolleyes:
Carmine_XX
26-08-2007, 02:14
Se possibile è meglio non usare i Goto.
Straquoto :sisi:
I goto su usano solo in assembly :D
Kurbetto
27-08-2007, 08:14
ok perfetto, adesso l unico problema è che ho delle scritte in una textbox che cambiano da sole, come faccio ad attaccargli questo script?
gaspanic666
27-08-2007, 08:54
cosa intendi per "cambiano da sole" ??
Kurbetto
27-08-2007, 10:09
sono collegate ad un motore. quando il motore parte vanno in preavviso acsutico, e start, o in pausa e stop.
Grazie mille , gentile. Però vorrei che poi questo testo di colleghi ad un database perchè e da li che prende i dati tipo.. allora conoscete cimpliciti? bè è un programma che fa grafica con linguaggio vb. ho fatto tutto un progetto in italiano però lo vogliono anche in inglese. Inevece che duplicarlo si è pensato visto che ogni testo ha un indice e una variabile di collegarlo ad un database e in
base alla variabile che decidiamo cambia lingua. Cioe impostiamo tutti ti teti con un indice poi da database scegliamo che se tipo esempio l indice e uno tutti i testi in inglese se due in italiano.... Spero di essermi fatto capire
Mi pare di capire che l'exe prenda i dati da un db. I dati passati dal db all'exe possono essere in ita o ing. Il programma, se i dati sono in inglese, deve stampare la "text", caption o altri controlli in inglese appunto come il dato.
Per far questo in VB ma anche per altri linguaggi c'è la possibilità di utilizzare un file di risorse .RES in cui se si ha bisogno di cambiare tutte le caption o text o altri controlli nella lingua preferita si può caricare a runtime il file .RES dove appunto saranno cambiati i nomi delle text o caption listbox ecc ecc nella lingua scelta.
Evitando tutta una serie infinita di if e selct case!
Se googli troverai un mare di info questo è uno:
http://www.itportal.it/developer/vb/file_risorse/
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.