Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 37
  1. #11
    ho modificato il codice usando una lista invece che un vettore, non ricevo errori, solo che non viene generato un cavolo

    codice:
    type  tipoMemo=^TipoRecMemo;
          TiporecMemo=record
                        altezza:integer;
                        numero:integer;
                        next:tipoMemo;
                    end;
    
    var
      Form1: TForm1;
      num:TipoMemo;
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.btnNuovaClick(Sender: TObject);
    var i:integer;
        X:TipoMemo;
    begin
      i:=0;
      with TMemo.Create(self) do
      begin
        i:=i+1;
        new(X);
        if i=1 then
          begin
            X^.altezza:=2;
            X^.numero:=i;
            top:=X^.altezza;
            name:='Memo'+ IntToStr(X^.numero);
            i:=i+1;
          end
        else begin
          new(X);
          top:=90+X^.altezza;
          name:='Memo'+ IntToStr(X^.numero);
          i:=i+1;
      end;
      end;
    end;
    
    end.

  2. #12
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,482
    Forse era meglio risolvere i problemi che ti avevo indicato prima di passare alla gestione di una lista, che sicuramente è più complessa e aggiunge inutili difficoltà, almeno per il momento, all'algoritmo di generazione dei componenti che non andava comunque bene.

    Io suggerirei di partire con qualcosa di più semplice, magari consultando una delle tante guide introduttive a Delphi che si possono trovare su Internet (ad esempio, http://programmazione.html.it/delphi/index.html.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #13
    cerco di passare alla praticità perchè tanto in alcuna guida si troerà ai ciò che serve!

    tieni conto che ho un pò lavorato all'univaerstià col pascal.

    il fatto è che col pascla le cose erano lienari, qui con tutta l'interfaccia grafica da gesttire è un bel pò più incasinato!

    PS: già mi sono letto la guida compela dell'apogeo, che ti credi! :adhone:

  4. #14
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,482
    Non volevo insinuare nulla...per carità!

    Cercavo solo di dare dei validi suggerimenti...

    Non vedo cosa c'entra la parte grafica se tutti gli errori che ti ho segnalato riguardavano esclusivamente l'algoritmo nella sua logica.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #15
    avevo capito che non eri insinuante, scherzavo

    l'algoritmo è errato proprio perchè vengo proprio da una settimana dal TURBOpascal che ovviamente non ha una shell grafica.
    li esistono solo cose del tipo:

    se l'utente ha selezionato il carattere A
    allora fai così

    qui invece, le procedure vanno innestate nei comandi, ci sono dichiarazioni publiche e private, se dichiaro un TIpo nella sezione autocreata "type" del programma non va bene, ma se dichiaro una seconda sezione type tutta mia, allora la dichiarazione va bene...

    insomma cercavo a cul0 di trovare la soluzione al problema.

    crea la lista
    al click su pulsante
    SE è il primo click allora
    begin
    posiziona il TMemo in alto
    memorizza le informazioni nella lista associandole al PRIMO elemento della lista
    incmrementa il contatore
    end {end del SE}
    ALTRIMENTI (non è la prima volta che clicchi)
    posizione il nuovo TMemo ad un'altezza (top) che sia pari al valore dell'altezza precedente + 90 (che è l'height standard del Tmemo)
    salva le informazioni nel nuovo elemento della lista
    incmenrenta il contatore
    end; (end if)

    :mavieni:

  6. #16
    piccaweb
    Guest
    Scusate se mi intrometto ma vorrei sapere cosa intendi per
    "crea la lista" e "salva le informazioni nel nuovo elemento della lista " !

    Vuoi memorizzare qualche informazione particolare ?
    Se ti interessa conoscere se é già stato creato un componente TMemo puoi usare la funzione che ti offre Delphi FindComponent.

  7. #17
    macchè scuse!
    chiunque è libero di parlare in un forum!

    il fatto è questo, non so se hai già letto tutta la storia:

    se creo un compontente (TMemo da ora in poi), si viene a presentare uno spiacevole fenomeno: ad oni click il componente viene creato sul precedente.

    per ovviare a uqesto fatto pensavo di sfruttare una lista che ad ogni click ai autoaggiornasse inserendo i valori di interesse affinch il sccessivo TMemo fosse spostato e non sovrapposto...

    spero di averti spiegato



  8. #18
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,482

    Ma perchè la lista??

    Secondo me, se l'unico problema è quello che hai detto, una lista è completamente superflua. A cosa servirebbe?

    Basta dichiararsi due variabili locali, nella sezione implementation della unit, inizializzate alla creazione della form ad un determinato valore iniziale, oppure inizializzate quando viene creato il primo TMemo; queste due variabili (chiamiamole X e Y) dovrebbero mantenere i valori di Left e Top impostati per l'ultimo Memo.

    Ogni volta che creo un nuovo Memo, incremento queste due variabili, oppure solo la Y (che corrisponde a Top) del valore desiderato e assegno tali valori al nuovo controllo TMemo.

    La lista non ha alcuna utilità nella risoluzione di un problema di questo tipo.

    Senza contare che Delphi dispone già di una sua implementazione della struttura dati lista (la classe è TList), mi sembra un'eccessiva complicazione che non porta alcun vantaggio nella risoluzione del problema.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #19
    piccaweb
    Guest
    Concordo con quello che ha scritto Marco.

    Provo a scriveri qualche riga di codice:

    nella parte private della tua unit inserisci :
    codice:
      private
        LastX, LastY : Integer;
    e ancora dopo la parte implementation bisogna inserire la procedura che imposta i due valori di default quando viene creata la Form.

    codice:
    procedure TForm1.FormCreate(Sender: TObject);
    begin
         LastX := 200;
         LastY := 200;
    end;
    Successivamente aggiorni le due variabili, attraverso la funzione Inc() , in questo modo
    codice:
    Inc(LastY,90)
    .

    L'assegnamento dei nuovi valori dovra posizionarlo dopo aver creato le istanze della classe TMemo quindi nell'evento OnClick del pulsante.

    Spero di averti dato delle buone indicazioni!

  10. #20
    grazie a tutti e due,
    speriamo bene!

    :mavieni:

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.