Checkbox che aggiunge o rimuove codice all'interno di una classe

di il
9 risposte

Checkbox che aggiunge o rimuove codice all'interno di una classe

Come scritto da titolo avrei bisogno di capire come:
Se seleziono una checkbox del codice venga scritto all'interno di una mia classe.

Dovrei creare un programmino che dato username e password (pre-inseriti) e la selezione di determinati checkbox mi generi un file pdf contenente dei content-block con i miei dati, per esempio:
Se seleziono il checkbox di Windows e i miei dati sono e ludovica10, il risultato che vorrei avere sul mio pdf sarà una cosa simile:
------------------------------- Accesso Windows --------------------------------------
username:
password: ludovica10
-------------------------------------------------------------------------------------------

ciao, grazie e spero possiate aiutarmi!

9 Risposte

  • Re: Checkbox che aggiunge o rimuove codice all'interno di una classe

    Chronicles ha scritto:


    Come scritto da titolo avrei bisogno di capire come:
    Se seleziono una checkbox del codice venga scritto all'interno di una mia classe.
    Questa cosa non ha senso. Che intendi dire??
  • Re: Checkbox che aggiunge o rimuove codice all'interno di una classe

    Salve,
    @oregon ha ovviamente ragione, ma al di la' delle parole usate per esprimere la domanda, direi che si potrebbe intenderla in senso piu' "lato", cioe' che l'OP giusto richieda come scrivere un'espressione condizionale sulla base dello stato di selezione del checkbox
    quindi, trivialmente,
    
    private void DoSomething()
    {
    
        // qui per semplicita' utilizzo un semplice file stream e non il TUO sistema di output su file pdf
        System.IO.FileStream fs = null;
    
        try
        {
            fs = new System.IO..FileStream("nomeFile", System.IO.FileMode.CreateNew);
            using (System.IO.StreamWriter writer = new System.IO.StreamWriter(fs))
            {
    
                writer.WriteLine("prima riga");
    
                if (checkBox1.Checked) // in base allo stato del checkbox inserisce o no le 2 righe successive
                {
                    writer.WriteLine("username: pincopallino@ciao.it");
                    writer.WriteLine("password: ludovica10");
                }
    
                writer.WriteLine("riga finale");
            }
        }
        finally
        {
            if (fs != null) fs.Dispose();
        }
    
    }
    
    nella valutazione condizionale if (checkBox1.Checked) { .... } viene deciso SE il flusso debba inserire le 2 righe con le informazioni o saltare al termine del blocco condizionale...
    ma spero non sia' questo quanto richiesto, perche' mi pare molto alle prime armi

    salutoni omnia
    --
    Andrea
  • Re: Checkbox che aggiunge o rimuove codice all'interno di una classe

    Grazie mille ad entrambi e scusate la domanda poco chiara
    Sono riuscito a sviluppare il sistema dell'utente @asql , ma adesso sorge un' ulteriore problema:
    Sto utilizzando una libreria per la scrittura su file (PDF) --> Spire PDF.
    L'utente ha a disposizione 10 campi da poter generare attraverso i checkbox, ma dato che ogni checkbox deve generare una porzione di codice per scrivere su file una determinata cosa come gestisco l'eventualità che l'utente voglia selezionare solamente l'ultimo checkbox? ora come ora avrei un foglio bianco e in fondo al foglio la scritta che mi interessa, avete qualche idea, grazie
  • Re: Checkbox che aggiunge o rimuove codice all'interno di una classe

    Salve Chronicles,
    per evitare di confondere chi legge, per favore non dire
    ".... ogni checkbox deve generare una porzione di codice ...."
    in quando questa espressione, per un programmatore, sottindende che del codice eseguibile debba essere in un qualche modo iniettato nel codice in esecuzione...
    ripeto, quello che tu richiedi fa semplicemente parte di un flusso condizionale di elaborazione... hai 10 checkbox, ci saranno 10 IF da verificare ed seguire, uno dopo l'altro... e il mio codice di esempio non cambia, ci sara' solo la sequenza di 10 verifiche di flusso...

    personalmente non ho ben capito il problema relativo al posizionamento verticale che tu indichi... non conosco il componente che tu riporti, ma in ogni caso sicuramente e' in grado di gestire gli assi X/Y di posizionamento orizzontale/verticale, quindi ti basta seguire la logica del flusso, ed aumentare il valore di Y man mano che "scrivi", trivialmente:
    int Y = 10 // posizione iniziale suu'asse delle Y;
    int fHeight = altezza_del_font_in_base_al_tipo_di_carattere_o_cosa_simile;
     
    writer.WriteLine("header", Y);
    
    if (checkBox1.Checked) // in base allo stato del checkbox inserisce o no le 2 righe successive
    {
        Y += fHeight;   // aumenta il  valore di Y   
        writer.WriteLine("username: pincopallino@ciao.it", Y);
        Y += fHeight;   // aumenta il  valore di Y
        writer.WriteLine("password: ludovica10", Y);
    }
    
    if (checkBox2.Checked) // in base allo stato del checkbox scrive il dato riferito a checkbox2
    {
        Y += fHeight;   // continua ad aumentare il  valore di Y   
        writer.WriteLine("checkBox 2", Y);
    }
    ...
    if (checkBoxN/b].Checked) // in base allo stato del checkbox scrive il dato riferito a checkboxN
    {
        Y += fHeight;   // continua ad aumentare il  valore di Y   
        writer.WriteLine("checkBox N", Y);
    }
    ovviamente questo codice NON e' compilabile in quanto System.IO.StreamWriter.WriteLine NON supporta questo overload perche' ovviamente non c'e' la possibilita' di impostare la valorizzazione posizionale sugli assi X/Y, ma il tuo componente sicuramente, in un qualche modo, lo permette
    salutoni omnia
    --
    Andrea
  • Re: Checkbox che aggiunge o rimuove codice all'interno di una classe

    Certo, sono d'accordo per i 10 IF ma come scritto nel post precedente, se l'utente finale che usa il programma seleziona il 1 ed il 4 checkbox, tra il primo ed il quarto ci saranno ben due spazi vuoti, e visto che la libreria che utilizzo necessita di coordinata x coordinata mi viene difficile.
    Posso seguire la seguente logica?
    
    if(checkboxA.checked){
    		//codice per scrivere sul pdf
    }
    if(checkboxB.checked){
    		//codice per scrivere sul pdf
    }
    if(!checkedboxA.checked){
    		//coordinate per il checkboxB orientate come fossero il checkboxA per evitare spazi
    }
    	
    
    Corretto?


    allego anche il codice necessario per scrivere su file
                            PdfPen Windows12 = new PdfPen(PdfBrushes.Black, 0.5f);
                            Windows12.DashStyle = PdfDashStyle.Custom;
                            Windows12.DashPattern = new float[] { 5, 5 };
                            page1.Canvas.DrawLine(Windows12, new PointF(10, 81), new PointF(650, 81));
    
                            page1.Canvas.DrawString("Accesso 1",
                                        new PdfFont(PdfFontFamily.Helvetica, 14f),
                                        new PdfSolidBrush(Color.RoyalBlue),
                                        10, 63);
    
                            page1.Canvas.DrawString("Nome utente:  " + usernametxt.Text,
                                        new PdfFont(PdfFontFamily.Helvetica, 12f),
                                        new PdfSolidBrush(Color.Black),
                                        20, 83);
    
                            PdfPen Windows13 = new PdfPen(PdfBrushes.Black, 0.5f);
                            Windows13.DashStyle = PdfDashStyle.Custom;
                            Windows13.DashPattern = new float[] { 5, 5 };
                            page1.Canvas.DrawLine(Windows13, new PointF(10, 101), new PointF(650, 101));
  • Re: Checkbox che aggiunge o rimuove codice all'interno di una classe

    Salve Chronicles,
    appunto, hai gia' scritto tutto tu...
    page1.Canvas.DrawString("Accesso 1",
                                        new PdfFont(PdfFontFamily.Helvetica, 14f),
                                        new PdfSolidBrush(Color.RoyalBlue),
                                        X, Y);
    ti basta gestire la posizione Y come a te interessante...
    man mano che cicli nel flusso condizionale dello stato di selezione di ogni checkbox, Y sara' aumentato del valore a te interessante (che teoricamente dovrebbe essere l'altezza del Font)...

    salutoni omnia
    --
    Andrea
  • Re: Checkbox che aggiunge o rimuove codice all'interno di una classe

    Chiaro ma la vedo dura in questo modo, mettiamo caso che il primo checkbox non è selezionato, il testo generato dal secondo checkbox deve posizionarsi al posto del primo, il terzo andrà al posto del secondo e cosi via, mi sembra una soluzione drammatica..
  • Re: Checkbox che aggiunge o rimuove codice all'interno di una classe

    Salve Chronicles,
    forse non riesco a spiegarmi... scusa, ma cerca di "leggere" l'esempio di codice.... tutto viene "scalato" automaticamente...
    parti da Y = 0;
    se checkbox1, allora Y = Y + 14 (altezza teorica del font) e scrive "checkbox1" in Y (che e' aumentato di Y + 14)
    se checkbox2, allora Y = Y + 14 (altezza teorica del font) e scrive "checkbox2" in Y (che e' aumentato di Y + 14)
    ...
    se checkboxN, allora Y = Y + 14 (altezza teorica del font) e scrive "checkboxN" in Y (che e' aumentato di Y + 14)

    tutto viene man mano automaticamente scalato verso il basso... non capisco il tuo problema..

    saluti
    --
    Andrea
  • Re: Checkbox che aggiunge o rimuove codice all'interno di una classe

    Accidenti, mi ero totalmente perso questo dettaglio, perdonami.
Devi accedere o registrarti per scrivere nel forum
9 risposte