Creazione QRlabel

di il
3 risposte

Creazione QRlabel

Buon pomeriggio,

stavo cercando di creare un qrlabel in runtime l'ho fatto solo che devo crearlo per fare un calendario quindi stampare da 1-31 ecc.
ho fatto un ciclo for essendo che ogni volta che lo ricreo ovviamente il posizionamento si resetta mi chiedevo se ci fosse un modo per salvarlo in qualche modo e aggiungere il valore di una variabile costante.

codice che ho scritto:
numdate := strtoint(formatdatetime('d', fine));
for m := 0 to numdate
l := TQRLabel.create(nil);
l.parent := Self.childband;
l.visible := true;
//inizio è il primo giorno del mese
l.caption := l.Caption := formatdatetime('d',Incday(inizio,m));

grazie mille

3 Risposte

  • Re: Creazione QRlabel

    f.developer ha scritto:


    essendo che ogni volta che lo ricreo ovviamente il posizionamento si resetta
    Presumo che il posizionamento si "resetti" in quanto, non essendo specificata altrove, la posizione dell'etichetta è "0,0" a meno di non andare ad attribuire delle coordinate precise al controllo (come avviene nel caso in cui esso sia creato a designtime e collocato sul Form o sul Report, valorizzando le relative proprietà nel DFM e caricandole all'avvio).

    Hai provato ad assegnare un valore alle proprietà Left e Top della QRLabel dopo la creazione?

    Ciao!
  • Re: Creazione QRlabel

    Si ma essendo che è dento un ciclo for e crea nuovamente il componete si azzera di default
  • Re: Creazione QRlabel

    f.developer ha scritto:


    Si ma essendo che è dento un ciclo for e crea nuovamente il componete si azzera di default
    Il ciclo for che hai scritto, preso letteralmente, crea N etichette QRLabel e poi va a configurare le proprietà solo dell'ultima: questo perché se vuoi creare e configurare N etichette, il relativo codice deve essere DENTRO al ciclo for, e non solo la parte di creazione.

    Secondo me, manca un begin e un end, oltre a probabili altre cose.

    Per esemplificare, modificando il tuo codice:
    
    NumDate := StrToInt(FormatDateTime('d', Fine));
    for M := 0 to NumDate do
    begin
      L := TQRLabel.Create(nil);
      L.Parent := Self.childband;
      L.Visible := True; // è il default, quindi si può omettere
      L.Caption := FormatDateTime('d', IncDay(Inizio, M)); 
      L.Left := 10 * M;
      L.Top := 10;
    end;
    
    Ovviamente, è solo per illustrare il processo e non va preso come codice pronto all'uso (anche perché pure il codice che hai riportato tu formalmente/sintatticamente è errato e non compilerebbe).

    Ciao!
Devi accedere o registrarti per scrivere nel forum
3 risposte