costante FONT

vorrei gestire i font differenti per piattaforma Linux, Windows e Mac OS nelle varie label, txt etc…
Ho provato a creare una costante che ho chiamato kk_font e ad inserire come propriet al posto del nome del Font, la costante Textfont:minicontab.kk_font
Ma non funziona, ci sono alternative ???

Mi rispondo da solo …
Ho provato ad inserire il metodo e funziona:

Dim c As Control
For i As Integer = 0 To Self.ControlCount-1
c = Window.Control(i)
If c IsA TextField Then
TextField©.Fonto = minicontab.kk_font
End If
Next

poi lo ho modificato con tutti i vari componenti

Dim c As Control
For i As Integer = 0 To Self.ControlCount-1
c = Window.Control(i)
If c IsA TextField Then
TextField©.font = minicontab.kk_font
End If
If c IsA CheckBox Then
CheckBox ©.font = minicontab.kk_font
End If
If c IsA ListBox Then
ListBox ©.font = minicontab.kk_font
End If

… e cos via per tutti i componenti che utilizzano il font

Next

magari qualcuno conosce un modo pi veloce ???

mettere font=minicontab.kk_font nell’open event del controllo
altrimenti il metodo che hai scritto va bene, solo lungo da vedere, ma dovrebbe essere veloce.

Appunto lungo da vedere.
peccato non poterlo mettere in un containercontrol…

Comunque Antonio ti ringrazio molto, sei sempre disponibile…

e perch non puoi metterlo.

un container control una finestra.
scrivi cos e ti funziona

Dim c As Control
For i As Integer = 0 To Self.ControlCount-1   //Volendo self  inutile fai riferimento a una funzionalit dell'oggetto
c=control(i)          // era c = Window.Control(i) ma o usi self anche nulla (vedi prima) control(i) esiste per win e cc se chiami window ovviamente cc non conosce il controllo
If c IsA TextEdit Then   //era TextField ma con TextEdit copri anche le TextArea (se vuoi)
TextEdit(c).font = minicontab.kk_font
//End If
elseIf c IsA CheckBox Then      //meglio elseif in quanto se hai gi verificato  inutile controllare ancora
CheckBox (c).font = minicontab.kk_font
//End If
elseIf c IsA ListBox Then
ListBox (c).font = minicontab.kk_font
End If

non mi sono spiegato bene Antonio, io intendevo mettere un CC nella finestra e nel CC la procedura per sostituire il font
ma credo non si possa fare …

un CC un oggetto, come mettevi il codice precedente nell’open della window o in una funzione puoi metterlo nell’open del CC o in una funzione.
Mettiamo che lo vuoi mettere nell’open : se vuoi avere poi a livello di finestra ancora a disposizione l’evento open basta che definisci un evento open nel CC e poi dopo (o prima a seconda di come lo vuoi fare) metti la chiamata
RaiseEvent open

Perch ripetere lo stesso codice dentro un CC per ogni sua istanza se puoi metterlo a livello di oggetto una sola volta.

Se invece a volte vuoi farlo e a volte no allora ti conviene realizzare un metodo che esegue il codice e poi chiamarlo quando ti serve…

cio tipo una cosa del genere ?

evento open nel cc idsession

[code]me.msessione = RandStr()

// 13/03/2015 imposto il font
dim c as control
for i as integer = 0 to self.ControlCount -1
c = self.Control(i)
if c IsA TextField then
TextField©.TextFont = Minicontab.kk_font
end if

if c IsA Label then
  Label(c).TextFont = Minicontab.kk_font
end if

if c isA GroupBox then
  GroupBox(c).TextFont = Minicontab.kk_font
end if

if c isA CheckBox then
  CheckBox(c).TextFont = Minicontab.kk_font
end if

if c isA ComboBox then
  ComboBox(c).TextFont = Minicontab.kk_font
end if

if c isA RadioButton then
  RadioButton(c).TextFont = Minicontab.kk_font
end if

if c isA Listbox then
  Listbox(c).TextFont = Minicontab.kk_font
end if

if c isA PopupMenu then
  PopupMenu(c).TextFont = Minicontab.kk_font
end if

if c isA TextArea then
  TextArea(c).TextFont = Minicontab.kk_font
end if

if c isA TabPanel then
  TabPanel(c).TextFont = Minicontab.kk_font
end if

if c isA PushButton then
  PushButton(c).TextFont = Minicontab.kk_font
end if

next

RaiseEvent open[/code]

scusa in questo periodo sono un p ‘in aria’ mi hanno diagnosticato l’osteoporosi e quindi sono molto ma molto preoccupato.
Del resto per la vita continua, e devo finire la mia app di contabilit.

Per la miseria. Mi dispiace molto.

Si il codice corretto (sempre che nel cc hai definito un evento open (quello che chiami alla fine)

Ti rinnovo il suggerimento di eliminare una verifica: TextField e TextArea hanno lo stesso padre comune TextEdit. Puoi fare una sola verifica che comprender entrambi:

if c isA TextEdit then TextEdit(c).TextFont = Minicontab.kk_font end if

Non riesco a farlo funzionare nel Container Control, o per lo meno funziona solo per il container control e non per gli oggetti della window che lo contiene

Non un comando assoluto.
Se metti in CC che ha quel codice, questo sar relativo al CC
Il CC un oggetto che puoi posizionare in una window e automaticamente “aggiuster” il font come richiesto.

Lo stesso codice lo devi mettere nella window.
Puoi creare una sottoclasse di window (crea una nuova classe metti e come super window) con lo stesso meccanismo di open locale (con lo stesso codice) e nuovo evento open (che sar quello che utilizzi ora) e poi nelle finestre che usi metti come super questa classe.

Forse per semplificarti la vita potresti cambiare strategia:
in un modulo crea il metodo

Sub setMyFont(extends w as Window, fontName as String)
  dim n as integer=w.ControlCount-1
  dim c as Control
  for i as integer=0 to n
    c=w.Control(i)
    if c isA Label then
      Label(c).TextFont=fontName
    elseif c isA TextEdit then
      TextEdit(c).TextFont=fontName

//... e cosi via per gli altri casi

    end if
  next
End Sub

Poi nell’open della window

self.setMyFont(Minicontab.kk_font)
Un_CC_che_sto_usando.setMyFont(Minicontab.kk_font)

o se vuoi per i cc lo metti nell’ suo open che diventa:

Sub Open()
  self.setMyFont("Arial")
  
  RaiseEvent open
End Sub

Diciamo che dipende da quello che vuoi fare e da cosa preferisci.

Risolto con il primo metodo, sei un grande !