Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - Marmar

Pagine: [1]
1
posto un esempio con 3 contenitori invece che 4:

Codice: [Seleziona]
IF contenitor1.Visible = FALSE THEN
  contenitor1.Visible = TRUE

  IF contenitor2.Visible = TRUE AND contenitor3.Visible = TRUE THEN
    contenitor1.Width = form.Width / 3
    contenitor2.Width = contenitor1.Width
    contenitor3.Width = contenitor1.Width
  ELSE IF contenitor2.Visible = TRUE AND contenitor3.Visible = FALSE THEN
    contenitor1.Width = form.Width / 2
    contenitor2.Width = contenitor1.Width
  ELSE IF contenitor3.Visible = TRUE AND contenitor2.Visible = FALSE THEN
    contenitor1.Width = form.Width / 2
    contenitor3.Width = contenitor1.Width
  ELSE IF contenitor2.Visible = FALSE AND contenitor3.Visible = FALSE THEN
    contenitor1.Width = form.Width
  ENDIF

ELSE IF contenitor1.Visible = TRUE THEN
  contenitor1.Visible = FALSE

  IF contenitor2.Visible = TRUE AND contenitor3.Visible = TRUE THEN
    contenitor2.Width = form.Width / 2
    contenitor3.Width = contenitor3.Width
  ELSE IF contenitor2.Visible = TRUE AND contenitor3.Visible = FALSE THEN
    contenitor2.Width = form.Width
  ELSE IF contenitor3.Visible = TRUE AND contenitor2.Visible = FALSE THEN
    contenitor3.Width = form.Width
  ENDIF

ENDIF

non so se ho fatto qualche errore di sintassi, ma è più importante la logica del sistema. Sto cercando un modo per semplificare un codice del genere, poichè se devo applicare un sistema del genere a 5 o 6 contenitori il codice diventerà terribilmente più lungo... Come detto ho provato a giocare con le proprietà expand e autoresize, ma non le so bene usare, quindi magari avevo anche la soluzione a portata di mano...  :-[

2
ciao a tutti... spero siano ite bene le vacanze!  ;D
vengo subito al dunque: ho un form con dentro 4 contenitori che vengono attivati o disattivati (giocando sulla proprietà Visible) a seconda dei pulsanti del menù. C'è un modo per far adeguare la larghezza dei pannelli a seconda di quanti sono visibili? Mi spiego: se ci sono solo due pannelli con Visible = TRUE allora ognuno occuperà il 50% della larghezza totale, se ce ne sono tutti e 4 allora ognuno occuperà il 25 %. Ho provato a giocare con le proprietà autoresize, arrange e expand, ma ottengo solo che o l'ultimo pannello si espande al massimo e gli altri rimangono così come li inserisco oppure il primo copre tutti gli altri.
Dico subito e una parziale soluzione l'avrei: far calcolare le dimensioni di tutti i contenitori ogni volta che uno di loro diventa visibile, ma significa creare tantissimi if... else if...!

P.S. ho provato a cercare nel forum ma non ho trovato nulla a riguardo, ma ovviamente se mi è sfuggita qualche discussione precedente chiedo venia!

Mercì

3
Continuo con il monologo... giusto per chi magari non ha ancora risolto la questione: ha ragione Ceskho, guardatevi l'esempio TextEdit (a differenza di quello che scrissi prima) e occhio alle proprietà del toolButton! A me non faceva nulla perché non avevo impostato una proprietà del toolbutton.
Grazie Ceskho

4
Dunque... l'esempio TextEdit per ora è totalmente inutile, infatti ho trovato una prima soluzione da solo, sperimentando. Per chi ne avesse bisogno posto l'attuale codice-soluzione, ma ancora devo migliorare:

Codice: [Seleziona]
PUBLIC SUB Bold_Click()
    DIM p AS Integer                                                  'Integer che conterrà l'inizio della stringa selezionata
    DIM l AS Integer                                                   'Integer che conterrà la lunghezza della stringa selezionata
    DIM f AS Integer                                                   'Somma dei due precedenti
    DIM scriptaA AS String                                        'Stringa che accoglie il testo PRIMA della selezione
    DIM scriptaB AS String                                        'Stringa che accoglie il testo DOPO  la selezione

    'controllo che ci sia una parte selezionata nella TextArea
    IF TextArea1.Selected = TRUE THEN
        p = TextArea1.Selection.Start          'Setto il punto iniziale della selezione
        l = TextArea1.Selection.Length        'Setto la lunghezza della selezione
        f = p + l + 1                                     'Somma dei due precedenti + 1 per trovare il primo carattere DOPO la selezione
        scriptaA = Mid$(TextArea1.Text, 1, p)            'Setto la stringa che contiene tutto il testo dall'inizio al punto p
        scriptaB = Mid$(TextArea1.Text, f)                 'Setto la stringa che contiene tutto il testo dal carattere dopo la selezione fino alla fine

        'Aggiungo i tag <b> e </b> prima e dopo la selezione
        TextArea1.Text = scriptaA & "<b>" & TextArea1.Selection.Text & "</b>" & scriptaB
    ENDIF
END

l'unico inconveniente è che poi c'è bisogno di una TextEdit per vedere il risultato... ma è già qualcosa. Ho provato a usare lo stesso codice con la TextEdit ma i punti 'p' ed 'f' risultano sfalsati per via del codice html contenuto dentro, credo basti aggiungere al punto 'p' il numero dei caratteri html preimpostati, ora fuggo, stasera proverò.

5
ho cercato tra gli esempi, ma non c'è nulla che fa ciò che vorrei. L'unico esempio utile è quello TextEdit, ma ho riprodotto l'esatto codice adattandolo ai miei campi ma non fa assolutamente  nulla, il codice è questo (muttracam = TextEdit1 & pinguius = btnBold):

Codice: [Seleziona]
PUBLIC SUB Form_Open()
    muttracam.SetFocus
    muttracam_Cursor
END

PUBLIC SUB muttracam_Cursor()                                                'che nell'esempio è TextEdit1_Cursor()
  Object.Lock(pinguius)
  pinguius.Value = muttracam.Format.Font.Bold
  Object.UnLock(pinguius)
END

PUBLIC SUB pinguius_Click()                                                       'bottone corrispondente a btnBold_Click()
  muttracam.Format.Font.Bold = LAST.Value
END

se clicco non fa assolutamente nulla.

6
aririciao a tutti... mentre aspetto qualche consiglio su l'altra discussione, propongo un altro dubbio.
Ho una form con un bel textedit interno e tanti bottoni classici come "grassetto", "corsivo", ma non riesco minimamente a capire come aggiungere un tag tipo <b></b> all'interno della textedit, vorrei che al click del bottone "grassetto" mi trovi la parola selezionata e ci aggiunga il tag di apertura e di chiusura. Come al solito ho provato a cercare nel forum e nel wiki di gambas e con google, ma l'unica cosa che si avvicina è questa:

http://www.gambas-it.org/smf/index.php?topic=614.0

ovviamente ho visto l'esempio di base, ma nell'esempio si edita un file html caricato precedentemente, mentre a me servirebbe modificare una parola selezionata che potrebbe essere contenuta in un eventuale textedit1.Text. Ho comunque cercato di riportare i codici dell'esempio al mio caso, ma l'unico effetto che ottengo è che mi aggiungono i tag <p> e </p> rispettivamente prima e dopo tutto il testo contenuto nella textedit.
Ovviamente se mi è sfuggito qualche altra discussione nel forum ringrazio chiunque me lo faccia notare  :ok:

7
Riciao a tutti  :ciao:
visto che l'ultima volta avete risolto un mio problema in meno di un'ora, mi affido nuovamente alla vostra esperienza  ;D

nel mio form ho una textbox che dovrebbe essere in grado di leggere caratteri degli alfabeti antichi (latino arcaico, etrusco, greco, lineare B per esempio). Ho cercato in questo forum sia qui:

http://www.gambas-it.org/smf/index.php?topic=583.msg5777;topicseen#msg5777

che qui:

http://www.gambas-it.org/smf/index.php?topic=442.msg3943;topicseen#msg3943

il problema è che i metodi qui usati non leggono alcuni unicode, mentre altri sì. Posto i codici che ho provato fin'ora:

Codice: [Seleziona]
unicode.Text = String.Chr(66304) 'questo carattere che è corsivo antico, non si vede: al suo posto vengono i due rettangolini vuoti
unicode.Text &= String.Chr(935) 'questo carattere, che è greco, si vede benissimo

ho provato anche a impostare come font di base del mio progetto uno che è sicuramente in grado di leggere entrambi i caratteri, eppure il primo non si vede. So che esiste anche String.Code(String as String), che vuole il UTF-8, ma ogni tentativo di usare questo comando mi dava errore, più esattamente non riesco a capire cosa va nelle parentesi tonde.

P.S. domanda extra: siccome vorrei avere gambas aggiornatissimo ma ben funzionante, conviene passare a gambas3 o è meglio aspettare che sia stabile? Se sì posso importare il progetto senza problemi?

Gratias uobis

8
Funziona perfettamente ed è esattamente quello che cercavo!! grazie mille, soprattutto per i tempi velocissimi! Ti devo una birra  :2birre: Aggiungo [RISOLTO] al titolo!!  ;D ;D

9
grazie per la risposta... ma non so se ho sbagliato io sezione del forum, ma mi dice che non è un progetto Gambas 2. Ho provato a modificare i file ricreando i form su un falso progetto gambas 2 e inserendo il codice con copia e incolla, ma si ferma dandomi un errore alla linea 45 di FMain.class, esattamente dove compare Paint:

Codice: [Seleziona]
Public Area As New DrawingArea[]
Public Btn As New ToggleButton[]

Public Sub _new()

End

Public Sub Form_Open()

  Me.Center()
  Form1.Show()

End


Public Sub AddObj()
Dim BtnX As ToggleButton
Dim AreaX As DrawingArea

  BtnX = New ToggleButton(Me.ScrollView1) As "Button"
  Btn.Add(BtnX)
  Btn[Btn.Max].Name = "Button" & Btn.Count
  Btn[Btn.Max].Move(5, 5 + (100 * Btn.Max), 28, 28)
  Btn[Btn.Max].Tag = Btn.Max

  AreaX = New DrawingArea(Me.ScrollView1) As "DrawingArea"
  Area.Add(AreaX)
  Area[Area.Max].Name = "DrawingArea" & Area.Count
  Area[Area.Max].Move(40, 5 + (100 * Area.Max), 100, 100)
  Area[Area.Max].Border = Border.Plain
  Area[Area.Max].Tag = Area.Max

End

Public Sub Button_Click()

  Area[Last.Tag].Refresh()

End

Public Sub DrawingArea_Draw()

  Paint.Begin(Last)                                            'qui mi da l'errore: unknown identifier Paint alla  linea 45 (cioè questa)!!
    Paint.Rectangle(30, 30, 40, 40)
    If Btn[Last.Tag].Value = True Then
      Paint.Brush = Paint.Color(Color.Red)
    Else
      Paint.Brush = Paint.Color(Color.Green)
    Endif
    Paint.Fill()
  Paint.End()

End

Cmq se ho capito bene il trucco sta nel creare una "funzione" in FMain che poi il Form1 va a richiamare al click del pulsante, giusto? grazie ancora dell'aiuto  :D

10
Salve a tutti! E' la prima volta che scrivo, ma seguo il forum da tempo, visto che mi ha aiutato a risolvere molti problemi  ;D tranne questo  ;D ;D
Ho provato a cercare nel forum più volte, ma senza risultati. Dunque, il problema è il seguente: ho due form, nella prima vari controlli come textbox, textarea su cui ci si può scrivere, mentre nel secondo form ho una serie di pulsanti che, se cliccati, devono inserire un carattere speciale nelle textbox del primo form. Qui sta il mio problema: siccome il pulsante non deve scrivere in tutte le textbox, ma solo in quella che l'utente ha attivato nel primo form, come faccio a dire al pulsante della seconda form di cercarmi il controllo attivo nella prima form e aggiungere il carattere speciale (ad un eventuale testo già preesistente)?

Se non sono stato chiaro o se ho dimenticato di dire qualcosa fatemi sapere! Gratias

Pagine: [1]