Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657

    Delphi 6 - Creare + schede di un tab

    Devo creare + schede di un tab dinamicamente. Avevo pensato ad una procedura che creava gli oggetti, ma non so come impostarla . Devo creare altre cose del genere, quindi se qualcuno ne è capace (e ci sarà) e mi ascolta gli dico: cortesemente potresti scrivere un codice versatile? Grazie a chiunque sia in ascolto

    P.S.: mi consigliate un bel sito di cosucce in delphi?

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288

    Re: Delphi 6 - Creare + schede di un tab

    Originariamente inviato da FinalFantasy
    Devo creare + schede di un tab dinamicamente. Avevo pensato ad una procedura che creava gli oggetti, ma non so come impostarla . Devo creare altre cose del genere, quindi se qualcuno ne è capace (e ci sarà) e mi ascolta gli dico: cortesemente potresti scrivere un codice versatile? Grazie a chiunque sia in ascolto
    Si tratta di un PageControl o di un TabControl?
    Nel secondo caso, il problema è abbastanza semplice da risolvere; nel primo caso, devi creare dinamicamente a runtime un'istanza della classe TTabSheet: è la classe che rappresenta le pagine ospitabili dal PageControl.

    Per esempio, ho creato un progetto vuoto e al suo interno ho inserito un TPageControl e un TButton; quando si preme il pulsante, viene creato un nuovo TTabSheet in questo modo:
    codice:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      NewTabSheet: TTabSheet;
    begin
      NewTabSheet := TTabSheet.Create(Self);
      NewTabSheet.Caption := 'Nuova pagina';
      NewTabSheet.PageControl := APageControl;
    end;
    dove APageControl è il nome del controllo a pagine.

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

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

  3. #3
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657

    Re: Re: Delphi 6 - Creare + schede di un tab

    Originariamente inviato da alka
    Si tratta di un PageControl o di un TabControl?
    Nel secondo caso, il problema è abbastanza semplice da risolvere; nel primo caso, devi creare dinamicamente a runtime un'istanza della classe TTabSheet: è la classe che rappresenta le pagine ospitabili dal PageControl.

    Per esempio, ho creato un progetto vuoto e al suo interno ho inserito un TPageControl e un TButton; quando si preme il pulsante, viene creato un nuovo TTabSheet in questo modo:
    codice:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      NewTabSheet: TTabSheet;
    begin
      NewTabSheet := TTabSheet.Create(Self);
      NewTabSheet.Caption := 'Nuova pagina';
      NewTabSheet.PageControl := APageControl;
    end;
    dove APageControl è il nome del controllo a pagine.

    Ciao!
    Non sono stato chiaro...Vorrei creare delle schede dei tab, no i tab in se stesso...Ma non solo il tab, ma anche quello che c'è all'interno...Ad ogni scheda metterò un richtext e vorrei crearli dinamicamente...naturalmente ogni scheda e richtext dovranno avere nomi diversi...Io ancora con sti oggetti non ci ho capito molto

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288

    Re: Re: Re: Delphi 6 - Creare + schede di un tab

    Originariamente inviato da FinalFantasy
    Ma non solo il tab, ma anche quello che c'è all'interno...Ad ogni scheda metterò un richtext e vorrei crearli dinamicamente...naturalmente ogni scheda e richtext dovranno avere nomi diversi...
    Il procedimento è analogo, solo che invece di creare un TTabSheet, devi creare il controllo che ti serve (RichEdit, Memo, quello che preferisci) e assegnare le proprietà Left e Top alle coordinate che desideri; non dimenticare di assegnare alla proprietà Parent il riferimento al controllo "contenitore" (in questo caso, il TabSheet), cioè al controllo nel quale dovrà essere visualizzato.

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

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

  5. #5
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Ho creato questa procedura
    codice:
    procedure NewSheet();
      var NewTabSheet: TTabSheet;
    begin
      NewTabSheet := TTabSheet.Create(Self);
      NewTabSheet.Caption := 'Nuova pagina';
      NewTabSheet.PageControl := APageControl;
    end;
    Mi da questo errore: [Error] frmprincipale.pas(57): Undeclared identifier: 'Self'

  6. #6
    codice:
     
    procedure XXX.NewSheet();
      var NewTabSheet: TTabSheet;
    begin
      NewTabSheet := TTabSheet.Create(Self);
      NewTabSheet.Caption := 'Nuova pagina';
      NewTabSheet.PageControl := APageControl;
    end;
    In questo caso la tua procedura é orfana.
    Sostituisci al posto di XXX il nome della tua form.


  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    Originariamente inviato da FinalFantasy
    Mi da questo errore: [Error] frmprincipale.pas(57): Undeclared identifier: 'Self'
    Nell'esempio che ti ho indicato, la procedura apparteneva alla classe del form, pertanto Self rappresenta l'oggetto corrente per il quale viene chiamato il metodo che, solo casualmente, era associato alla gestione di un evento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  8. #8
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Fatto, ma mi da quest'altro errore: [Error] frmprincipale.pas(70): Undeclared identifier: 'APageControl'

    Se tolgo questa riga il prog funge ma non mette i fogli sul tab, credo a causa di questa mancanza Dov'è che sbaglio?

  9. #9
    codice:
    NewTabSheet.PageControl := APageControl;
    Da quanto ho capito dalla prima risposta di Alka, APageControl é il nome del tuo componente TPageControl .
    Quindi dovrai sostituire i nomi per fare in modo che non appaiano errori.

    In fin dei conti non esiste nessun oggetto o variabile nella tua classe che si chiami con APageControl.

    Prova a vedere...



  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    Originariamente inviato da FinalFantasy
    Fatto, ma mi da quest'altro errore: [Error] frmprincipale.pas(70): Undeclared identifier: 'APageControl'
    Non puoi pretendere di utilizzare il codice così com'è senza interpretarlo e modificarlo opportunamente.

    E' necessario capire cosa avviene nel codice e, in base al concetto appreso, modificarlo affinchè si adatti alla propria implementazione e...funzioni.

    Si tratta del principale motivo per il quale, generalmente, non fornisco stralci di codice da copiare e incollare ma semplicemente spiegazioni, cercando di essere il più prolisso possibile per il tempo libero che mi è concesso.

    Nel mio esempio, APageControl è il nome attribuito al controllo PageControl presente sul mio form; devi sostituire quell'identificatore con il nome del tuo controllo a pagine.

    Non si dovrebbe andare a "tentoni", ma cercare di capire; piuttosto che copiare e incollare, invia un messaggio e chiedi chiarimenti qui se una parte di codice non ti è chiara, altrimenti la prossima volta che ti ritroverai nella medesima situazione non sarai in grado di risolverla a causa del fatto che non hai ragionato e capito come il problema va affrontato.

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

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

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 © 2024 vBulletin Solutions, Inc. All rights reserved.